【发布时间】:2015-02-12 10:40:35
【问题描述】:
我一直在 Visual Studio 2012 中使用 CUDA v6.5 进行开发,但遇到了一个问题:编译 .cu 文件时,编译器会针对单行源代码输出多个警告。通常这不会是什么大不了的事,但它已经开始花费很长时间来构建,我怀疑这可能就是原因。例如:
int unused = 0;
四次产生以下错误:
1>.../GeometryManager.cu(188): warning : variable "unused" was declared but never referenced
这些是传递给 nvcc 的命令行参数:
-gencode=arch=compute_35,code=\"sm_35,compute_35\" --use-local-env --cl-version 2012
-ccbin "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin"
-I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\include"
-I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\include"
-I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\include"
-G --keep-dir Debug -maxrregcount=0 --machine 32 --compile
-cudart static -arch sm_20 -g -DNDEBUG -DWIN32 -D_DEBUG -D_CONSOLE
-D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /Zi /RTC1 /MTd "
-o Debug\GeometryManager.cu.obj "C:\...\GeometryManager.cu"
编译 .cpp 文件时,警告似乎正常发出。到目前为止,我尝试将属性中 Code Generation 的值更改为 compute_35,sm_35,(之前列出了其中的几个)但没有帮助。
如果有 CUDA 或 nvcc 经验的人能对这种情况有所了解,我将不胜感激。有关如何使用 CUDA 减少构建时间的任何其他建议也会有所帮助。谢谢。
【问题讨论】:
-
也许从代码中删除未使用的变量可能有助于消除警告?
-
嗯,当然。这不是我担心的警告;我担心编译器会做额外的工作,这会使我的构建时间飞涨。
标签: c++ visual-studio-2012 cuda nvcc