通过查看 CUDA 问题的答案和评论,以及在 CUDA 标记维基中,我看到经常有人建议检查每个 API 调用的返回状态是否有错误。 API 文档包含了诸如 cuda / etlasterror、 cuda / ekatlasterror 和 cudaigerstring 这样的功能,但是如何才能在不需要大量额外代码的情况下将这些功能组合在一起以可靠地捕获和报告错误呢?
3条回答 默认 最新
- weixin_38166374 2019-07-25 11:13关注
我用下面的方法很管用。 该解决方案使用内置的 cuda 功能,实现起来非常简单。
有关代码如下:#include <stdio.h>#include <stdlib.h> __global__ void foo(int *ptr){ *ptr = 7;} int main(void){ foo<<<1,1>>>(0); // make the host block until the device is finished with foo cudaDeviceSynchronize(); // check for error cudaError_t error = cudaGetLastError(); if(error != cudaSuccess) { // print the CUDA error message and exit printf("CUDA error: %s\n", cudaGetErrorString(error)); exit(-1); } return 0;}
解决 无用评论 打赏 举报