我正在编写一个 cuda 程序并尝试使用 printf 函数在 cuda 内核中打印一些东西。但是当我编译程序时,我得到了一个错误
error : calling a host function("printf") from a __device__/__global__ function("agent_movement_top") is not allowed
error MSB3721: The command ""C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.2\bin\nvcc.exe" -gencode=arch=compute_10,code=\"sm_10,compute_10\" --use-local-env --cl-version 2008 -ccbin "c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin" -I"C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.2\C\common\inc" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.2\include" -G --keep-dir "Debug" -maxrregcount=0 --machine 32 --compile -g -Xcompiler "/EHsc /nologo /Od /Zi /MDd " -o "Debug\test.cu.obj" "C:\Users\umdutta\Desktop\SANKHA_ALL_MATERIALS\PROGRAMMING_FOLDER\ABM_MODELLING_2D_3D\TRY_NUM_2\test_proj_test\test_proj\test_proj\test.cu"" exited with code 2.
我正在使用计算能力大于 2.0 的卡 GTX 560 ti,当我搜索了一些关于从 cuda 内核打印的信息时,我还发现我需要将编译器从 sm_10 更改为 sm_2.0 以充分利用卡片。也有人建议 cuPrintf 达到目的。我有点困惑我应该做什么以及在我的控制台屏幕上获取打印输出的最简单和最快的方法应该是什么。如果我需要将 nvcc 编译器从 1.0 更改为 2.0,我该怎么办?还有一件事我想提一下,我正在使用 Windows 7.0 并在 Visual Studio 2010 中编程。感谢您的所有帮助。