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

验证内核是否在CUDA中执行的方法,cuda,Cuda,当我调用一个参数设置不正确的内核时(例如,每个块超过512个线程),或者当内核中的操作需要的比我的设备提供的更多时(例如,太多的寄存器),内核就不会执行。但没有异常或返回值来指示发生了什么 我想知道是否有办法验证是否执行了内核。试试这个 kernel<<<blocks, threads>>>(params); cudaError_t err = cudaGetLastError(); if (err != cudaSuccess) printf("E

当我调用一个参数设置不正确的内核时(例如,每个块超过512个线程),或者当内核中的操作需要的比我的设备提供的更多时(例如,太多的寄存器),内核就不会执行。但没有异常或返回值来指示发生了什么

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

试试这个

kernel<<<blocks, threads>>>(params);
cudaError_t err = cudaGetLastError();
if (err != cudaSuccess) 
    printf("Error: %s\n", cudaGetErrorString(err));
内核(params);
cudaError_t err=cudaGetLastError();
if(err!=cudaSuccess)
printf(“错误:%s\n”,cudaGetErrorString(err));
这会给你一个错误的细节

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


    • 您还可以从内核打印一些内容。这可能对调试有用。

      谢谢这是我的问题!