nvcc致命:编译器' cl.exe'在PATH中与-ccbin

时间:2015-11-10 04:36:38

标签: windows visual-studio-2013 cuda

我在Windows 7-SP1上安装了CUDA 7.5,并且我已经安装了Visual Studio 2013。 不幸的是,我无法运行任何CUDA代码。我甚至无法构建样本bandwidthTest。我收到以下错误:

  

C:\ ProgramData \ NVIDIA Corporation \ CUDA   Samples \ v7.5 \ 1_Utilities \ bandwidthTest>" C:\ Program Files \ NVIDIA GPU   计算工具包\ CUDA \ v7.5 \ bin \ nvcc.exe"   -gencode =拱= compute_20,代码= \" sm_20,compute_20 \" -gencode =拱= compute_30,代码= \" sm_30,compute_30 \" -gencode =拱= compute_35,代码= \" sm_35,compute_35 \" -gencode =拱= compute_37,代码= \" sm_37,compute_37 \" -gencode =拱= compute_50,代码= \" sm_50,compute_50 \" -gencode =拱= compute_52,代码= \" sm_52,compute_52 \" --use-local-env --cl-version 2013 -ccbin" C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ VC \ bin \ x86_amd64" -I./ -I ../../ common / inc -I./   -I" C:\ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v7.5 / include" -I ../../ common / inc -I" C:\ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v7.5 \ include" --keep-dir x64 \ Release -maxrregcount = 0   --machine 64 --compile -cudart static -Xcompiler" / wd 4819" -DWIN32 -DWIN32 -D_MBCS -D_MBCS -Xcompiler" / EHsc / W3 / nologo / O2 / Zi / MT" -o x64 / Release / bandwidthTest.cu.obj" C:\ ProgramData \ NVIDIA   公司\ CUDA   样品\ V7.5 \ 1_Utilities \ bandwidthTest \ bandwidthTest.cu" 1 GT;的 NVCC   致命的:编译器' cl.exe'在PATH中不同于指定的那个   with -ccbin 1> C:\ Program Files   (86)\的MSBuild \ Microsoft.Cpp \ V4.0 \ V120 \ BuildCustomizations \ CUDA   7.5.targets(604,9):错误MSB3721:命令"" C:\ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v7.5 \ bin \ nvcc.exe"   -gencode =拱= compute_20,代码= \" sm_20,compute_20 \" -gencode =拱= compute_30,代码= \" sm_30,compute_30 \" -gencode =拱= compute_35,代码= \" sm_35,compute_35 \" -gencode =拱= compute_37,代码= \" sm_37,compute_37 \" -gencode =拱= compute_50,代码= \" sm_50,compute_50 \" -gencode =拱= compute_52,代码= \" sm_52,compute_52 \" --use-local-env --cl-version 2013 -ccbin " C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ VC \ bin \ x86_amd64" -I ./ -I ../../ common / inc -I./   -I" C:\ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v7.5 / include" -I ../../ common / inc -I" C:\ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v7.5 \ include" --keep-dir x64 \ Release -maxrregcount = 0   --machine 64 --compile -cudart static -Xcompiler" / wd 4819" -DWIN32 -DWIN32 -D_MBCS -D_MBCS -Xcompiler" / EHsc / W3 / nologo / O2 / Zi / MT" -o x64 / Release / bandwidthTest.cu.obj" C:\ ProgramData \ NVIDIA   公司\ CUDA   样品\ V7.5 \ 1_Utilities \ bandwidthTest \ bandwidthTest.cu""退出了   代码1。   ==========构建:0成功,1个失败,0个最新,0个跳过==========

我的环境变量是:

路径:

  

