验证内核的方法是在CUDA中执行的

时间:2011-06-21 02:23:41

标签: cuda

当我使用错误的参数调用内核时(例如,每个块超过512个线程)或者当它内部的操作需要的数量超过我的设备所提供的数量时(例如,寄存器太多),内核就不会被执行。没有例外或返回值来表明发生了什么。

我想知道是否有办法验证内核是否已执行。

2 个答案:

答案 0 :(得分:21)

试试这个

kernel<<<blocks, threads>>>(params);
cudaError_t err = cudaGetLastError();
if (err != cudaSuccess) 
    printf("Error: %s\n", cudaGetErrorString(err));

这应该会给你一个关于出错的详细错误。

编辑:以下是有关如何正确检查CUDA错误的更详细解答:

答案 1 :(得分:1)

你也可以从内核打印一些内容。这可能对调试很有用。