summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorCedric Nugteren <web@cedricnugteren.nl>2018-05-27 11:39:51 +0200
committerCedric Nugteren <web@cedricnugteren.nl>2018-05-27 11:39:51 +0200
commit38318fa39c1db483546f7affe658441bcc124425 (patch)
treec30e82d8660a947e8c2c149379bb16227e7a7568 /test
parentc85c385aaf0edbbd03d8624bfc4a82f65a470675 (diff)
Added maximum time reporting to the client statistics
Diffstat (limited to 'test')
-rw-r--r--test/performance/client.cpp28
-rw-r--r--test/performance/client.hpp2
2 files changed, 20 insertions, 10 deletions
diff --git a/test/performance/client.cpp b/test/performance/client.cpp
index b45bb08e..e2d1a6c7 100644
--- a/test/performance/client.cpp
+++ b/test/performance/client.cpp
@@ -355,6 +355,7 @@ typename Client<T,U>::TimeResult Client<T,U>::TimedExecution(const size_t num_ru
result.mean = mean;
result.standard_deviation = std::sqrt(sq_sum / timings.size());
result.minimum = *std::min_element(timings.begin(), timings.end());
+ result.maximum = *std::max_element(timings.begin(), timings.end());
return result;
}
@@ -367,20 +368,28 @@ void Client<T,U>::PrintTableHeader(const Arguments<U>& args) {
// First line (optional)
if (!args.silent) {
for (auto i=size_t{0}; i<options_.size(); ++i) { fprintf(stdout, "%9s ", ""); }
- fprintf(stdout, " | <-- CLBlast -->");
- if (args.compare_clblas) { fprintf(stdout, " | <-- clBLAS -->"); }
- if (args.compare_cblas) { fprintf(stdout, " | <-- CPU BLAS -->"); }
- if (args.compare_cublas) { fprintf(stdout, " | <-- cuBLAS -->"); }
+ if (args.full_statistics) {
+ fprintf(stdout, " | <-- CLBlast -->");
+ if (args.compare_clblas) { fprintf(stdout, " | <-- clBLAS -->"); }
+ if (args.compare_cblas) { fprintf(stdout, " | <-- CPU BLAS -->"); }
+ if (args.compare_cublas) { fprintf(stdout, " | <-- cuBLAS -->"); }
+ }
+ else {
+ fprintf(stdout, " | <-- CLBlast -->");
+ if (args.compare_clblas) { fprintf(stdout, " | <-- clBLAS -->"); }
+ if (args.compare_cblas) { fprintf(stdout, " | <-- CPU BLAS -->"); }
+ if (args.compare_cublas) { fprintf(stdout, " | <-- cuBLAS -->"); }
+ }
fprintf(stdout, " |\n");
}
// Second line
for (auto &option: options_) { fprintf(stdout, "%9s;", option.c_str()); }
if (args.full_statistics) {
- fprintf(stdout, "%9s;%9s;%9s", "min_ms_1", "mean_ms_1", "stddev_1");
- if (args.compare_clblas) { fprintf(stdout, ";%9s;%9s;%9s", "min_ms_2", "mean_ms_2", "stddev_2"); }
- if (args.compare_cblas) { fprintf(stdout, ";%9s;%9s;%9s", "min_ms_3", "mean_ms_3", "stddev_3"); }
- if (args.compare_cublas) { fprintf(stdout, ";%9s;%9s;%9s", "min_ms_4", "mean_ms_4", "stddev_4"); }
+ fprintf(stdout, "%9s;%9s;%9s;%9s", "min_ms_1", "max_ms_1", "mean_1", "stddev_1");
+ if (args.compare_clblas) { fprintf(stdout, ";%9s;%9s;%9s;%9s", "min_ms_2", "max_ms_2", "mean_2", "stddev_2"); }
+ if (args.compare_cblas) { fprintf(stdout, ";%9s;%9s;%9s;%9s", "min_ms_3", "max_ms_3", "mean_3", "stddev_3"); }
+ if (args.compare_cublas) { fprintf(stdout, ";%9s;%9s;%9s;%9s", "min_ms_4", "max_ms_4", "mean_4", "stddev_4"); }
}
else {
fprintf(stdout, "%9s;%9s;%9s", "ms_1", "GFLOPS_1", "GBs_1");
@@ -468,9 +477,10 @@ void Client<T,U>::PrintTableRow(const Arguments<U>& args,
// Either output full statistics
if (args.full_statistics) {
+ const auto maximum_ms = timing.second.maximum;
const auto mean_ms = timing.second.mean;
const auto standard_deviation = timing.second.standard_deviation;
- fprintf(stdout, "%9.3lf;%9.3lf;%9.3lf", minimum_ms, mean_ms, standard_deviation);
+ fprintf(stdout, "%9.3lf;%9.3lf;%9.3lf;%9.3lf", minimum_ms, maximum_ms, mean_ms, standard_deviation);
}
// ... or outputs minimum time and the GFLOPS and GB/s metrics
diff --git a/test/performance/client.hpp b/test/performance/client.hpp
index 87471f3a..0cec242f 100644
--- a/test/performance/client.hpp
+++ b/test/performance/client.hpp
@@ -42,7 +42,7 @@ template <typename T, typename U>
class Client {
public:
static const int kSeed;
- struct TimeResult { double minimum; double mean; double standard_deviation; };
+ struct TimeResult { double minimum; double maximum; double mean; double standard_deviation; };
// Shorthand for the routine-specific functions passed to the tester
using Routine = std::function<StatusCode(const Arguments<U>&, Buffers<T>&, Queue&)>;