您的位置:首页 > 其它

CUDA内核运行时间的测量函数

2015-05-19 22:41 507 查看
方法一:

cudaEvent_t start1;
cudaEventCreate(&start1);
cudaEvent_t stop1;
cudaEventCreate(&stop1);
cudaEventRecord(start1, NULL);
// 需要测时间的内核函数kernel;
cudaEventRecord(stop1, NULL);
cudaEventSynchronize(stop1);
float msecTotal1 = 0.0f;
cudaEventElapsedTime(&msecTotal1, start1, stop1);


方法二:

StopWatchInterface * timer_cublas;
sdkCreateTimer(&timer_cublas);
sdkStartTimer(&timer_cublas);
// 需要测时间的内核函数kernel;
cudaSyncThreads()
sdkStopTimer(&timer_cublas);
double dSeconds = sdkGetTimerValue(&timer_cublas)/((double)nIter);


关于方法二中的cudaSyncThreads()说明,如果在sdkStopTimer之前不加该函数,会导致测量时间仅仅是核函数在CPU上启动的耗时,而没有考虑在GPU中的耗时,使得结果和方法一小很多。所以要等CUDA启动的GPU线程同步之后,才能停止计时,这样得到的耗时才是正确的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cuda