【问题标题】:CUDA 9 unsupported error with Visual Studio 2017Visual Studio 2017 出现 CUDA 9 不支持错误
【发布时间】:2018-05-18 15:08:51
【问题描述】:

我最近更新了我的 VS 2017,现在我什至无法构建默认的 CUDA 项目(带有矢量添加的项目)。

我怀疑这是由于以下错误:

Severity    Code    Description Project File    Line    Suppression State
Error   C1189   #error:  -- unsupported Microsoft Visual Studio version! 
 Only the versions 2012, 2013, 2015 and 2017 are supported! ver2    
c:\program files\nvidia gpu computing 
toolkit\cuda\v9.0\include\crt\host_config.h 133 

其他错误无关紧要,一旦我修复它就会消失。请注意,我能够从 CUDA 示例构建和运行 simpleCUFFT。

在更新之前,我能够构建默认的 CUDA 项目,但我无法构建 CUDA 示例项目。我已经使用 VS 安装程序更新了我的 VS2017 并安装了 CUDA SDK 10.0.15063.0。附上已安装组件的截图。

如果需要任何其他信息,请告诉我。我知道following 主题,因为我使用的是最新的 CUDA 工具包,所以我不需要在 host_config.h 中进行更改。

谢谢, 米哈伊尔

编辑: 我的 VS 版本(在 VS 安装程序中显示)是 15.5.0 我的 nvcc 版本是 release 9.0, V9.0.176

Edit2:我尝试将 host_config.h 第 133 行更改为:

  #if _MSC_VER < 1600 || _MSC_VER > 1912

此错误不再出现,但是文件 type_trails 中出现了一堆错误“表达式必须具有常量值”。我不知道如何解决它。

【问题讨论】:

  • Microsoft 已经发布了至少一个破坏 CUDA 9 的 VS2017 更新。您可能是另一个的受害者。您何时下载并安装了 CUDA 和 VS,两者报告的确切版本是什么?
  • 谢谢,我已经对我的帖子进行了编辑
  • 请使用 VS2017 和 CUDA 的人发布两者的版本

标签: c++ visual-studio cuda


【解决方案1】:

经过一段时间的痛苦,我能够解决问题。以下是有类似问题的人的答案:

1) 确保您拥有 VC++ 2015.3 v140 工具集(可以从 Web 或 Visual Studio 安装程序安装)

2) 在项目属性(常规)-> 平台工具集中选择 Visual Studio 2015 (v140)。

编辑(2018 年 5 月 21 日):我刚刚将 Visual Studio 2017 更新到最新版本 15.7.1。从现在开始,我可以选择 VS 2017 v141 工具集,它工作正常。

【讨论】:

  • 是的,这是一个好方法,但是如果您使用仅在工具集 v141 中提供的功能并且需要 CUDA,这将无济于事。
  • 这可行,但要编译示例解决方案中的 162 个项目,您需要使用“文件替换”工具将 v141 替换为 v140 PlatformToolset> in *.vcxproj in c:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.1\
  • 注意如果使用cmake可以指定-T v140来选择合适的平台工具包。
  • 有一种方法可以从 UI 快速更改解决方案中所有项目(共有 162 个)的此设置。只需一次选择多个项目,然后右键单击项目属性,然后按照上述答案的说明进行操作。您可以通过以下方式一次选择所有项目:1) ctrl-A 2) 然后取消选择所有非项目(解决方案和文件夹)。
【解决方案2】:

在 VS 更新 15.4.3 中,微软将其 CL 编译器的版本号更新为 14.12 (https://www.visualstudio.com/ru-ru/news/releasenotes/vs2017-relnotes#15.4.4)

这就是 CUDA 9.0.176 拒绝编译的原因。 今天NVIDIA把CUDA更新到了9.1.85,所以更新一下 只需将 CUDA 更新到 9.1 https://developer.nvidia.com/cuda-downloads

【讨论】:

  • 这不再有效,因为现在有引入 CL 19.12 的 VS 15.5.4 Nvidia 需要尽快发布另一个更新
  • 使用最新的CUDA工具包(9.1.85)和最新的Visual Studio 17版本,15.6.5还是不行
【解决方案3】:

我使用的是 CUDA 9.2 和 VS 2017(版本 15.7.5)。只需修改 host_config.h(通常在 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.*\include\crt 下,可以在 build 的 VS 输出中找到)对我有用。

换行

#if _MSC_VER < 1600 || _MSC_VER > 1913

到

#if _MSC_VER < 1600 || _MSC_VER > 1914

或类似的东西,基于 cl.exe 的版本

【讨论】:

  • 嗨,我使用的是 CUDA 9.0,但它不起作用。它可能适用于 CUDA 9.2。我稍后会检查并确认
  • 您是只更改了这个,还是更改了其他内容。我问是因为我使用的是 CUDA 9.2。还是不行。
  • 只有这个。我认为您可以安全地删除第二部分“|| _MSC_VER > 1914”,因为 vs 2017 经常更新。现在 _MSC_VER 应该已经是 1915
【解决方案4】:

对于正在阅读此问题的任何人,请在 CUDA 10 中进行更新。它开箱即用。无需安装其他答案中提到的以前的编译器工具集等。只需下载 CUDA 10,安装它并卸载以前的 CUDA 版本。然后创建一个新的 CUDA 10 项目并放置您的代码。它会起作用的。

如果您遇到错误,请不要忘记在项目属性 -> CUDA C/C++ -> 设备 -> 代码生成中适当地设置 compute_xx,sm_xx。

【讨论】:

  • Visual Studio 2019 怎么样?
猜你喜欢
  • 2017-10-30
  • 1970-01-01
  • 2018-05-26
  • 2018-05-10
  • 2019-01-16
  • 1970-01-01
  • 2022-11-08
  • 2017-10-24
相关资源
最近更新 更多