Windows 10配置CUDA 9.2
文章图片
本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。
目录配置环境&平台
- Windows 10配置CUDA 9.2
- 目录
- 配置环境&平台
- 配置步骤
- 第一步:安装Visual Studio 2017
- 第二步:安装CUDA 9.2
- 第三步:测试CUDA 9.2安装结果
- 第四步:配置CUDA 9.2
- 第五步:配置命令行下运行CUDA 9.2的环境
- Windows 10 x64 系统
- Microsoft Visual Studio 2017 Community(MSVS,Community版本免费)
- CUDA 9.2
截止目前最新版本的CUDA是9.2.148版,我的是9.2.88版,只要是9.2版就好。下载地址:https://developer.nvidia.com/cuda-downloads配置步骤 第一步:安装Visual Studio 2017 这步很简单,按照提示一步一步安装即可。网上也有很多教程,在此不再赘述。
最新版本的Visual Studio是15.8.1版,下载地址:https://visualstudio.microsoft.com/zh-hans/downloads/
安装顺序为先安装VS再安装CUDA, 以便CUDA在安装时在VS中安装插件。
注意:在安装前要确认自己有支持Nvidia的GPU及驱动(查看GPU:https://developer.nvidia.com/cuda-gpus,查找驱动:https://www.nvidia.com/drivers),并看清楚VS的版本(列表地址:https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html#system-requirements)
文章图片
可以看到目前可支持的VS2017最高版本是15.6.7(即15.6的最高版本),而Microsoft官网上的VS2017版已经出到了15.8.1。有两种方式来避免上述因版本兼容性问题而引起的错误:第一种是直接下载15.6.7或更早的版本(下载地址:),直接避开兼容性问题。第二种是下载最新版本的VS,之后修改CUDA中的配置文件。个人倾向于第二种,这样可以保持VS所有最新性能。偶尔visual studio installer会强制更新至最新版本,如果是低版本的话会不太好受。此修改方式可能不适用于CUDA 9.0。
第二步:安装CUDA 9.2 在安装前保证所有驱动在兼容的前提下为最新版本,之后就可以按照安装提示进行操作直至安装完成,或可按照https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html中所说完成。
注意CUDA 9.2.88版本多了一个补充包,先装主要的包再装补充包,9.2.148版应该只有一个包。如果之前安装失败过,再次安装之前需要删除与CUDA相关的所有文件夹,包括隐藏的文件夹。第三步:测试CUDA 9.2安装结果 安装完成后,打开命令行窗口进行测试:
nvcc -V
出现下图结果,表示安装成功:
文章图片
第四步:配置CUDA 9.2 【Windows 10配置CUDA 9.2】打开CUDA自带的nbody项目,在目录
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.2\5_Simulations\nbody
下(选择这个是因为这个不需要第三方的依赖项或附加功能,以目前安装的内容就可以运行成功)。如果安装的是15.6.7及以下的版本,运行成功: 文章图片
注意:如果报出如下错误:
1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Platforms\x64\PlatformToolsets\v141\Toolset.targets(36,5): error MSB8036: The Windows SDK version 10.0.15063.0 was not found. Install the required version of Windows SDK or change the SDK version in the project property pages or by right-clicking the solution and selecting "Retarget solution".
1>Done building project "nbody_vs2017.vcxproj" -- FAILED.
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========
这是因为此文件中包含了Windows SDK的版本信息,如果不兼容会导致出错。有两种解决方式:第一种是可以选择在visual studio installer中下载与其对应的SDK版本,然后在项目属性的general下选择SDK版本。但鉴于网上有人说会出现SDK版本更换无效,以及下载SDK需要很大的内存空间,且每次更换SDK都很麻烦,个人倾向于一个暴力的解决方式:直接删除原来的nbody_vs2017.vcxproj文件,或清理解决方案或重新生成解决方案(这会删除.vcxproj文件)。因为VS2017 15.6.X的版本都兼容,所以不用担心自己的SDK版本会过高以致报错。如果安装的是最新版本的VS,此时直接运行会显示如下结果:
1>------ Build started: Project: nbody, Configuration: Debug x64 ------
1>Compiling CUDA source file bodysystemcuda.cu...
1>
1>C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.2\5_Simulations\nbody>"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\bin\nvcc.exe" -gencode=arch=compute_30,code=\"sm_30,compute_30\" -gencode=arch=compute_35,code=\"sm_35,compute_35\" -gencode=arch=compute_37,code=\"sm_37,compute_37\" -gencode=arch=compute_50,code=\"sm_50,compute_50\" -gencode=arch=compute_52,code=\"sm_52,compute_52\" -gencode=arch=compute_60,code=\"sm_60,compute_60\" -gencode=arch=compute_61,code=\"sm_61,compute_61\" -gencode=arch=compute_70,code=\"sm_70,compute_70\" --use-local-env -ccbin "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\bin\HostX86\x64" -x cu-I./ -I../../common/inc -I./ -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\/include" -I../../common/inc -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\include"-G--keep-dir x64\Debug -maxrregcount=0--machine 64 --compile -cudart static -Xcompiler "/wd 4819" -g-DWIN32 -DWIN32 -D_MBCS -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /FS /Zi /RTC1 /MTd " -o x64/Debug/bodysystemcuda.cu.obj "C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.2\5_Simulations\nbody\bodysystemcuda.cu"
1>c:\program files\nvidia gpu computing toolkit\cuda\v9.2\include\crt/host_config.h(133): fatal error C1189: #error:-- unsupported Microsoft Visual Studio version! Only the versions 2012, 2013, 2015 and 2017 are supported!
1>bodysystemcuda.cu
1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\BuildCustomizations\CUDA 9.2.targets(707,9): error MSB3721: The command ""C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\bin\nvcc.exe" -gencode=arch=compute_30,code=\"sm_30,compute_30\" -gencode=arch=compute_35,code=\"sm_35,compute_35\" -gencode=arch=compute_37,code=\"sm_37,compute_37\" -gencode=arch=compute_50,code=\"sm_50,compute_50\" -gencode=arch=compute_52,code=\"sm_52,compute_52\" -gencode=arch=compute_60,code=\"sm_60,compute_60\" -gencode=arch=compute_61,code=\"sm_61,compute_61\" -gencode=arch=compute_70,code=\"sm_70,compute_70\" --use-local-env -ccbin "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\bin\HostX86\x64" -x cu-I./ -I../../common/inc -I./ -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\/include" -I../../common/inc -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\include"-G--keep-dir x64\Debug -maxrregcount=0--machine 64 --compile -cudart static -Xcompiler "/wd 4819" -g-DWIN32 -DWIN32 -D_MBCS -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /FS /Zi /RTC1 /MTd " -o x64/Debug/bodysystemcuda.cu.obj "C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.2\5_Simulations\nbody\bodysystemcuda.cu"" exited with code 2.
1>Done building project "nbody_vs2017.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
这是因为cl.exe的版本过高。可以进行如下操作查看当前cl.exe的版本:
打开命令行窗口,进入Community版本的cl.exe所在的目录下:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\ 14.15.26726\bin\Hostx64\x64
,其中14.15.26726
会因为不同版本而不同。运行cl.exe,出现下图结果:
文章图片
可以看到我的版本为19.15.26726版。
打开
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\ **v9.2** \include\crt
目录下的host_config.h
文件,根据报错信息,在第131行修改如下参数:#if _MSC_VER < 1600 || _MSC_VER > 1913
将其改为对应的版本,我的是19.15:
#if _MSC_VER < 1600 || _MSC_VER > 1915
此时再运行,就没有问题了。
第五步:配置命令行下运行CUDA 9.2的环境 若此时直接在命令行输入nvcc命令进行编译,会出现如下错误,即找不到cl.exe的路径:
文章图片
解决:添加cl.exe所在的目录路径
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\ 14.15.26726\bin\Hostx64\x64
到环境变量PATH,用户变量和系统变量皆可:注意设置变量时最好现在文件资源管理器中打开该文件目录再复制粘贴,直接从本页粘贴有时会无效。
文章图片
文章图片
此时需要重新打开命令行窗口,再编译文件,显示成功:
文章图片
文章图片
至此,配置结束。
个人倾向于在命令行下运行CUDA程序。我自学时候使用了CUDA by Example这本书,发现从第四章Julia Set开始需要用到glut的地方,Visual Studio中都会运行失败,但是在命令行下没有任何报错,并得出正确结果。目前还没有找到原因,若有知道原因的读者还请在评论中赐教。