当我使用不正确的参数(例如每个块超过512个线程)或者操作需要超出设备性能的资源(例如太多寄存器)时,调用内核将不会被执行。虽然没有任何异常或返回值来指示发生了什么。 我想知道是否有一种方法来验证内核是否已执行。
试试这个kernel<<<blocks, threads>>>(params); cudaError_t err = cudaGetLastError(); if (err != cudaSuccess) printf("Error: %s\n", cudaGetErrorString(err)); 这应该会提供有关出错原因的详细信息。 编辑:这里是有关如何正确检查CUDA错误的更详细的答案: 使用CUDA运行时API检查错误的规范方式是什么?