查看有关CUDA问题的答案和评论,以及CUDA标记维基,我发现通常建议每个API调用的返回状态都应该检查错误.API文档包括像功能cudaGetLastError,cudaPeekAtLastError以及cudaGetErrorString,但什么是把这些结合在一起,以可靠地捕捉和无需大量额外的代码报告错误的最好方法?
例如, cudaMalloc((void**)&device_array, num_bytes);
之前已经问过这个问题,回复是"因为cudaMalloc返回错误代码",但是我没有得到它 - 什么有双指针与返回错误代码有什么关系?为什么一个简单的指针不能完成这项工作?
如果我写
cudaError_t catch_status;
catch_status = cudaMalloc((void**)&device_array, num_bytes);
Run Code Online (Sandbox Code Playgroud)
错误代码将被放入catch_status,并返回一个指向分配的GPU内存的简单指针就足够了,不应该吗?