checkCudaErrors没有打印错误信息

checkCudaErrors is not printing error information

本文关键字:错误 信息 打印 checkCudaErrors      更新时间:2023-10-16

我在代码中的每个CUDA调用中都包含了helper_cuda.hcheckCudaErrors宏。我通过以下代码强制执行了一个错误:

checkCudaErrors(cudaMalloc(&GPUCameraData, sizeof(float) /*<-- Should be HCameraData */ ));
checkCudaErrors(cudaMemcpy(GPUCameraData, CPUCameraData, sizeof(HCameraData)
                                                       , cudaMemcpyHostToDevice));

应用程序只是简单地退出,并返回错误代码1,但不会打印任何信息。如果我在第一行中断并进入第二行,我会看到helper_cuda.h中的_cudaGetErrorEnum()确实返回"cudaErrorInvalidValue",但输出中没有打印任何信息。

我使用的开发环境是Visual Studio 2013,我已经在调试和发布模式下测试了它。

注意:OpenGL和glGetError也有同样的问题。似乎任何来自不直接在我自己的文件结构中的代码的fprintf(stderr, ...);调用都不会打印任何内容。

原因可能是您正在创建除默认C++应用程序之外的其他类型的应用程序(在您的情况下重新分级CUDA和OpenGL),即您是否将此代码编译到一个库中以用于另一个非C++项目,或是某种链接问题(您有哪种类型的项目…需要信息!)。当我将cuda代码编译到Matlab Mex文件时,我也遇到了同样的问题,该文件将使用命令"mexPrintf"而不是"checkCudaErrors"中使用的"fprintf"进行打印。您可以测试将helper_cuda.h中的打印命令从fprintf更改为一个确实打印信息的命令,以防您从程序中调用它。