1

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

4

1 回答 1

3

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

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();

背靠背,因此您可以减去时间开销。

于 2013-05-30T11:35:41.223 回答