【问题标题】:Compiling CUDA code from the command line从命令行编译 CUDA 代码
【发布时间】:2014-01-13 23:11:56
【问题描述】:

我正在尝试使用以下语法从命令行编译 CUDA 代码:

nvcc -c MyFile.cu -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin"

我安装了 CUDA Toolkit 5.5 版以及 Visual C++ 2010 Express。我没有完整版的 Visual Studio。

我收到以下错误消息:

nvcc : fatal error : nvcc cannot find a supported version of Microsoft Visual Studio. Only the versions 2008, 2010, and 2012 are supported

我已经看到人们使用 CUDA Toolkit 5.0 编译 VC2010 Express 的先例,例如,在这个线程中

https://devtalk.nvidia.com/default/topic/535527/?comment=3762165

因此,我无法理解会有什么关键区别,因为它是 CUDA 5.5 而不是 5.0。它是 VC Express 而不是 VC Professional 会有所不同吗?为什么在涉及编译时这很重要? Pro 和 Express 真的使用非常不同的编译器吗?

【问题讨论】:

  • @warunapww 为什么要添加visual-studio-2010 标签? OP 明确表示他没有完整版的 Visual Studio。
  • 您应该将路径传递给可执行文件,但不要传递给它所在的文件夹作为 -ccbin 参数。
  • @cuda geek:我不这么认为。根据以下链接中的文档,ccbin 需要一个目录。但是,我尝试附加 cl.exe,结果没有区别docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/…

标签: c++ cuda gpgpu


【解决方案1】:

我还不能发布 cmets,我不知道这是否是一个正确的答案,因为我没有 2010 快递。因此,为了帮助,我会尝试回答。

我可以为你提供我的编译行的开头,这与你的略有不同:

set CUDAFE_FLAGS=--sdk_dir "C:\Program Files (x86)\Windows Kits\8.0\"
"C:\_work\API\CUDA\bin\nvcc.exe" --use-local-env --cl-version 2012 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\x86_amd64"        --keep-dir x64\Prod -maxrregcount=0  --machine 64 

因此,我希望您将路径更改为您的路径,并将 cl-version 更改为

"C:\_work\API\CUDA\bin\nvcc.exe" --use-local-env --cl-version 2010 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cl.exe" --machine 32

请注意,我也尝试将其更改为 32 位。我假设这就是你正在运行的。

干杯

【讨论】:

  • 嗨亨里克。感谢您的回复,但我看不出如何将 'set CUDAFE_FLAGS=...' 位调整到我的平台。我没有目录路径“C:\Program Files (x86)\Windows Kits\8.0\”,并且不明白这做得好到足以知道对应的路径对我来说是什么。
  • 嗨。老实说,我不知道为什么需要它。没有它可以工作吗?它很可能是路径定义,因此如果缺少头文件或库,您可能可以直接添加包含路径。我在 linux 上的 deviceQuery makefile 中找不到它,所以它可能是特定于 VS 自定义构建的东西。
猜你喜欢
  • 1970-01-01
  • 2016-07-03
  • 2014-03-23
  • 2012-06-04
  • 2013-07-30
  • 2011-12-28
  • 2017-10-16
  • 2013-12-26
相关资源
最近更新 更多