summaryrefslogtreecommitdiff
path: root/src/gpgpu-sim/mem_latency_stat.cc
diff options
context:
space:
mode:
authorMahmoud <[email protected]>2018-10-16 17:26:34 -0400
committerMahmoud <[email protected]>2018-10-16 17:26:34 -0400
commit7375668786abfa5b0592fca0ce97fb5a8ba512d4 (patch)
tree4abf17acab64630f3a099d82e0cd8250c54d7b5f /src/gpgpu-sim/mem_latency_stat.cc
parent802bc9f840aac536330ad93a1cbc2f04ead75106 (diff)
parentb8db00c3d8cfddb37a96b9cf2f308a67db4d319d (diff)
Merge branch 'dev-purdue-integration' into dev
Diffstat (limited to 'src/gpgpu-sim/mem_latency_stat.cc')
-rw-r--r--src/gpgpu-sim/mem_latency_stat.cc19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/gpgpu-sim/mem_latency_stat.cc b/src/gpgpu-sim/mem_latency_stat.cc
index fde0eff..c5452b9 100644
--- a/src/gpgpu-sim/mem_latency_stat.cc
+++ b/src/gpgpu-sim/mem_latency_stat.cc
@@ -75,6 +75,10 @@ memory_stats_t::memory_stats_t( unsigned n_shader, const struct shader_core_conf
max_mf_latency = 0;
max_icnt2mem_latency = 0;
max_icnt2sh_latency = 0;
+ tot_icnt2mem_latency = 0;
+ tot_icnt2sh_latency = 0;
+ tot_mrq_num = 0;
+ tot_mrq_latency = 0;
memset(mrq_lat_table, 0, sizeof(unsigned)*32);
memset(dq_lat_table, 0, sizeof(unsigned)*32);
memset(mf_lat_table, 0, sizeof(unsigned)*32);
@@ -158,6 +162,7 @@ void memory_stats_t::memlatstat_read_done(mem_fetch *mf)
mf_max_lat_table[mf->get_tlx_addr().chip][mf->get_tlx_addr().bk] = mf_latency;
unsigned icnt2sh_latency;
icnt2sh_latency = (gpu_tot_sim_cycle+gpu_sim_cycle) - mf->get_return_timestamp();
+ tot_icnt2sh_latency += icnt2sh_latency;
icnt2sh_lat_table[LOGB2(icnt2sh_latency)]++;
if (icnt2sh_latency > max_icnt2sh_latency)
max_icnt2sh_latency = icnt2sh_latency;
@@ -191,6 +196,7 @@ void memory_stats_t::memlatstat_icnt2mem_pop(mem_fetch *mf)
if (m_memory_config->gpgpu_memlatency_stat) {
unsigned icnt2mem_latency;
icnt2mem_latency = (gpu_tot_sim_cycle+gpu_sim_cycle) - mf->get_timestamp();
+ tot_icnt2mem_latency += icnt2mem_latency;
icnt2mem_lat_table[LOGB2(icnt2mem_latency)]++;
if (icnt2mem_latency > max_icnt2mem_latency)
max_icnt2mem_latency = icnt2mem_latency;
@@ -216,14 +222,19 @@ void memory_stats_t::memlatstat_print( unsigned n_mem, unsigned gpu_mem_n_bk )
unsigned max_bank_accesses, min_bank_accesses, max_chip_accesses, min_chip_accesses;
if (m_memory_config->gpgpu_memlatency_stat) {
+ printf("maxmflatency = %d \n", max_mf_latency);
+ printf("max_icnt2mem_latency = %d \n", max_icnt2mem_latency);
printf("maxmrqlatency = %d \n", max_mrq_latency);
- printf("maxdqlatency = %d \n", max_dq_latency);
- printf("maxmflatency = %d \n", max_mf_latency);
+ //printf("maxdqlatency = %d \n", max_dq_latency);
+ printf("max_icnt2sh_latency = %d \n", max_icnt2sh_latency);
if (num_mfs) {
printf("averagemflatency = %lld \n", mf_total_lat/num_mfs);
+ printf("avg_icnt2mem_latency = %lld \n", tot_icnt2mem_latency/num_mfs);
+ if(tot_mrq_num)
+ printf("avg_mrq_latency = %lld \n", tot_mrq_latency/tot_mrq_num);
+
+ printf("avg_icnt2sh_latency = %lld \n", tot_icnt2sh_latency/num_mfs);
}
- printf("max_icnt2mem_latency = %d \n", max_icnt2mem_latency);
- printf("max_icnt2sh_latency = %d \n", max_icnt2sh_latency);
printf("mrq_lat_table:");
for (i=0; i< 32; i++) {
printf("%d \t", mrq_lat_table[i]);