编译CUDA程序

时间:2014-02-06 17:26:48

标签: cuda parallel-processing

我正在使用CUDA并行化RayTracing程序。我有顺序代码,我已经编写了并行代码(内核)。

运行程序时,遇到以下错误(从VS2010复制)

Error   1   error MSB3721: The command ""C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.2\bin\nvcc.exe" -gencode=arch=compute_21,code=\"sm_21,compute_21\" -gencode=arch=compute_10,code=\"sm_10,compute_10\" --use-local-env --cl-version 2010 -ccbin "C:\Program Files\Microsoft Visual Studio 10.0\VC\bin"  -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.2\include"    --keep-dir "Release" -maxrregcount=0  --machine 32 --compile      -Xcompiler "/EHsc /nologo /Od /Zi  /MD  " -o "Release\CUDAraytracer.cu.obj" "c:\Users\mc.choice\Desktop\CUDAraytracer.cu"" exited with code -1.  C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations\CUDA 4.2.targets    361

我认为我已正确包含所有lib和标题。

关于如何编译的想法&成功运行,错误的原因是什么?

提前Tnx

1 个答案:

答案 0 :(得分:0)

在这种特殊情况下,问题中最初描述的错误源于传递给nvcc的这组特定命令行开关:

-gencode=arch=compute_21,code=\"sm_21,compute_21\"

compute_21not a valid virtual architecture

为什么Visual Studio正在生成特定的无效开关并不清楚。但是,可以通过在sm_20显示的任何位置将项目设置更改为sm_21来解决该特定问题。这不应该对代码生成产生重大影响,并且对代码的支持功能没有影响。

正如评论中所讨论的,OP似乎在Visual Studio配置中也存在其他问题。

编辑:我运行了您最近评论中提供的程序。它似乎对我“正确”运行。我在linux下运行它,而不是windows,因为那是我用来做这种类型测试的机器。我没有对您的程序进行任何更改,除了更改一些包含文件以匹配Linux路径名等。我观察到的主要问题是,一般来说,每帧渲染大约需要17秒。如果您的GPU慢得多,您可能需要等待几分钟才能看到第一帧。这是示例输出:

enter image description here

所以我想说主要问题是提高渲染速度。我还没有花很多时间查看你的程序,但任何使用<<<1,1>>>配置调用的内核都没有真正有效地使用GPU。

我使用的GPU是Quadro1000M GPU,可能比你的9500GS快得多。