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