我再次继承了看起来可疑的代码;基本上是这样的:
(void) nppiFilter...(...);
cudaError_t err = cudaGetLastError();
if (err != cudaSuccess)
{
std::cerr << cudaGetErrorString(err);
}
我们忽略 NPP 错误,而是检查 CUDA 错误。
首先,NPP 是否将 CUDA 错误标志设置为错误?我很确定答案是“不明确”,所以这段代码会遗漏 NPP-only 错误,但我想检查一下。
其次,是否有必要检查这两个错误或者这是否足够:
NppStatus nppErr = nppiFilter...(...);
if (nppErr != NPP_NO_ERROR)
{
std::cerr << "NPP error " << nppErr;
}
或者我应该检查两者以防万一?有一个NPP_CUDA_KERNEL_EXECUTION_ERROR
向我暗示,检查cudaGetLastError()
可能会有用,但它是吗?