您好,在我的内核函数中,我使用了 3 个设备函数,我想计算每个设备函数所花费的时间。有没有办法在内核中为设备函数计时?请告诉我谢谢
问问题
967 次
1 回答
3
引用 CUDA C 编程指南:
clock_t clock();
long long int clock64();
在设备代码中执行时,返回每个时钟周期递增的每个多处理器计数器的值。在内核开始和结束时对该计数器进行采样,获取两个样本的差异,并记录每个线程的结果,为每个线程提供设备完全执行线程所花费的时钟周期数的度量,但不是设备实际执行线程指令所花费的时钟周期数。前一个数字大于后者,因为线程是时间切片的。
这个时间对 Matlabtic
和toc
. CUDA SDK 中有一个时钟示例。基本上,它是这样工作的
__global__ void max(..., int* time)
{
int i = threadIdx.x + blockIdx.x * blockDim.x;
clock_t start = clock();
//device function call
clock_t stop = clock();
...
time[i] = (int)(stop - start);
}
于 2013-10-22T21:02:23.890 回答