Branch data Line data Source code
1 : : //
2 : : // Class Timer
3 : : // This class is used in IpplTimings.
4 : : //
5 : : //
6 : : //
7 : : #include "Kokkos_Core.hpp"
8 : :
9 : : #include "Timer.h"
10 : :
11 : : bool Timer::enableFences = IPPL_ENABLE_TIMER_FENCES;
12 : :
13 : 336 : Timer::Timer() {
14 : 336 : this->clear();
15 : 336 : }
16 : :
17 : 960 : void Timer::clear() {
18 : 960 : elapsed_m = 0.0;
19 : 960 : }
20 : :
21 : 288 : void Timer::start() {
22 : 288 : start_m = std::chrono::high_resolution_clock::now();
23 : 288 : }
24 : :
25 : 852 : void Timer::stop() {
26 [ + - ]: 852 : if (enableFences) {
27 [ + - + - ]: 1704 : Kokkos::fence();
28 : : }
29 : 852 : stop_m = std::chrono::high_resolution_clock::now();
30 : :
31 [ + - + - ]: 852 : duration_type elapsed = stop_m - start_m;
32 : :
33 : 852 : elapsed_m += elapsed.count();
34 : 852 : }
35 : :
36 : 228 : double Timer::elapsed() {
37 : 228 : return elapsed_m;
38 : : }
|