diff options
| author | Tor Aamodt <[email protected]> | 2010-07-17 10:29:05 -0800 |
|---|---|---|
| committer | Tor Aamodt <[email protected]> | 2010-07-17 10:29:05 -0800 |
| commit | d3d0b38b90f14660ecb6243373daa921f8ae02b1 (patch) | |
| tree | 9211056ccf334f37babafcecc662400bc42d278b /src/gpgpu-sim/stat-tool.cc | |
| parent | 9b43d5685c269331ea6d15fe3ed0dade063a798a (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.cc | 14 |
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; } |
