Spaces:
Runtime error
Runtime error
class cuda_timer | |
{ | |
cudaEvent_t start_; | |
cudaEvent_t stop_; | |
public: | |
cuda_timer() | |
{ | |
CUDA_SAFE_CALL(cudaEventCreate(&start_)); | |
CUDA_SAFE_CALL(cudaEventCreate(&stop_)); | |
} | |
~cuda_timer() | |
{ | |
CUDA_SAFE_CALL(cudaEventDestroy(start_)); | |
CUDA_SAFE_CALL(cudaEventDestroy(stop_)); | |
} | |
void start() | |
{ | |
CUDA_SAFE_CALL(cudaEventRecord(start_, 0)); | |
} | |
void stop() | |
{ | |
CUDA_SAFE_CALL(cudaEventRecord(stop_, 0)); | |
CUDA_SAFE_CALL(cudaEventSynchronize(stop_)); | |
} | |
double milliseconds_elapsed() | |
{ | |
float elapsed_time; | |
CUDA_SAFE_CALL(cudaEventElapsedTime(&elapsed_time, start_, stop_)); | |
return elapsed_time; | |
} | |
double seconds_elapsed() | |
{ | |
return milliseconds_elapsed() / 1000.0; | |
} | |
}; | |
class steady_timer | |
{ | |
LARGE_INTEGER frequency_; // Cached to avoid system calls. | |
LARGE_INTEGER start_; | |
LARGE_INTEGER stop_; | |
public: | |
steady_timer() : start_(), stop_(), frequency_() | |
{ | |
BOOL const r = QueryPerformanceFrequency(&frequency_); | |
assert(0 != r); | |
} | |
void start() | |
{ | |
BOOL const r = QueryPerformanceCounter(&start_); | |
assert(0 != r); | |
} | |
void stop() | |
{ | |
BOOL const r = QueryPerformanceCounter(&stop_); | |
assert(0 != r); | |
} | |
double seconds_elapsed() | |
{ | |
return double(stop_.QuadPart - start_.QuadPart) | |
/ double(frequency_.QuadPart); | |
} | |
}; | |
class steady_timer | |
{ | |
timespec start_; | |
timespec stop_; | |
public: | |
steady_timer() : start_(), stop_() {} | |
void start() | |
{ | |
int const r = clock_gettime(CLOCK_MONOTONIC, &start_); | |
assert(0 == r); | |
} | |
void stop() | |
{ | |
int const r = clock_gettime(CLOCK_MONOTONIC, &stop_); | |
assert(0 == r); | |
} | |
double seconds_elapsed() | |
{ | |
return double(stop_.tv_sec - start_.tv_sec) | |
+ double(stop_.tv_nsec - start_.tv_nsec) * 1.0e-9; | |
} | |
}; | |