cudaEvent_t start, stop;
float time;
cudaEventCreate(&start);
cudaEventCreate(&stop);
cudaEventRecord( start, 0 );
kernel<<<grid,threads>>> ( d_odata, d_idata, size_x, size_y, NUM_REPS);
cudaEventRecord( stop, 0 );
cudaEventSynchronize( stop );
cudaEventElapsedTime( &time, start, stop );
cudaEventDestroy( start );
cudaEventDestroy( stop );
//Read more at: http://docs.nvidia.com/cuda/cuda-c-best-practices-guide/index.html#ixzz4lAXUksFd
//Follow us: @GPUComputing on Twitter | NVIDIA on Facebook
以上为CUDA中为kernel函数计时的方法,来自Best Practices Guide : http://docs.nvidia.com/cuda/cuda-c-best-practices-guide/index.html#axzz4l4hTHXLu
但是要注意在使用该方法时,若kernel函数总计耗时很小(如微妙级),则需要在计时之前添加几个kernel函数进行warm up才能测量准确。
若kernel函数总计耗时较大(如毫秒级),则影响很小,可以考虑忽略不计。