VS Visual Studio 2017 创建cuda项目编译不过

此问题的产生是基于这样一个事实:

先有Visual Studio的每一个版本,才有CUDA的sdk的每一个版本,即CUDA的sdk的开发者,要迁就VS的版本,实现 CUDA Toolkits 对 Visual Studio 的支持。也就是说,在本版本CUDA Toolkits出生后才出生的VS的版本,CUDA Toolkits因不知道未来VS版本的特性,故无法预先支持。

当安装了较旧的cuda驱动,相对较新的visual studio 时,可能会出现cuda驱动中的配置文件不能识别Visual Studio的版本,而导致编译不过。

以VS2017为例子,有多个版本号。当cuda驱动发布时间早已其中的某个版本号时,就无法识别VS的版本。只要手动改一下即可。

例如cuda 9.2.148对VS2017的支持,仅仅到 (Visual Studio 2017 version 15.6),而当你安装了

(Visual Studio 2017 version 15.9),cuda的sdk就无法识别到15.9,会导致编译不过。

解决方法:

方法一,安装更新的cuda驱动;

方法二,把host_config.h文件中的VS2017的版本号改大一点:D:\Program Files\NVIDIAGPUComputingToolkit\CUDA\v9.2\include\crt\host_config.h

//Line 131:
#if _MSC_VER < 1600 || _MSC_VER > 1916// 这里的1916本来为1913,那时候1916版本还未发布

#error -- unsupported Microsoft Visual Studio version! Only the versions 2012, 2013, 2015 and 2017 are supported!

#elif _MSC_VER == 1600 /* _MSC_VERION == 1600 */

#pragma message("support for Microsoft Visual Studio 2010 has been deprecated!")

Visual Studio的版本号对应的_MSC_VER值:

MSC    1.0   _MSC_VER == 100
MSC    2.0   _MSC_VER == 200
MSC    3.0   _MSC_VER == 300
MSC    4.0   _MSC_VER == 400
MSC    5.0   _MSC_VER == 500
MSC    6.0   _MSC_VER == 600
MSC    7.0   _MSC_VER == 700
MSVC++ 1.0   _MSC_VER == 800
MSVC++ 2.0   _MSC_VER == 900
MSVC++ 4.0   _MSC_VER == 1000 (Developer Studio 4.0)
MSVC++ 4.2   _MSC_VER == 1020 (Developer Studio 4.2)
MSVC++ 5.0   _MSC_VER == 1100 (Visual Studio 97 version 5.0)
MSVC++ 6.0   _MSC_VER == 1200 (Visual Studio 6.0 version 6.0)
MSVC++ 7.0   _MSC_VER == 1300 (Visual Studio .NET 2002 version 7.0)
MSVC++ 7.1   _MSC_VER == 1310 (Visual Studio .NET 2003 version 7.1)
MSVC++ 8.0   _MSC_VER == 1400 (Visual Studio 2005 version 8.0)
MSVC++ 9.0   _MSC_VER == 1500 (Visual Studio 2008 version 9.0)
MSVC++ 10.0  _MSC_VER == 1600 (Visual Studio 2010 version 10.0)
MSVC++ 11.0  _MSC_VER == 1700 (Visual Studio 2012 version 11.0)
MSVC++ 12.0  _MSC_VER == 1800 (Visual Studio 2013 version 12.0)
MSVC++ 14.0  _MSC_VER == 1900 (Visual Studio 2015 version 14.0)
MSVC++ 14.1  _MSC_VER == 1910 (Visual Studio 2017 version 15.0)
MSVC++ 14.11 _MSC_VER == 1911 (Visual Studio 2017 version 15.3)
MSVC++ 14.12 _MSC_VER == 1912 (Visual Studio 2017 version 15.5)
MSVC++ 14.13 _MSC_VER == 1913 (Visual Studio 2017 version 15.6)
MSVC++ 14.14 _MSC_VER == 1914 (Visual Studio 2017 version 15.7)
MSVC++ 14.15 _MSC_VER == 1915 (Visual Studio 2017 version 15.8)
MSVC++ 14.16 _MSC_VER == 1916 (Visual Studio 2017 version 15.9)
MSVC++ 14.2  _MSC_VER == 1920 (Visual Studio 2019 Version 16.0)
MSVC++ 14.21 _MSC_VER == 1921 (Visual Studio 2019 Version 16.1)
MSVC++ 14.22 _MSC_VER == 1922 (Visual Studio 2019 Version 16.2)

同时会找不到stdio.h文件等,

解决方法,自己手动在属性中配置VC++包含目录为windows Kits的include目录,

例如Win Kits安装在D盘:

D:\Windows Kits\10\Include\10.0.17763.0\ucrt

猜你喜欢

转载自blog.csdn.net/eloudy/article/details/120588134
今日推荐