私は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より大きい計算能力を持つカードGTX560tiを使用していますが、cudaカーネルからの印刷について少し調べたところ、コンパイラをsm_10からsm_2.0に変更して、最大限に活用する必要があることもわかりました。カード。また、cuPrintfが目的を果たすために提案されたものもあります。私は何をすべきか、そしてコンソール画面にプリントアウトを表示するための最も簡単で迅速な方法は何であるかについて少し混乱しています。nvccコンパイラを1.0から2.0に変更する必要がある場合は、どうすればよいですか?もう1つ、私はWindows7.0とVisualStudio2010でのプログラミングを使用しています。ご協力いただきありがとうございます。