benchmark-quda #3
@ -22,15 +22,20 @@ json json_results;
|
|||||||
|
|
||||||
using namespace quda;
|
using namespace quda;
|
||||||
|
|
||||||
// timestamp = seconds since program start.
|
// thanks chatGPT :)
|
||||||
// these are written to the json output with the goal of later matching them against
|
std::string get_timestamp()
|
||||||
// power-measurments to determine energy efficiency.
|
|
||||||
using Clock = std::chrono::steady_clock;
|
|
||||||
Clock::time_point program_start_time = Clock::now();
|
|
||||||
double get_timestamp()
|
|
||||||
{
|
{
|
||||||
auto dur = Clock::now() - program_start_time;
|
// Get the current time
|
||||||
return std::chrono::duration_cast<std::chrono::microseconds>(dur).count() * 1.0e-6;
|
auto now = std::chrono::system_clock::now();
|
||||||
|
|
||||||
|
// Convert the current time to a time_t object
|
||||||
|
std::time_t currentTime = std::chrono::system_clock::to_time_t(now);
|
||||||
|
|
||||||
|
// Format the time using std::put_time
|
||||||
|
std::stringstream ss;
|
||||||
|
ss << std::put_time(std::localtime(¤tTime), "%Y%m%d %H:%M:%S");
|
||||||
|
|
||||||
|
return ss.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
// This is the MPI grid, i.e. the layout of ranks
|
// This is the MPI grid, i.e. the layout of ranks
|
||||||
@ -235,9 +240,9 @@ void benchmark_wilson(std::vector<int> const &L_list, double target_time)
|
|||||||
double flops = 1.0 * dirac.Flops();
|
double flops = 1.0 * dirac.Flops();
|
||||||
|
|
||||||
// actual benchmarking
|
// actual benchmarking
|
||||||
double start_time = get_timestamp();
|
auto start_time = get_timestamp();
|
||||||
double secs = bench(f, target_time);
|
double secs = bench(f, target_time);
|
||||||
double end_time = get_timestamp();
|
auto end_time = get_timestamp();
|
||||||
|
|
||||||
#ifdef FLOP_COUNTING_GRID
|
#ifdef FLOP_COUNTING_GRID
|
||||||
// this is the flop counting from Benchmark_Grid
|
// this is the flop counting from Benchmark_Grid
|
||||||
@ -297,9 +302,9 @@ void benchmark_dwf(std::vector<int> const &L_list, double target_time)
|
|||||||
double flops = 1.0 * dirac.Flops();
|
double flops = 1.0 * dirac.Flops();
|
||||||
|
|
||||||
// actual benchmarking
|
// actual benchmarking
|
||||||
double start_time = get_timestamp();
|
auto start_time = get_timestamp();
|
||||||
double secs = bench(f, target_time);
|
double secs = bench(f, target_time);
|
||||||
double end_time = get_timestamp();
|
auto end_time = get_timestamp();
|
||||||
|
|
||||||
#ifdef FLOP_COUNTING_GRID
|
#ifdef FLOP_COUNTING_GRID
|
||||||
// this is the flop counting from Benchmark_Grid
|
// this is the flop counting from Benchmark_Grid
|
||||||
@ -385,9 +390,9 @@ void benchmark_axpy(std::vector<int> const &L_list, double target_time)
|
|||||||
f();
|
f();
|
||||||
|
|
||||||
// actual benchmarking
|
// actual benchmarking
|
||||||
double start_time = get_timestamp();
|
auto start_time = get_timestamp();
|
||||||
double secs = bench(f, target_time);
|
double secs = bench(f, target_time);
|
||||||
double end_time = get_timestamp();
|
auto end_time = get_timestamp();
|
||||||
|
|
||||||
double mem_MiB = memory / 1024. / 1024.;
|
double mem_MiB = memory / 1024. / 1024.;
|
||||||
double GBps = mem_MiB / 1024 / secs;
|
double GBps = mem_MiB / 1024 / secs;
|
||||||
|
Loading…
Reference in New Issue
Block a user