0

您好,在我的内核函数中,我使用了 3 个设备函数,我想计算每个设备函数所花费的时间。有没有办法在内核中为设备函数计时?请告诉我谢谢

4

1 回答 1

3

引用 CUDA C 编程指南:

clock_t clock();
long long int clock64();

在设备代码中执行时,返回每个时钟周期递增的每个多处理器计数器的值。在内核开始和结束时对该计数器进行采样,获取两个样本的差异,并记录每个线程的结果,为每个线程提供设备完全执行线程所花费的时钟周期数的度量,但不是设备实际执行线程指令所花费的时钟周期数。前一个数字大于后者,因为线程是时间切片的。

这个时间对 Matlabtictoc. 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 回答