我正在尝试使用CUDA工具包版本5.0和Visual Studio 2010 Professional编译器从命令行编译CUDA代码。针对以下内容,
nvcc -c AddVectors.cu -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin"
我收到以下错误消息
nvcc : fatal error : Visual Studio configuration file '(null)' could not be found for installation at 'C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin/../..'
在VS 2010 IDE中重建时,我也收到此错误消息,但是当我只是简单构建时,我也收到此消息。
我绝不是Visual Studio专家,但对我的错误消息感到好奇的是,nvcc似乎退出了我指定的编译器目录并从那里向上搜索VC / bin /../ .. 它为什么这样做?除了VC / bin /中的编译器可执行文件之外,为什么它还需要“Visual Studio配置文件”在所有这些中的作用?
最后但并非最不重要的是,我该如何解决这个问题?
编辑:我的环境和搜索路径是
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\mjacobson\AppData\Roaming
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
COMPUTERNAME=WAA04087-RD
ComSpec=C:\Windows\system32\cmd.exe
CUDA_BIN_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\bin
CUDA_INC_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include
CUDA_LIB_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\lib\x64
CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\
CUDA_PATH_V4_2=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.2\
CUDA_PATH_V5_0=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\
C_IA64_REDIST11=C:\Program Files (x86)\Common Files\Intel\Shared Files\cpp\
FP_NO_HOST_CHECK=NO
HOMEDRIVE=C:
HOMEPATH=\Users\mjacobson
LOCALAPPDATA=C:\Users\mjacobson\AppData\Local
LOGONSERVER=\\SVRAABKP01
NUMBER_OF_PROCESSORS=12
NVCUDASAMPLES5_0_ROOT=C:\ProgramData\NVIDIA Corporation\CUDA Samples\v5.0\
NVCUDASAMPLES_ROOT=C:\ProgramData\NVIDIA Corporation\CUDA Samples\v5.0\
NVTOOLSEXT_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\nvToolsExt\
OS=Windows_NT
Path=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\bin\;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\libnvvp\;C:\Program Files (x
86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Common Files\Intel\Shared Files\cpp\bin\ia64;C:\Program Files\AccelerEyes\Jacket\engine\bin
64;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;c:\Program Files (x86)\ATI Technologies\ATI.ACE
\Core-Static;C:\Program Files (x86)\NTRU Cryptosystems\NTRU TCG Software Stack\bin\;C:\Program Files\NTRU Cryptosystems\NTRU TCG Software Stack\bin\;C
:\Program Files\Wave Systems Corp\Gemalto\Access Client\v5\;C:\Program Files (x86)\Common Files\Roxio Shared\DLLShared\;C:\Program Files (x86)\Common
Files\Roxio Shared\10.0\DLLShared\;C:\Program Files\MATLAB\R2013b\runtime\win64;C:\Program Files\MATLAB\R2013b\bin;C:\Program Files\MATLAB\R2012b\runt
ime\win64;C:\Program Files\MATLAB\R2012b\bin;C:\Program Files\Microsoft Windows Performance Toolkit\;C:\Program Files (x86)\Common Files\Xoran Technol
ogies;C:\Program Files\MATLAB\MATLAB Compiler Runtime\v81\runtime\win64;C:\Program Files\MATLAB\R2011b\runtime\win64;C:\Program Files\MATLAB\R2011b\bi
n;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Ser
ver\100\DTS\Binn\
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 44 Stepping 2, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=2c02
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
PROMPT=$P$G
PSModulePath=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
PUBLIC=C:\Users\Public
RoxioCentral=C:\Program Files (x86)\Common Files\Roxio Shared\10.0\Roxio Central36\
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\Windows
TEMP=C:\Users\MJACOB~1\AppData\Local\Temp
TMP=C:\Users\MJACOB~1\AppData\Local\Temp
USERNAME=mjacobson
USERPROFILE=C:\Users\mjacobson
VS100COMNTOOLS=c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\
windir=C:\Windows
答案 0 :(得分:2)
CUDA nvcc只是一个转向编译驱动程序,这意味着nvcc使用MSVC编译器和CUDA编译器来执行他的操作。
在Windows环境中,您需要在开始编译之前注意几件事情,请务必仔细阅读以下所有内容:
确保您有足够的权限在路径中运行/编写编译链程序。如果您是家用个人计算机的管理员,为了调试您的问题,请确保使用管理权限运行以下所有命令和程序(如果这解决了问题,那就是它!)
环境变量用于设置除驱动程序位置之外的相应编译器和工具箱路径。假设干净且功能齐全地安装了CUDA 5.0工具包和MSVC2010 Pro ,为了使用x64版本的MSVC2010编译64位CUDA代码,正确设置所有内容的最佳方法是运行 Visual Studio x64命令提示符。您可以在开始菜单Visual Studio 2010/Tools/Visual Studio x64 Command Prompt
中找到它(我想也可以使用跨平台的x64)。请记住使用管理权限运行它( Amministratore == 管理员以我的出生语言显示在下面的屏幕中)
请注意上面的屏幕截图中的“Setting environment ..”行:确保相对于MSVC编译器的x64版本的所有相应环境变量。从您发布的日志中,应立即找到nvcc,并能够检测到您提供给它的编译器。
只是要明确其他事情:VC / bin是MSVC编译器的x86版本,VC / x64是你感兴趣的(通常也称为amd64),VC / ia64是IA64架构(一个适当的64位架构,x64系统只是x86系统“渲染”64位......它们不是64位出生的。)
从MSVC IDE编译项目时,请确保管理员权限,没有活动保护程序,并且您要么正确匹配x64项目类型与目标CUDA C / C ++体系结构
确保项目属性和单个.cu文件属性中没有不匹配项。确保(在详细输出处于活动状态时)在64位项目中编译东西时没有-m32标志(或者至少如果你知道你在做什么的话)。