From 5f3741e4044e814a58ad1aa0989eae431c73645c Mon Sep 17 00:00:00 2001 From: Tom Lin Date: Sat, 7 Oct 2023 10:23:31 +0100 Subject: [PATCH] Add init/read timing for C++ models --- src/main.cpp | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/src/main.cpp b/src/main.cpp index d946d77..1305949 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -306,7 +306,9 @@ void run() #endif + auto init1 = std::chrono::high_resolution_clock::now(); stream->init_arrays(startA, startB, startC); + auto init2 = std::chrono::high_resolution_clock::now(); // Result of the Dot kernel, if used. T sum = 0.0; @@ -333,7 +335,54 @@ void run() std::vector c(ARRAY_SIZE); + auto read1 = std::chrono::high_resolution_clock::now(); stream->read_arrays(a, b, c); + auto read2 = std::chrono::high_resolution_clock::now(); + + auto initElapsedS = std::chrono::duration_cast>(read2 - read1).count(); + auto readElapsedS = std::chrono::duration_cast>(init2 - init1).count(); + auto initBWps = ((mibibytes ? std::pow(2.0, -20.0) : 1.0E-6) * (3 * sizeof(T) * ARRAY_SIZE)) / initElapsedS; + auto readBWps = ((mibibytes ? std::pow(2.0, -20.0) : 1.0E-6) * (3 * sizeof(T) * ARRAY_SIZE)) / readElapsedS; + + if (output_as_csv) + { + std::cout + << "phase" << csv_separator + << "n_elements" << csv_separator + << "sizeof" << csv_separator + << ((mibibytes) ? "max_mibytes_per_sec" : "max_mbytes_per_sec") << csv_separator + << "runtime" << std::endl; + std::cout + << "Init" << csv_separator + << ARRAY_SIZE << csv_separator + << sizeof(T) << csv_separator + << initBWps << csv_separator + << initElapsedS << std::endl; + std::cout + << "Read" << csv_separator + << ARRAY_SIZE << csv_separator + << sizeof(T) << csv_separator + << readBWps << csv_separator + << readElapsedS << std::endl; + } + else + { + std::cout << "Init: " + << std::setw(7) + << initElapsedS + << " s (=" + << initBWps + << (mibibytes ? " MiBytes/sec" : " MBytes/sec") + << ")" << std::endl; + std::cout << "Read: " + << std::setw(7) + << readElapsedS + << " s (=" + << readBWps + << (mibibytes ? " MiBytes/sec" : " MBytes/sec") + << ")" << std::endl; + } + check_solution(num_times, a, b, c, sum); // Display timing results