Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 59 additions & 0 deletions test/RngTest/inc/Timer.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
#ifndef VECCORE_TIMER_H
#define VECCORE_TIMER_H

#include <chrono>

using namespace std::chrono;

template <class unit = nanoseconds>
class Timer {
using clock = high_resolution_clock;

public:
Timer() : fStart(), fStop() { Start(); }

void Reset() { Start(); }

void Start() { fStart = clock::now(); }

double Elapsed()
{
fStop = clock::now();
return duration_cast<unit>(fStop - fStart).count();
}

private:
high_resolution_clock::time_point fStart, fStop;
};

#if !defined(VECCORE_CUDA_DEVICE_COMPILATION)

class cycles {
};

template <>
class Timer<cycles> {
public:
Timer() { Start(); }

void Reset() { Start(); }

void Start() { fStart = GetCycleCount(); }

double Elapsed() { return static_cast<double>(GetCycleCount() - fStart); }

private:
unsigned long long int fStart;

inline __attribute__((always_inline)) unsigned long long int GetCycleCount()
{
unsigned int hi, lo;
asm volatile("cpuid\n\t"
"rdtsc"
: "=a"(lo), "=d"(hi));
return ((unsigned long long)lo) | (((unsigned long long)hi) << 32);
}
};
#endif

#endif
2 changes: 1 addition & 1 deletion test/RngTest/src/PdfBenchmarker.cc
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#include "PdfBenchmarker.h"
#include "PdfBenchmarker_cpu.h"

#include "VecCore/Timer.h"
#include "Timer.h"

namespace vecrng {

Expand Down
2 changes: 1 addition & 1 deletion test/RngTest/src/PdfBenchmarker_cpu.cc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#include "VecCore/Timer.h"
#include "Timer.h"

#include "VecMath/Rng/MRG32k3a.h"

Expand Down
2 changes: 1 addition & 1 deletion test/RngTest/src/RngBenchmarker.cc
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#include "RngBenchmarker.h"
#include "RngBenchmarker_cpu.h"

#include "VecCore/Timer.h"
#include "Timer.h"

namespace vecrng {

Expand Down
2 changes: 1 addition & 1 deletion test/RngTest/src/RngBenchmarker_cpu.cc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#include "VecCore/Timer.h"
#include "Timer.h"

#include "VecMath/Rng/MRG32k3a.h"
#include "VecMath/Rng/Philox.h"
Expand Down