内核内部的CUDA分析



是否有任何选项来配置CUDA内核?不是作为一个整体,而是它的一部分。我有一些设备函数调用,我想测量它们的时间。是否有任何标志/事件/指令,我可以设置,然后它将在NVIDIA可视化分析器中可见?或者我需要手动插入cudaEventCreate和类似的函数吗?

您可以使用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();

背靠背,这样可以减去计时开销

最新更新