事件计时

CUDA时间计时可为主机代码、设备代码计时

1
2
3
4
5
6
7
8
9
10
11
12
13
14
cudaEvent_t start, stop;
ErrorCheck(cudaEventCreate(&start), __FILE__, __LINE__);
ErrorCheck(cudaEventCreate(&stop), __FILE__, __LINE__);
ErrorCheck(cudaEventRecord(start), __FILE__, __LINE__);
cudaEventQuery(start); //这里不能用错误检测函数
addFromGPU<<<grid, block>>>(fpDevice_A, fpDevice_B, fpDevice_C,iElemCount);//这里放要计时的代码片段
ErrorCheck(cudaEventRecord(stop), __FILE__, __LINE__);
ErrorCheck(cudaEventSynchronize(stop), __FILE__, __LINE__);
float elapsed_time;//这里存放计时结果
ErrorCheck(cudaEventElapsedTime(&elapsed_time, start, stop), __FILE__, __LINE__);

ErrorCheck(cudaEventDestroy(start), __FILE__, __LINE__);
ErrorCheck(cudaEventDestroy(stop), __FILE__, __LINE__);

nvprof性能剖析

  1. nvprof是一个可执行文件
  2. 执行命令nvprof ./exe_
  3. 计算能力高于8.0不可用,用NVIDIA NSight System代替