【发布时间】:2011-09-19 04:01:18
【问题描述】:
当我使用错误设置的参数调用内核(例如,每个块超过 512 个线程)或者当它内部的操作需要的比我的设备提供的更多(例如,太多的寄存器)时,内核根本不会被执行。但是没有异常或返回值来指示发生了什么。
我想知道是否有办法验证内核是否已执行。
【问题讨论】:
标签: cuda
当我使用错误设置的参数调用内核(例如,每个块超过 512 个线程)或者当它内部的操作需要的比我的设备提供的更多(例如,太多的寄存器)时,内核根本不会被执行。但是没有异常或返回值来指示发生了什么。
我想知道是否有办法验证内核是否已执行。
【问题讨论】:
标签: cuda
试试这个
kernel<<<blocks, threads>>>(params);
cudaError_t err = cudaGetLastError();
if (err != cudaSuccess)
printf("Error: %s\n", cudaGetErrorString(err));
这应该会为您提供有关问题所在的详细错误信息。
编辑:以下是关于如何正确检查 CUDA 错误的更详细答案:
【讨论】:
你也可以从内核打印一些东西。这可能对调试有用。
【讨论】: