我已添加helper_cuda.h
,我在代码中的每个CUDA调用中使用checkCudaErrors
宏。我通过以下代码强制错误:
checkCudaErrors(cudaMalloc(&GPUCameraData, sizeof(float) /*<-- Should be HCameraData */ ));
checkCudaErrors(cudaMemcpy(GPUCameraData, CPUCameraData, sizeof(HCameraData)
, cudaMemcpyHostToDevice));
应用程序只是以错误代码1退出,但不会打印任何信息。如果我在第一行中断并进入第二行,我会看到_cudaGetErrorEnum()
中的helper_cuda.h
确实返回"cudaErrorInvalidValue"
,但输出中没有打印任何信息。
我使用的开发环境是Visual Studio 2013,我在调试和发布模式下都对它进行了测试。
注意:我对OpenGL和glGetError也有同样的问题。好像来自代码的任何fprintf(stderr, ...);
调用都不会直接在我自己的文件结构中打印出来。
答案 0 :(得分:0)
原因可能是你正在创建一些其他类型的应用程序,而不是默认的C ++应用程序(在你的情况下重新编译CUDA和OpenGL),即你是将这个代码编译成一个库,用于另一个不是c ++的项目,或者某种链接问题(你有哪种类型的项目......需要信息!)。当我将cuda代码编译成Matlab-Mex文件时,我遇到了同样的问题,该文件将使用命令&#34; mexPrintf&#34;不是&#34; fprintf&#34;内部使用&#34; checkCudaErrors&#34;。您可以测试将helper_cuda.h中的打印命令从 fprintf更改为打印信息的命令,以便从程序中调用它。