summaryrefslogtreecommitdiff
path: root/src/gpgpu-sim/shader.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/gpgpu-sim/shader.h')
-rw-r--r--src/gpgpu-sim/shader.h22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/gpgpu-sim/shader.h b/src/gpgpu-sim/shader.h
index e07096e..6a40aee 100644
--- a/src/gpgpu-sim/shader.h
+++ b/src/gpgpu-sim/shader.h
@@ -53,6 +53,8 @@
#include "stats.h"
#include "gpu-cache.h"
#include "traffic_breakdown.h"
+#include "histogram.h"
+
@@ -1478,7 +1480,15 @@ struct shader_core_stats_pod {
int gpgpu_n_mem_read_global;
int gpgpu_n_mem_write_global;
int gpgpu_n_mem_read_inst;
-
+
+ //warps combined memory divergence histogram
+ linear_histogram* gpgpu_mem_divergence_hist;
+ linear_histogram* gpgpu_gmem_ld_divergence_hist;
+ linear_histogram* gpgpu_gmem_st_divergence_hist;
+ linear_histogram* gpgpu_shmem_divergence_hist;
+
+ linear_histogram* warp_inst_classification;
+
int gpgpu_n_mem_l2_writeback;
int gpgpu_n_mem_l1_write_allocate;
int gpgpu_n_mem_l2_write_allocate;
@@ -1547,6 +1557,12 @@ public:
m_incoming_traffic_stats = new traffic_breakdown("memtocore");
gpgpu_n_shmem_bank_access = (unsigned *)calloc(config->num_shader(), sizeof(unsigned));
+ gpgpu_mem_divergence_hist = new linear_histogram(1, "", config->warp_size+1);
+ gpgpu_gmem_ld_divergence_hist = new linear_histogram(1, "", config->warp_size+1);
+ gpgpu_gmem_st_divergence_hist = new linear_histogram(1, "", config->warp_size+1);
+ gpgpu_shmem_divergence_hist = new linear_histogram(1, "", config->warp_size+1);
+
+ warp_inst_classification = new linear_histogram(1, "", 12);
m_shader_dynamic_warp_issue_distro.resize( config->num_shader() );
m_shader_warp_slot_issue_distro.resize( config->num_shader() );
@@ -1561,6 +1577,10 @@ public:
free(m_n_diverge);
free(shader_cycle_distro);
free(last_shader_cycle_distro);
+ free(gpgpu_mem_divergence_hist);
+ free(gpgpu_gmem_ld_divergence_hist);
+ free(gpgpu_gmem_st_divergence_hist);
+ free(warp_inst_classification);
}
void new_grid()