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; | |
| } | |
| }; | |