查看有关CUDA问题的答案和评论,以及CUDA标记维基,我发现通常建议每个API调用的返回状态都应该检查错误.API文档包括像功能cudaGetLastError,cudaPeekAtLastError以及cudaGetErrorString,但什么是把这些结合在一起,以可靠地捕捉和无需大量额外的代码报告错误的最好方法?
在CUDA程序中,我最近从使用的测试转换为无限性
return x==INFINITY || x==-INFINITY;
Run Code Online (Sandbox Code Playgroud)
其中INFINITY是从math.h中,至
return !isfinite(x);
Run Code Online (Sandbox Code Playgroud)
得到不同的结果,我感到非常惊讶.gnu.org建议他们实际应该表现得相似.我错过了什么吗?是不允许INFINITY在CUDA内核中使用?
编辑:
我刚发现isinf并注意到使用检查
return isinf(x);
Run Code Online (Sandbox Code Playgroud)
给出与INFINITY检查相同的结果.为什么不
isfinite(x)==!isinf(x)呢?