1 // SPDX-License-Identifier: Apache-2.0 2 #ifndef __GPU_TIMER_H__ 3 #define __GPU_TIMER_H__ 4 5 struct GpuTimer 6 { 7 cudaEvent_t start; 8 cudaEvent_t stop; 9 GpuTimerGpuTimer10 GpuTimer() 11 { 12 cudaEventCreate(&start); 13 cudaEventCreate(&stop); 14 } 15 ~GpuTimerGpuTimer16 ~GpuTimer() 17 { 18 cudaEventDestroy(start); 19 cudaEventDestroy(stop); 20 } 21 StartGpuTimer22 void Start() 23 { 24 cudaEventRecord(start, 0); 25 } 26 StopGpuTimer27 void Stop() 28 { 29 cudaEventRecord(stop, 0); 30 } 31 ElapsedGpuTimer32 float Elapsed() 33 { 34 float elapsed; 35 cudaEventSynchronize(stop); 36 cudaEventElapsedTime(&elapsed, start, stop); 37 return elapsed; 38 } 39 }; 40 41 #endif /* __GPU_TIMER_H__ */ 42