在Visual Studio 2017中使用CUDA

ace*_*ine 21 parallel-processing cuda gpu visual-studio

我正在尝试安装CUDA,但是我收到一条消息"没有找到支持的visual studio版本".我认为这是因为我使用的是Visual Studio 2017(社区),而CUDA目前仅支持Visual Studio 2015.不幸的是,微软不允许我在不支付订阅费的情况下下载旧版本的Visual Studio.

有没有办法解决VS 2017的兼容性问题,还是我不能使用CUDA?

Pan*_*al. 45

  1. 如果要安装CUDA 8.0,则Visual Studio 2017需要为Visual Studio 2017安装其他组件.

    单击"开始"菜单,然后键入Visual Studio Installer.打开Visual Studio安装

    打开Individual components选项卡,选择VC++ 2015.3 v140 toolset
    Compilers, build tools and runtimes.

为Visual Studio 2017安装其他组件

  1. .NET Framework 3.5如果没有安装,还需要安装.MS .NET Framework 3.5上的
    Nvda.Build.CudaTasks.v8.0.dll程序集依赖项.

打开经典控制面板,转到Programs and features
并按Turn Windows features on or off.检查.NET Framework 3.5并按"确定".

在此输入图像描述

  1. 下载完整的CUDA toolkit发行版并将其解压缩到磁盘上的某个位置.
  2. 如果您尚未CUDA toolkit安装,请立即执行.如果您只Visual Studio 2017安装了,请取消选中Visual Studio integration复选框.


现在您想收到"No supported version of the visual studio was found"错误.

但是为了成功构建Cuda工具包项目Visual Studio 2017,您还需要执行步骤5和步骤6.

  1. 转到解CUDAVisualStudioIntegration\extras\visual_studio_integration\MSBuildExtensions
    压缩分发中的文件夹,复制所有文件并将其粘贴到
    C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140\BuildCustomizations:

的MSBuild

  1. 在最后一步中,您需要编辑Cuda项目以识别NVidia的构建任务Visual Studio 2017..vcxproj在文本编辑器中打开文件,查找所有出现的文件CUDA 8.0.props.替换字符串开头的宏,$(VCTargetsPath14)以便XML片段看起来如下所示:

<ImportGroup Label="ExtensionSettings"> <Import Project="$(VCTargetsPath14)\BuildCustomizations\CUDA 8.0.props" /></ImportGroup>

不要忘记编辑文件末尾的自定义目标路径:

<ImportGroup Label="ExtensionTargets"> <Import Project="$(VCTargetsPath14)\BuildCustomizations\CUDA 8.0.targets" /></ImportGroup>



一定要仔细检查你的路径conifuration!
如果您nvcc在命令提示符下使用,则可能无法cl.exeVisual Studio文件夹中调用!

另一个cl.exe可能在路径中

现在,您可以从Visual Studio 2017构建您的Cuda项目.

该解决方案的部分内容来自Oleg Tarasov博客.


Rob*_*lla 5

目前,微软似乎仍在提供 VS2015 Update 2 社区版。你必须加入“dev Essentials”计划,但它似乎是免费的。

我最近可以从这里下载安装程序。

更新:昨天,CUDA 9 RC 已在developer.nvidia.com 上向注册开发人员开放,并且支持 VS 2017。


小智 5

感谢大家的帮助。我只是想用拼图的最后一部分来补充这个帖子。CUDA v9.0 RC希望VS2017标识为1910,但最新更新实际上标识为1911。要修复open ... / CUDA / v9.0 / include / crt / host_config.h并将此行更改
#if _MSC_VER < 1600 || _MSC_VER > 1910
为:
#if _MSC_VER < 1600 || _MSC_VER > 1911

您可能还必须将以下内容添加到CMakeLists:
list(APPEND CUDA_NVCC_FLAGS --cl-version=2017)

  • 在VS2017更新时,我们需要增加_MSC_VER阈值。我刚刚删除了第二个条件。 (2认同)