什么是“Visual Studio配置文件”,为什么nvcc正在寻找它,为什么它找不到它,如何修复?

时间:2014-01-22 19:29:57

标签: visual-studio-2010 cuda nvcc

我正在尝试使用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

1 个答案:

答案 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 == 管理员以我的出生语言显示在下面的屏幕中)

enter image description here

请注意上面的屏幕截图中的“Setting environment ..”行:确保相对于MSVC编译器的x64版本的所有相应环境变量。从您发布的日志中,应立即找到nvcc,并能够检测到您提供给它的编译器。

  • 对可执行文件不满意的程序可能需要处理其工作文件位于管理员文件夹内的其他可执行文件:简单来说,反病毒防御程序(例如Comodo)和主动保护过滤器可能会阻止nvcc及其使用的工具完成工作后,如果在调试问题时遇到警告/问题,请务必禁用它们。

只是要明确其他事情:VC / bin是MSVC编译器的x86版本,VC / x64是你感兴趣的(通常也称为amd64),VC / ia64是IA64架构(一个适当的64位架构,x64系统只是x86系统“渲染”64位......它们不是64位出生的。)

从MSVC IDE编译项目时,请确保管理员权限,没有活动保护程序,并且您要么正确匹配x64项目类型与目标CUDA C / C ++体系结构

enter image description here

确保项目属性和单个.cu文件属性中没有不匹配项。确保(在详细输出处于活动状态时)在64位项目中编译东西时没有-m32标志(或者至少如果你知道你在做什么的话)。