summaryrefslogtreecommitdiff
path: root/src/gpgpu-sim/stat-tool.cc
diff options
context:
space:
mode:
authorTor Aamodt <[email protected]>2010-07-17 10:29:05 -0800
committerTor Aamodt <[email protected]>2010-07-17 10:29:05 -0800
commitd3d0b38b90f14660ecb6243373daa921f8ae02b1 (patch)
tree9211056ccf334f37babafcecc662400bc42d278b /src/gpgpu-sim/stat-tool.cc
parent9b43d5685c269331ea6d15fe3ed0dade063a798a (diff)
integrating Wilson's bugfixes from release branch
[git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 6869]
Diffstat (limited to 'src/gpgpu-sim/stat-tool.cc')
-rw-r--r--src/gpgpu-sim/stat-tool.cc14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/gpgpu-sim/stat-tool.cc b/src/gpgpu-sim/stat-tool.cc
index 9845e06..98a6917 100644
--- a/src/gpgpu-sim/stat-tool.cc
+++ b/src/gpgpu-sim/stat-tool.cc
@@ -91,7 +91,7 @@
#include "../abstract_hardware_model.h"
binned_histogram::binned_histogram (std::string name, int nbins, int* bins)
- : m_name(name), m_nbins(nbins), m_bins(NULL), m_bin_cnts(new int[m_nbins]), m_maximum(0)
+ : m_name(name), m_nbins(nbins), m_bins(NULL), m_bin_cnts(new int[m_nbins]), m_maximum(0), m_sum(0)
{
if (bins) {
m_bins = new int[m_nbins];
@@ -105,7 +105,7 @@ binned_histogram::binned_histogram (std::string name, int nbins, int* bins)
binned_histogram::binned_histogram (const binned_histogram& other)
: m_name(other.m_name), m_nbins(other.m_nbins), m_bins(NULL),
- m_bin_cnts(new int[m_nbins]), m_maximum(0)
+ m_bin_cnts(new int[m_nbins]), m_maximum(0), m_sum(0)
{
for (int i = 0; i < m_nbins; i++) {
m_bin_cnts[i] = other.m_bin_cnts[i];
@@ -125,10 +125,17 @@ void binned_histogram::add2bin (int sample) {
void binned_histogram::fprint (FILE *fout) {
if (m_name.c_str() != NULL) fprintf(fout, "%s = ", m_name.c_str());
+ int total_sample = 0;
for (int i = 0; i < m_nbins; i++) {
fprintf(fout, "%d ", m_bin_cnts[i]);
+ total_sample += m_bin_cnts[i];
}
fprintf(fout, "max=%d ", m_maximum);
+ float avg = 0.0f;
+ if (total_sample > 0) {
+ avg = (float)m_sum / total_sample;
+ }
+ fprintf(fout, "avg=%0.2f ", avg);
}
binned_histogram::~binned_histogram () {
@@ -156,6 +163,7 @@ void pow2_histogram::add2bin (int sample) {
m_bin_cnts[bin] += 1;
m_maximum = (sample > m_maximum)? sample : m_maximum;
+ m_sum += sample;
}
linear_histogram::linear_histogram (int stride, const char *name, int nbins, int* bins)
@@ -167,10 +175,12 @@ void linear_histogram::add2bin (int sample) {
assert(sample >= 0);
int bin = sample / m_stride;
+ if (bin >= m_nbins) bin = m_nbins - 1;
m_bin_cnts[bin] += 1;
m_maximum = (sample > m_maximum)? sample : m_maximum;
+ m_sum += sample;
}