如何在内核函数中调用设备函数时测量它们的时间

时间:2013-10-22 19:51:41

标签: cuda

Hello在我的内核函数中我使用了3个设备函数,我想计算每个设备函数所花费的时间。有没有办法让设备在内核中运行时间?请让我知道谢谢

1 个答案:

答案 0 :(得分:3)

引用CUDA C编程指南:

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

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

此时间适用于Matlab的tictoc。 CUDA SDK中有一个 clock 示例。基本上,它就像这样

__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);
}