nvcc 在调试模式下编译失败:需要单个文件
Posted
技术标签:
【中文标题】nvcc 在调试模式下编译失败:需要单个文件【英文标题】:nvcc failed to compile in debug mode : Single file required 【发布时间】:2013-04-11 04:23:16 【问题描述】:我在尝试使用 nvcc for cuda 编译我的程序时遇到问题。我使用 Visual Studio 2012 和 cuda 5.0。
当我以发布模式启动构建时,一切正常。
在调试模式下,我在编译第一个 .cu 文件时收到以下错误消息:
nvcc:致命错误:指定输出文件时,非链接阶段需要单个输入文件
对于发布模式,我的命令行是:
C:\Users\Ernest\Documents\Matlab\icem\icem_cpp\cudaicem>"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\bin\nvcc.exe" -gencode=arch=compute_13 ,code=\"sm_13,compute_13\" --use-local-env --cl-version 2010 -ccbin "c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64" -I"C :\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include" --keep-dir "x64\Release" -maxrregcount=0 --ptxas-options=-v --machine 64 --compile -D_WINDLL -D_MBCS -Xcompiler "/EHsc /W3 /nologo /O2 /Zi /MD " -o "x64\Release\Icem.cu. obj" "C:\Users\Ernest\Documents\Matlab\icem\icem_cpp\cudaicem\Icem.cu"
对于调试模式:
C:\Users\Ernest\Documents\Matlab\icem\icem_cpp\cudaicem>"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\bin\nvcc.exe" -gencode=arch=compute_13 ,code=\"sm_13,compute_13\" --use-local-env --cl-version 2010 -ccbin "c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64" -I"C :\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include" -G --keep-dir "x64\调试" -maxrregcount=0 --machine 64 --compile -g -D_CUDACC_ 1 -D_WINDLL -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /Zi /RTC1 /MDd " - o "x64\Debug\Icem.cu.obj" "C:\Users\Ernest\Documents\Matlab\icem\icem_cpp\cudaicem\Icem.cu"
你觉得第二个有什么问题吗?我没有看到多个输入文件!知道我可以测试什么吗?
【问题讨论】:
-D_CUDACC_ 1
不是因为这个吗?尝试不使用1
。顺便说一句,你为什么需要这个?通常由nvcc
处理。
你搞定了,它在我的预处理器选项中,我不知道为什么要添加它,谢谢!
是的,使用gcc
阅读 Boost 错误是一种很好的训练,可以在混淆文本池中发现随机错误。很高兴我能帮忙:o)
【参考方案1】:
答案在预处理器选项中。 -D_CUDACC_ 1
是问题所在。
【讨论】:
以上是关于nvcc 在调试模式下编译失败:需要单个文件的主要内容,如果未能解决你的问题,请参考以下文章
vscodevscode在windows与ubuntu下编译调试C/C++