Skip to content

Commit

Permalink
box and playground: stats conversion
Browse files Browse the repository at this point in the history
  • Loading branch information
romnn committed Jul 13, 2023
1 parent f639123 commit 2515ff6
Show file tree
Hide file tree
Showing 11 changed files with 641 additions and 169 deletions.
53 changes: 53 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ optional = true

[dev-dependencies]
pretty_assertions = "1"
pretty_assertions_sorted = "1"
cxx = "1"

# sanity check stats against playground
Expand Down
86 changes: 51 additions & 35 deletions playground/src/bridge/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@ pub struct CacheStats {
pub accesses: HashMap<(AccessType, AccessStat), u64>,
}

#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum AccessStat {
ReservationFailure(ReservationFailure),
Status(RequestStatus),
}

#[derive(Debug, Clone, Default)]
pub struct Stats {
// memory accesses
/// Memory accesses
#[derive(Debug, Clone, Default, PartialEq, Eq)]
pub struct Accesses {
pub num_mem_write: usize,
pub num_mem_read: usize,
pub num_mem_const: usize,
Expand All @@ -29,18 +29,31 @@ pub struct Stats {
pub num_mem_write_global: usize,
pub num_mem_read_local: usize,
pub num_mem_write_local: usize,
// instructions
pub num_mem_l2_writeback: usize,
pub num_mem_l1_write_allocate: usize,
pub num_mem_l2_write_allocate: usize,
}

/// Instruction counts
#[derive(Debug, Clone, Default, PartialEq, Eq)]
pub struct Instructions {
pub num_load_instructions: usize,
pub num_store_instructions: usize,
pub num_shared_mem_instructions: usize,
pub num_sstarr_instructions: usize,
pub num_texture_instructions: usize,
pub num_const_instructions: usize,
pub num_param_instructions: usize,
// other stuff
pub num_mem_l2_writeback: usize,
pub num_mem_l1_write_allocate: usize,
pub num_mem_l2_write_allocate: usize,
}

#[derive(Debug, Clone, Default, PartialEq, Eq)]
pub struct Other {}

#[derive(Debug, Clone, Default)]
pub struct Stats {
pub accesses: Accesses,
pub instructions: Instructions,
pub other: Other,

// per cache stats
pub l1i_stats: HashMap<usize, CacheStats>,
Expand Down Expand Up @@ -84,56 +97,60 @@ impl Stats {

// memory accesses
pub fn set_num_mem_write(&mut self, v: usize) {
self.num_mem_write = v;
self.accesses.num_mem_write = v;
}
pub fn set_num_mem_read(&mut self, v: usize) {
self.num_mem_read = v;
self.accesses.num_mem_read = v;
}
pub fn set_num_mem_const(&mut self, v: usize) {
self.num_mem_const = v;
self.accesses.num_mem_const = v;
}
pub fn set_num_mem_texture(&mut self, v: usize) {
self.num_mem_texture = v;
self.accesses.num_mem_texture = v;
}
pub fn set_num_mem_read_global(&mut self, v: usize) {
self.num_mem_read_global = v;
self.accesses.num_mem_read_global = v;
}
pub fn set_num_mem_write_global(&mut self, v: usize) {
self.num_mem_write_global = v;
self.accesses.num_mem_write_global = v;
}
pub fn set_num_mem_read_local(&mut self, v: usize) {
self.num_mem_read_local = v;
self.accesses.num_mem_read_local = v;
}
pub fn set_num_mem_write_local(&mut self, v: usize) {
self.num_mem_write_local = v;
self.accesses.num_mem_write_local = v;
}
pub fn set_num_mem_l2_writeback(&mut self, v: usize) {
self.accesses.num_mem_l2_writeback = v;
}
pub fn set_num_mem_l1_write_allocate(&mut self, v: usize) {
self.accesses.num_mem_l1_write_allocate = v;
}
pub fn set_num_mem_l2_write_allocate(&mut self, v: usize) {
self.accesses.num_mem_l2_write_allocate = v;
}

// instructions
// instruction counts
pub fn set_num_load_instructions(&mut self, v: usize) {
self.num_load_instructions = v;
self.instructions.num_load_instructions = v;
}
pub fn set_num_store_instructions(&mut self, v: usize) {
self.num_store_instructions = v;
self.instructions.num_store_instructions = v;
}
pub fn set_num_shared_mem_instructions(&mut self, v: usize) {
self.num_shared_mem_instructions = v;
self.instructions.num_shared_mem_instructions = v;
}
pub fn set_num_sstarr_instructions(&mut self, v: usize) {
self.num_sstarr_instructions = v;
self.instructions.num_sstarr_instructions = v;
}
pub fn set_num_texture_instructions(&mut self, v: usize) {
self.num_texture_instructions = v;
self.instructions.num_texture_instructions = v;
}
pub fn set_num_const_instructions(&mut self, v: usize) {
self.num_const_instructions = v;
self.instructions.num_const_instructions = v;
}
pub fn set_num_param_instructions(&mut self, v: usize) {
self.num_param_instructions = v;
}

// other stuff
pub fn set_num_mem_l2_writeback(&mut self, v: usize) {
self.num_mem_l2_writeback = v;
self.instructions.num_param_instructions = v;
}
}

Expand Down Expand Up @@ -173,19 +190,18 @@ mod default {
fn set_num_mem_write_global(self: &mut Stats, v: usize);
fn set_num_mem_read_local(self: &mut Stats, v: usize);
fn set_num_mem_write_local(self: &mut Stats, v: usize);
fn set_num_mem_l2_writeback(self: &mut Stats, v: usize);
fn set_num_mem_l1_write_allocate(self: &mut Stats, v: usize);
fn set_num_mem_l2_write_allocate(self: &mut Stats, v: usize);

// instructions
// instruction counts
fn set_num_load_instructions(self: &mut Stats, v: usize);
fn set_num_store_instructions(self: &mut Stats, v: usize);
fn set_num_shared_mem_instructions(self: &mut Stats, v: usize);
fn set_num_sstarr_instructions(self: &mut Stats, v: usize);
fn set_num_texture_instructions(self: &mut Stats, v: usize);
fn set_num_const_instructions(self: &mut Stats, v: usize);
fn set_num_param_instructions(self: &mut Stats, v: usize);

// fn set_num_mem_l2_writeback(self: &mut Stats, v: usize);
// fn set_num_mem_l1_write_allocate(self: &mut Stats, v: usize);
// fn set_num_mem_l2_write_allocate(self: &mut Stats, v: usize);
}

unsafe extern "C++" {
Expand Down
20 changes: 11 additions & 9 deletions playground/src/ref/bridge/stats.cc
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,6 @@ void transfer_cache_stats(CacheKind cache, unsigned cache_id,
}
}

// class trace_gpgpu_sim_bridge : public trace_gpgpu_sim {
// public:
// using trace_gpgpu_sim::trace_gpgpu_sim;
//
void trace_gpgpu_sim_bridge::transfer_stats(Stats &stats) {
transfer_general_stats(stats);

Expand Down Expand Up @@ -61,12 +57,19 @@ void trace_gpgpu_sim_bridge::transfer_general_stats(Stats &stats) {

// see: m_shader_stats->print(stdout);
// stats.set_num_stall_shared_mem(m_shader_stats->gpgpu_n_stall_shd_mem);
stats.set_num_mem_read_local(m_shader_stats->gpgpu_n_mem_read_local);
stats.set_num_mem_write_local(m_shader_stats->gpgpu_n_mem_write_local);
stats.set_num_mem_write(m_shader_stats->made_write_mfs);
stats.set_num_mem_read(m_shader_stats->made_read_mfs);
stats.set_num_mem_const(m_shader_stats->gpgpu_n_mem_const);
stats.set_num_mem_texture(m_shader_stats->gpgpu_n_mem_texture);
stats.set_num_mem_read_global(m_shader_stats->gpgpu_n_mem_read_global);
stats.set_num_mem_write_global(m_shader_stats->gpgpu_n_mem_write_global);
stats.set_num_mem_texture(m_shader_stats->gpgpu_n_mem_texture);
stats.set_num_mem_const(m_shader_stats->gpgpu_n_mem_const);
stats.set_num_mem_read_local(m_shader_stats->gpgpu_n_mem_read_local);
stats.set_num_mem_write_local(m_shader_stats->gpgpu_n_mem_write_local);
stats.set_num_mem_l2_writeback(m_shader_stats->gpgpu_n_mem_l2_writeback);
stats.set_num_mem_l1_write_allocate(
m_shader_stats->gpgpu_n_mem_l1_write_allocate);
stats.set_num_mem_l2_write_allocate(
m_shader_stats->gpgpu_n_mem_l2_write_allocate);

stats.set_num_load_instructions(m_shader_stats->gpgpu_n_load_insn);
stats.set_num_store_instructions(m_shader_stats->gpgpu_n_store_insn);
Expand Down Expand Up @@ -144,4 +147,3 @@ void trace_gpgpu_sim_bridge::transfer_l2d_stats(Stats &stats) {
};
}
}
// };
8 changes: 6 additions & 2 deletions src/ported/cache.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ use crate::config;
use std::collections::VecDeque;
use std::sync::{Arc, Mutex};

#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
#[derive(
Debug, strum::EnumIter, Clone, Copy, Hash, PartialEq, Eq, serde::Serialize, serde::Deserialize,
)]
pub enum RequestStatus {
HIT = 0,
HIT_RESERVED,
Expand All @@ -14,7 +16,9 @@ pub enum RequestStatus {
// NUM_CACHE_REQUEST_STATUS,
}

#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
#[derive(
Debug, strum::EnumIter, Clone, Copy, Hash, PartialEq, Eq, serde::Serialize, serde::Deserialize,
)]
pub enum ReservationFailure {
/// all line are reserved
LINE_ALLOC_FAIL = 0,
Expand Down
2 changes: 1 addition & 1 deletion src/ported/instruction.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ use bitvec::{array::BitArray, field::BitField, BitArr};
use std::collections::{HashMap, VecDeque};
use trace_model as trace;

#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum MemorySpace {
// undefined_space = 0,
// reg_space,
Expand Down
Loading

0 comments on commit 2515ff6

Please sign in to comment.