内核中的CUDA分析

时间:2013-05-30 11:17:23

标签: cuda nvvp

有没有选项来分析CUDA内核?不是整体,而是其中的一部分。我有一些设备函数调用,我想测量他们的时间。是否有我可以设置的标志/事件/说明,然后它将在NVIDIA Visual Profiler中可见?或者我需要通过插入cudaEventCreate和类似功能手动完成。

1 个答案:

答案 0 :(得分:3)

您可以使用clock()clock64()函数手动计算内核的特定部分:

unsigned long long* time_spent;

__global__ void kernel(...)
{
    unsigned int t1, t2;
    // ...
    t1 = clock();
    // code of interest
    t2 = clock();
    atomicAdd(&time_spent, t2 - t1);
}

'clock()`正式返回一个clock_t,但我更喜欢显式使用unsigned int来明确上述代码如何正确处理时钟值的回绕(只要定时代码不超过2 ^ 32) -1个周期完成。

确保还使用

计时代码
    t1 = clock();
    t2 = clock();

背靠背,这样你就可以减去时间开销。