从命令提示符编译CUDA时出错

从命令提示符编译CUDA时出错,cuda,nvidia,Cuda,Nvidia,我正试图通过命令提示符在Windows7上编译一个cuda测试程序, 我很高兴听到这个命令: nvcc test.cu 但我得到的只是一个错误: nvcc fatal : Cannot find compiler 'cl.exe' in PATH 什么可能导致此错误?cl.exe是Microsoft的C/C++编译器。因此,问题是您没有将其安装在命令行可以找到的位置。nvcc只是程序中CUDA特定部分的前端。它必须调用完整的编译器才能完成作业。在这种情况下,它找不到Visual Studio

我正试图通过命令提示符在Windows7上编译一个cuda测试程序, 我很高兴听到这个命令:

nvcc test.cu
但我得到的只是一个错误:

nvcc fatal : Cannot find compiler 'cl.exe' in PATH

什么可能导致此错误?

cl.exe
是Microsoft的C/C++编译器。因此,问题是您没有将其安装在命令行可以找到的位置。

nvcc只是程序中CUDA特定部分的前端。它必须调用完整的编译器才能完成作业。在这种情况下,它找不到Visual Studio编译器“cl.exe”


检查路径、nvcc文档等。

您需要将包含“cl.exe”文件的文件夹添加到path环境变量中。例如:

C:\Program Files\Microsoft Visual Studio 10.0\VC\bin

编辑:好的,转到我的电脑->属性->高级系统设置->环境变量。在这里查找列表中的“路径”,并添加上面的路径(或cl.exe的任何位置)。

我发现这是一个老问题,但最近我在Visual Studio 2012上尝试构建CUDA项目时遇到此错误。显然,我已经将我的CUDA项目更改为2012年11月的包,将其更改回v110版本,默认情况下修复了此错误

在VisualStudio中,左键单击CUDA项目->属性->配置属性->常规->平台工具集,然后选择:VisualStudio2012(v110)


我可能会让它与2012年11月的软件包一起使用,但CUDA代码没有使用该软件包的任何附加功能,因此没有必要。(该软件包包含C++11的可变模板。)

通过将此选项添加到nvcc来解决此问题

nvcc x.cu ...   -ccbin "D:\Program Files\Microsoft Visual Studio 11.0\VC\bin"

例如,我的编译器是VS2012。对于新的Visual Studio,cl.exe位于该目录中路径=>
C:\ProgramFiles(x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.23.28105\bin\Hostx64\x64

x64用于64位


x86代表32位

可以,但如何添加它?我习惯于在linux上工作,所以我现在不习惯windows的方式…不管怎样,我只是通过将机器32作为参数传递给nvcc@Jackalope:您将获得cl.exe的哪些路径?它应该是以\bin结尾的。@Jackalope尝试在bin目录中运行vcvars.bat。它设置cl.exe使用的一些环境变量。@notgiorgi:变量名为PATH。只需在现有值的末尾将路径附加到cl.exe。能否澄清“编辑此问题”的含义?将“\VC\bin”文件夹添加到path环境变量对我不起作用(Win7)。但是,您的解决方案效果很好!我试图为MATLAB编译一些代码。谢谢兄弟。学习cuda工具包,了解所有这些选项并更好地工作。我们有责任互相帮助,互相回答。也谢谢你。还有一个更新的路径:
C:\ProgramFiles(x86)\Microsoft Visual Studio 14.0\VC\bin
有一种情况,路径条目和-ccbin都不起作用,那就是为x86构建时,但nvcc.exe不支持给定版本的cl.exe(在我的例子中:CUDA 10.0.130中的nvcc.exe无法使用VS2015中的cl.exe生成32位二进制文件)如果在修复此问题后出现另一个错误“找不到corecrt.h”,请检查