【问题标题】:Compile CUDA without Visual Studio - "Cannot find compiler cl.exe in path"在没有 Visual Studio 的情况下编译 CUDA -“在路径中找不到编译器 cl.exe”
【发布时间】:2012-02-17 15:24:54
【问题描述】:

我刚刚在 CUDA 中开始了一个小项目。

我需要知道以下内容: 是否可以在不使用/购买 Microsoft Visual Studio 的情况下编译 CUDA 代码? 使用 Nvcc.exe 我收到错误“Cannot find compiler cl.exe in path”。

我尝试为 NetBeans 安装 CUDA plugin,但它不起作用。 (使用当前版本的 NetBeans)

平台:Windows 7

提前致谢。

【问题讨论】:

  • 那你想用什么编译器?
  • 是的,你可以在没有任何 IDE 的情况下做到这一点。您可以将 nvcc 设置为您的环境变量。
  • @Kabamaru:nvcc 不是编译器,它需要主机编译器。 AFAIK 如果不使用 microsoft 编译器,就无法在 Windows 平台上编译和运行 CUDA 代码。你可以在没有 Visual Studio 的情况下使用它,但你不能使用 gcc 或其他任何东西来代替 cl.exe。
  • Kabamaru,nvcc 兼容Express Edition,免费使用。 (ISO 的 2008 年免费;2010 年需要 30 天后免费注册)
  • @talonmies 我已经看到了一些为 C 和 C++ 之外的语言制作的 cuda 绑定,但他们没有提到 nvcc.exe 或 cl.exe 作为要求。但从你的描述来看,用不同的语言使用 cuda 听起来是不可能的。

标签: windows parallel-processing cuda


【解决方案1】:

更新

如 cmets 中所述,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。

【讨论】:

  • 什么是下载大小(实际大小,不是链接页面上列出的 500 KB)?包含哪个版本的 cl.exe? -- 高达 600 MB(ISO 下载)和 VS 2010。这里是发行说明download.microsoft.com/download/E/0/3/…
  • @osgx:我已经安装了 7.1 SDK 和 VC++ 2010 Express。他们都有 cl.exe 版本 16.00.30319.01。 SDK 的下载量很大,但我无法告诉您确切的大小。发行说明中提到的 600MB 是合理的。
  • Windows 8 SDK 不再包含命令行构建环境。 msdn.microsoft.com/en-us/windows/hardware/hh852363.aspx
  • 8 和 10 不再包含 cl.exe。 windows 8 和 10 用户应该从哪里获取命令行构建环境?
【解决方案2】:

您必须弄清楚 NVIDIA GPU Computing Toolkit 的安装位置。 在我的系统中它位于“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. 点击确定。

【讨论】:

  • 那么您如何处理缺少的主机编译器?
  • @talonmies 实际上我已经在 Windows 上安装了 Visual Studio,所以我有主机编译器。
  • @Jay:是的,但问题是如何在不安装 Visual Studio 的情况下进行编译。您的回答和评论没有解决这个问题。
【解决方案3】:

在之前的 cmets 之后,我安装了 Studio Express 和 VS2010。 这并没有解决“cl.exe not in path”的问题。

我解决了错误 Cannot find compiler cl.exe in path 的问题,包括 c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64 在路径中, 在安装 Windows SDK 之前。

此question 还包含有价值的信息。
由于某种原因,即使在执行vsvars32.bat 之后,VS2010 & Studio Express 也未能在路径中设置正确的变量。

感谢大家的宝贵帮助。

【讨论】:

  • vsvars32.bat 确实在路径中设置了正确的变量,但仅在该命令提示符的上下文中;它不打算在系统范围内设置变量。如果您希望进程使用变量,则必须从命令提示符启动该进程。
  • 与此问题相关的另一件事。即使在 user 和 sys 变量中添加了相同的错误(在 PATH 中找不到 cl.exe),我也遇到了同样的错误。事实证明,问题在于拥有两个不同的 Visual Studio 版本(2012 和 2013)。卸载 2013 后,它现在可以在 2012 年编译和运行(因此也可以在其他 IDE 中编译 - 刚刚在 SharpDevelop 中测试过,它可以工作!)。
【解决方案4】:

将此选项添加到 nvcc

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

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

【讨论】:

    【解决方案5】:

    使用 linux 的 windows 子系统并使用 windows 中的 ubuntu 终端安装 ubuntu 和 nvcc 以及 gcc 和 g++(gui 不适用于 windows 的 linux 子系统)。然后使用 bash 和 vim/nano 将 .bashrc 配置到您想要的位置,就像在通常的 linux 终端中完成的那样(每次都在 system32 文件夹中打开 bash 时,这很容易)。然后您可以使用 nvcc over bash 编译 .cu 文件。由于 nvcc 在 linux 下支持 gcc 和 g++,所以它解决了这个问题。无需为了切换到 linux 或处理糟糕的视觉工作室而牺牲和平。它对我有用。

    【讨论】:

    • 嗨@rahul,欢迎来到 Stack Overflow 请尽量让您的答案更具可读性。即在重要点之间留出空格和线条。还有一个可以清理的“在此处输入图像描述”。继续提供答案,兄弟
    猜你喜欢
    • 1970-01-01
    • 2015-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多