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

Ren*_*nan 14 cuda

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

我想知道是否有办法验证内核是否被执行.

Pav*_*ili 24

试试这个

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

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

编辑:这里有一个关于如何正确检查CUDA错误的更详细的答案: