在没有使用Visual Studio的情况下编译CUDA - “路径中找不到编译器cl.exe”

10

我刚开始学习CUDA小项目。

我需要知道以下信息: 是否可以在没有使用/购买Microsoft Visual Studio的情况下编译CUDA代码? 使用Nvcc.exe时,我得到错误“无法在路径中找到编译器cl.exe”。

我尝试安装CUDA 插件以供NetBeans使用,但它不起作用。(与当前版本的NetBeans)

平台:Windows 7

提前致谢。


1
那么你想使用哪个编译器? - flipchart
是的,您可以不使用任何集成开发环境来完成它。您可以将nvcc设置为您的环境变量。 - captain
2
@Kabamaru:nvcc不是编译器,它需要一个主机编译器。据我所知,在Windows平台上,如果不使用微软编译器,无法编译和运行CUDA代码。你可以不用Visual Studio使用它,但你不能使用gcc或其他任何替代cl.exe的东西。 - talonmies
2
Kabamaru,nvcc与[Express Edition](http://en.wikipedia.org/wiki/Microsoft_Visual_Studio_Express)兼容,后者是免费使用的。(2008年的ISO是免费的;2010年需要在30天后进行免费注册) - osgx
1
@talonmies 我看到一些针对CUDA的绑定是为C和C++以外的语言制作的,但它们没有提到nvcc.execl.exe作为要求。但从你所描述的来看,似乎不可能在其他语言中使用CUDA。 - greatwolf
显示剩余2条评论
5个回答

9

更新

在评论中指出,Windows 7之后的SDK版本不包含生成工具。如果您想使用微软最新的工具,您需要安装Visual Studio。一旦安装完成,您可以从命令行使用这些工具。

目前免费的版本是“社区”版本,例如Microsoft Visual Studio Community 2015

您仍然可以使用我之前描述的老的SDK工具开发适用于Windows 7和更早版本的应用程序(它们将在较新的Windows版本上运行):

原始回答

如果你非常想避免使用Visual Studio,请下载并安装Windows SDK。 它包含与Visual Studio(或多或少)相同的构建工具。

然后运行 Windows SDK 命令提示符(可以在开始菜单下的 Microsoft Windows SDK 中找到)以将路径设置为指向这些工具,然后您就可以开始了。

或者只需使用Visual C++ Express。


1
下载大小是多少(实际大小,而不是链接页面上列出的500 KB)?包含哪个版本的cl.exe?--高达600 MB(ISO下载)和VS 2010。这里是发行说明http://download.microsoft.com/download/E/0/3/E03C84A2-C25B-429F-B018-0C8B8B0C5009/ReleaseNotes_Win7_1RTMSDK.Htm - osgx
1
@osgx:我已经安装了7.1 SDK和VC++ 2010 Express。它们都有cl.exe版本16.00.30319.01。SDK的下载很大,但我无法告诉您确切的大小。发行说明中提到的600MB是可信的。 - arx
1
Windows 8 SDK不再包括命令行构建环境。http://msdn.microsoft.com/en-us/windows/hardware/hh852363.aspx - mcmillab
1
8 和 10 现在不再包含 cl.exe。Windows 8 和 10 的用户应该在哪里获取命令行构建环境呢? - Stephen Smith

7
在遵循之前的评论后,我安装了Studio Express和VS2010。但这并没有解决“cl.exe未在路径中”的问题。
我通过在安装Windows SDK之前将c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64包含在PATH中来解决无法在路径中找到编译器cl.exe错误的问题。
问题也包含有价值的信息。 由于一些原因,在执行vsvars32.bat之后,VS2010Studio Express无法正确设置路径中的变量。
感谢大家宝贵的帮助。

1
vsvars32.bat会在路径中设置正确的变量,但仅在该命令提示符的上下文中设置变量,它不旨在全局设置变量。如果您想让一个进程使用这些变量,您必须从命令提示符启动该进程。 - arx
1
与此问题相关的另一件事。即使将其添加到用户和系统变量中,我仍然会收到相同的错误(在PATH中找不到cl.exe)。事实证明,问题出在拥有两个不同的Visual Studio版本(2012和2013)。卸载了2013年版后,现在可以在2012年版中编译和运行(因此也可能在其他IDE中编译 - 只在SharpDevelop中测试过,它可以工作!)。 - Val

6
把这些选项添加到nvcc中。
nvcc x.cu <other options>  -ccbin "D:\Program Files\Microsoft Visual Studio 11.0\VC\bin"

我使用的是VS2012,我的cl.exe目录在这里。


2

您需要找出NVIDIA GPU计算工具包的安装位置。在我的系统中,它位于“C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\bin\nvcc.exe”。

  1. 在Windows上,“编辑环境变量”。
  2. 点击“新建...”
  3. 变量名:NVCC 变量值:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\bin\nvcc.exe
  4. 点击“确定”。

2
那么关于缺失的主机编译器,你打算怎么办? - talonmies
@talonmies,实际上我已经在Windows上安装了Visual Studio,因此我拥有主机编译器。 - captain
@Jay:是的,但问题是如何在没有安装Visual Studio的情况下进行编译。你的回答和评论并没有解决这个问题。 - talonmies

1
使用Windows子系统来安装Ubuntu,同时在Windows的Ubuntu终端中安装nvcc、gcc和g++(因为Linux子系统的GUI不起作用)。然后使用bash和vim/nano来配置.bashrc,使用'cd'命令将其定位到所需位置,就像在普通的Linux终端中一样(这样做可以让bash每次都打开在system32文件夹中,更加方便)。然后你就可以使用nvcc在bash中编译.cu文件。由于nvcc支持Linux下的gcc和g++,所以可以解决这个问题。无需为了切换到Linux或处理糟糕的Visual Studio而牺牲平静。对我来说行得通。

enter image description here


1
嗨@rahul,欢迎来到Stack Overflow。请尽量使您的答案更易读,即在重要点之间留下空格和行。此外,还有一个“输入图像描述”的地方需要清理一下。继续发表答案吧,兄弟。 - Jacques Ramsden

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接