summaryrefslogtreecommitdiff
path: root/src/gpgpu-sim/visualizer.cc
diff options
context:
space:
mode:
authorTor Aamodt <[email protected]>2010-07-16 21:34:35 -0800
committerTor Aamodt <[email protected]>2010-07-16 21:34:35 -0800
commit6ab0303a15ae4230cdea1495c0ca1a1a74e8df84 (patch)
tree87b9e29788bac005b054c127bfed3b1d6dd26347 /src/gpgpu-sim/visualizer.cc
parent6941e2dc7c6fb5e9d365e4e96ae4bc8cece2bdac (diff)
- integrate Wilson's bug fixes from release
[git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 6852]
Diffstat (limited to 'src/gpgpu-sim/visualizer.cc')
-rw-r--r--src/gpgpu-sim/visualizer.cc30
1 files changed, 14 insertions, 16 deletions
diff --git a/src/gpgpu-sim/visualizer.cc b/src/gpgpu-sim/visualizer.cc
index 3772fc2..d0f406c 100644
--- a/src/gpgpu-sim/visualizer.cc
+++ b/src/gpgpu-sim/visualizer.cc
@@ -129,14 +129,12 @@ void visualizer_options(option_parser_t opp)
void visualizer_printstat()
{
- static unsigned int *last_shader_cycle_distro = NULL;
gzFile visualizer_file = NULL; // gzFile is basically a pointer to a struct, so it is fine to initialize it as NULL
unsigned i;
if ( !g_visualizer_enabled )
return;
- if (!last_shader_cycle_distro)
- last_shader_cycle_distro = (unsigned int*) calloc(warp_size + 3, sizeof(unsigned int));
+ // initialize file name if it is not set
if ( g_visualizer_filename == NULL ) {
time_t curr_time;
time(&curr_time);
@@ -149,22 +147,19 @@ void visualizer_printstat()
}
char buf[1024];
snprintf(buf,1024,"gpgpusim_visualizer__%s.log.gz",date);
- visualizer_file = gzopen(buf, "w");
- if (visualizer_file == NULL) {
- printf("error - could not open visualizer trace file.\n");
- exit(1);
- }
- gzsetparams(visualizer_file, g_visualizer_zlevel, Z_DEFAULT_STRATEGY);
g_visualizer_filename = strdup(buf);
- } else {
- visualizer_file = gzopen(g_visualizer_filename,"a");
- if (visualizer_file == NULL) {
- printf("error - could not open visualizer trace file.\n");
- exit(1);
- }
- gzsetparams(visualizer_file, g_visualizer_zlevel, Z_DEFAULT_STRATEGY);
}
+ // clean the content of the visualizer log if it is the first time, otherwise attach at the end
+ static bool visualizer_first_printstat = true;
+ visualizer_file = gzopen(g_visualizer_filename, (visualizer_first_printstat)? "w" : "a");
+ if (visualizer_file == NULL) {
+ printf("error - could not open visualizer trace file.\n");
+ exit(1);
+ }
+ gzsetparams(visualizer_file, g_visualizer_zlevel, Z_DEFAULT_STRATEGY);
+ visualizer_first_printstat = false;
+
// instruction count per shader core
gzprintf(visualizer_file, "shaderinsncount: ");
for (i=0;i<gpu_n_shader;i++) {
@@ -299,6 +294,9 @@ void visualizer_printstat()
gzprintf(visualizer_file, "gpu_stall_by_MSHRwb: %d\n", gpu_stall_by_MSHRwb);
// warp divergence breakdown
+ static unsigned int *last_shader_cycle_distro = NULL;
+ if (!last_shader_cycle_distro)
+ last_shader_cycle_distro = (unsigned int*) calloc(warp_size + 3, sizeof(unsigned int));
time_vector_print_interval2gzfile(visualizer_file);
gzprintf(visualizer_file, "WarpDivergenceBreakdown:");
unsigned int total=0;