C:\ Program Files(x86)\ Microsoft Visual Studio   12.0 \ VC \ bin \ x86_amd64 ; C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ VC \ bin ; C:\ Program Files \ Microsoft Visual Studio 12.0 \ Common7 \ IDE; C:\ TDM-GCC-64 \ BIN; C:\ TDM-GCC-64 \ x86_64的-W64-mingw32的; C:\ ProgramData \ ORACLE \的Java \ javapath; C:\ PROGRAM   Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v7.5 \ bin; C:\ Program   Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v7.5 \ libnvvp; c:\ Program Files   (x86)\ Intel \ iCLS Client \; c:\ Program Files \ Intel \ iCLS   客户端\; C:\ WINDOWS \ SYSTEM32; C:\ WINDOWS; C:\ WINDOWS \ SYSTEM32 \ WBEM; C:\ WINDOWS \ SYSTEM32 \ WindowsPowerShell \ V1.0 \; C:\ PROGRAM   文件(x86)\ Hewlett-Packard \ HP Performance Advisor; C:\ Program   Files \ Intel \ Intel(R)管理引擎组件\ DAL; C:\ Program   Files \ Intel \ Intel(R)Management Engine Components \ IPT; C:\ Program Files   (x86)\ Intel \ Intel(R)管理引擎组件\ DAL; C:\ Program Files   (x86)\ Intel \ Intel(R)管理引擎组件\ IPT; C:\ Program Files   (x86)\ Microsoft SQL Server \ 100 \ Tools \ Binn \; C:\ Program Files \ Microsoft   SQL Server \ 100 \ Tools \ Binn \; C:\ Program Files \ Microsoft SQL   Server \ 100 \ DTS \ Binn \; C:\ Program Files \ TortoiseSVN \ bin; C:\ Program Files   (x86)\ Windows Kits \ 8.1 \ Windows Performance Toolkit \; C:\ Program   Files \ Microsoft SQL Server \ 110 \ Tools \ Binn \; C:\ Program Files   (x86)\ Microsoft SDKs \ TypeScript \ 1.0 \; C:\ Program Files(x86)\ Microsoft   SQL Server \ 110 \ Tools \ Binn \; C:\ Program Files \ Microsoft SQL   Server \ 110 \ DTS \ Binn \; C:\ Program Files(x86)\ Microsoft SQL   Server \ 110 \ Tools \ Binn \ ManagementStudio \; C:\ Program Files   (x86)\ Microsoft SQL Server \ 110 \ DTS \ Binn \; C:\ Program   Files \ R \ R-3.1.3 \ bin \ i386 \; C:\ Program Files(x86)\ NVIDIA   公司\的PhysX \共同

CUDA_PATH:

  

C:\ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v7.5

CUDA_PATH_V7_5:

  

C:\ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v7.5

我也改变了

  

包括+ =" -I $(TOP)/ include" $( SPACE

  

包括+ =" -I $(TOP)/ include" " -I $(TOP)/包括/ cudart" " -IC:/程序   文件(x86)/ Microsoft Visual Studio 12.0 / VC / include" $( SPACE

nvcc.profile 中的

但到目前为止还没有运气! :( 请你帮助我好吗?! 感谢

3 个答案:

答案 0 :(得分:2)

<强>问题

有Visual Studio编译器的版本:对于x86,对于x86_64和ARM平台(我听说第四个即将推出)。

问题很可能来自于您正在编译的平台与PATH中的编译器平台不同。

<强>解决方案

您的全局bin变量中绝不应包含Visual Studio的PATH文件夹。

PATH中删除与Visual Studio相关的所有内容。 Visual Studio IDE和CUDA工具非常智能,可以在没有您帮助的情况下找到编译器(通过注册表项)。

如果要同时从命令行(不使用IDE)运行开发人员工具,请使用:

  • “开始”菜单中的Visual Studio命令提示符(使用vcvarsall.bat脚本)
  • 或直接使用vcvarsall.bat(临时设置环境以针对作为参数提供的平台构建)
  • 或推出自己的脚本

答案 1 :(得分:1)

我遇到同样的问题,这个问题的关键原因是 cl.exe 的名称是重复的。我安装了BullseyeCoverage(一种可以分析代码覆盖率的软件)。它具有相同的命名 cl.exe 程序。然后我卸载它,问题就消失了!

答案 2 :(得分:0)

如果上述答案对你不起作用,那么我就是用Visual Studio 2013和CUDA 6.5进行x64编译的。

我编辑了

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations\CUDA 6.5.props

那样

<VCBinDir Condition="'$(Platform)' == 'Win32'">$(VC_ExecutablePath_x86_x86)</VCBinDir>
<VCBinDir Condition="'$(Platform)' == 'x64'">$(VC_ExecutablePath_x64)</VCBinDir>