一、安装背景
CUDA11.1版本,本人的电脑显卡是GTX 1650,显存4GB;第一次安装前下载了vs2017版本并安装成功。
二、安装过程-如何一步步地解决错误?
第一次安装:精简安装,也就是把所有组件都勾选,并且路径不改变。
第二次安装:自定义安装。
自定义安装的时候,去掉visual studio integration的勾选,其他都勾上,然后路径不变更,点击确认安装。
图1
而后,出现Nsight compute安装失败 。
图2
第三次安装,不勾选nsight compute,我想着先安装成功吧,后面再独立安装这个组件。
于是乎,在安装过程中,莫名其妙重启了?
图3
第四次安装, Visual Studio Integration再次勾选,Nsight Compute不勾选;
图4
在C盘新建一个CUDA_win10文件夹,子路径cuda1和子路径cuda2,development放在cuda1,sample和documentation放在cuda2。
图5
这次安装比较顺利。
图6
但是,又弹出已安装xx,未安装xx的界面。
图7
Installed:
- Nsight for Visual Studio 2017
- Nsight Monitor
Not Installed:
- Nsight for Visual Studio 2019
Reason: VS2019 was not found
- Nsight for Visual Studio 2015
Reason: VS2015 was not found
- Integrated Graphics Frame Debugger and Profiler
Reason: see https://developer.nvidia.com/nsight-vstools
- Integrated CUDA Profilers
Reason: see https://developer.nvidia.com/nsight-vstools
点击下一步,弹出更具体的哪些程序我安装了,哪些程序未安装的界面。
图8
而后我在安装包解压后的备份文件夹中找到vs_integration的文件夹,打开进去后,不断深入
图9
直到找到extras文件夹里的,然后发现了2017和2019两个子文件夹,名字很熟悉呀?不就是先前没有安装成功的两个版本的Nsight for VS吗?
图10-1
还有我点击图8界面的launch samples按钮(未截到)后,弹到安装CUDA的文件夹,在里面我也看到了2015、2017、2019这三个版本。
图10-2
貌似有思路,但是这些信息没用。
于是我打开了上面已安装xx未安装xx界面(图7)的For more information,please click here的超链接(Install Nsight Visual Studio Edition | NVIDIA Developer) 。
官方给我的建议如图,意思就是我电脑上没有2019版本,所以才导致没安装成功Nsight for Visual Studio 2019。
但是,我也没打算去再下一个2019和2015,因为我想的是为啥需要多个版本?会不会是开发者有病,如果这样设置,用户不是要安装3个版本的VS才能安装CUDA吗,不合理吧?
所以我估计仅安装一个版本的也行,于是我打算忽略这个Nsight for Visual Studio 2019/2015的错误。在这里,我也推测这个版本的CUDA只支持VS的这三个版本,其他版本的兼容性可能都没那么强。
转而,我去解决Nsight 的3个模块的问题了。
我打开上面已安装xx未安装xx界面(图7)的未安装Graphics和Profiler的参考链接(https://developer.nvidia.com/nsight-vstools)。这个网站,意思是这个nsight-vstools工具允许我直接访问nsight的3个工具的功能。
但是,我明明没有安装成功它们三呀,是不是开发者暗示我点击那三个链接先把这三个独立工具分别安装好呢?
于是我先安装了 Compute模块(版本是20220101)。成功后,提示我重启,那我就乖乖重启吧,今天该睡觉了,明天再解决其他两个。
早上起床,我又去商店下载了graphic独立工具。安装的时候,提示我要手动关闭腾讯系的软件(不懂...),比如QQ、腾讯桌面整理。
成功安装,并且没有提示要重启。
本打算再去官网下载安装system,后来发现貌似这个独立工具并没有出现安装失败的提示。于是我在everything中搜索Nsight Systems,找到了C盘的NVIDIA Corporation下的该组件的文件夹。创建时间是11号的21点,这应该是我当时用精简安装法安装上去的。
后来,我发现其实我大可不必费尽周折去官网下载这三个组件,因为原安装包里就有。
并且,就算我找不到原安装包文件夹中的对应组件的安装包,我也可以通过运行setup.exe文件,在CUDA安装向导程序中单独勾选某一个组件不就行了?
比如只勾选Nsight VSE。
走到这一步,也就把先前图8中出现的没安装的都安装上了。
下面进入测试环节。
三、测试与检验环节
下面的几个步骤,都是按顺序测试的,每一步的测试一旦出现错误和异常,解决方法就顺应给出。
1、nvcc -V。正常
2、运行CUDA提供的sample样本。注意,这个cuda2文件夹是我放sample和documentation的地方。
因为我当时在安装VS2017的时候,仅仅勾选了python;大概这个sample是用C++编写的,所以打开这个Samples_vs2017文件后,VS提示我补充安装C++。
补充安装C++后,我再打开Samples_vs2017文件。弹出了一连串错误,因为错误日志太多,至少几十上百条,我就放4条样例给大家看看。
C:\CUDA_win10\CUDA11.1\cuda2\7_CUDALibraries\batchedLabelMarkersAndLabelCompressionNPP\batchedLabelMarkersAndCompressionNPP_vs2017.vcxproj : error : 未找到导入的项目“D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\BuildCustomizations\CUDA 11.1.props”。请确认 <Import> 声明中的路径正确,且磁盘上存在该文件。 C:\CUDA_win10\CUDA11.1\cuda2\7_CUDALibraries\batchedLabelMarkersAndLabelCompressionNPP\batchedLabelMarkersAndCompressionNPP_vs2017.vcxproj
C:\CUDA_win10\CUDA11.1\cuda2\7_CUDALibraries\watershedSegmentationNPP\watershedSegmentationNPP_vs2017.vcxproj : error : 未找到导入的项目“D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\BuildCustomizations\CUDA 11.1.props”。请确认 <Import> 声明中的路径正确,且磁盘上存在该文件。 C:\CUDA_win10\CUDA11.1\cuda2\7_CUDALibraries\watershedSegmentationNPP\watershedSegmentationNPP_vs2017.vcxproj
C:\CUDA_win10\CUDA11.1\cuda2\6_Advanced\cudaCompressibleMemory\cudaCompressibleMemory_vs2017.vcxproj : error : 未找到导入的项目“D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\BuildCustomizations\CUDA 11.1.props”。请确认 <Import> 声明中的路径正确,且磁盘上存在该文件。 C:\CUDA_win10\CUDA11.1\cuda2\6_Advanced\cudaCompressibleMemory\cudaCompressibleMemory_vs2017.vcxproj
C:\CUDA_win10\CUDA11.1\cuda2\2_Graphics\simpleD3D11\simpleD3D11_vs2017.vcxproj : error : 未找到导入的项目“D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\BuildCustomizations\CUDA 11.1.props”。请确认 <Import> 声明中的路径正确,且磁盘上存在该文件。 C:\CUDA_win10\CUDA11.1\cuda2\2_Graphics\simpleD3D11\simpleD3D11_vs2017.vcxproj
错误的形式相同(都是未找到导入的项目“D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\BuildCustomizations\CUDA 11.1.props”),不同的是不同的vcxproj文件。
我估计是visual_studio_intergration安装不到位,也就是说CUDA和VS的关系没搞好;看能不能“手动撮合撮合”,让它们重拾旧好。
参考了文章:vs2019出现MSB4019 找不到导入的项目CUDA 10.0.props
于是我在CUDA安装包解压文件夹中找到visual_studio_integration文件夹,再依次进入到MSBuildExtensions文件夹,将里面的4个文件复制粘贴到了VS的BuildCustomizations文件夹。
注意:dll文件是动态链接库,xml文件也经常被用来链接、关联、提供标签等。因此这几个文件估计就是用来和VS创建友好关系用的。
因为有4个文件,需要点击4次继续才行。或者勾选下面的为所有当前项目执行此操作。
复制进去后,再重新打开samples文件。加载时间大概是5-10分钟,好久啊!而且还不能截图。
加载完成后,我随便打开一个CPP文件,运行后,没有异常。
(其实我也不知道这个samples文件具体怎么用...暂时就搁置吧,应该是全部安装好了。)
3、打开VS2017,新建项目时,并没有发现CUDA11.1模块。
于是我参考了文章 解决win10+VS +CUDA NVIDIA安装失败
准备重装visual studio integration。 提示我关闭vs2017,关闭后继续安装。
安装成功。
再次打开VS2017,新建项目时,已经有CUDA模块了!
4、对第2步的补充,编译+生成+运行samples里的cpp文件
由于执行到第2步时,我还不知道这个CPP文件如何检验安装效果,仅仅是点击了“>本地调试器”这个按钮。
后来参考第3步的文章,打开samples_vs2017那个项目,大概是因为之前加载过,所以这次瞬间打开了。
随便打开一个cpp文件,编译(编译环节很快,不到一分钟 )+生成+运行。
在生成环节,我卡了20分钟,貌似出错了?
在这个进度,非常缓慢。
生成完了,貌似不是软件本身的问题吧?不知道了,实在不懂,不管这个测试环节了......
5、参考文章:Windows上查看CUDA是否安装成功_GreatcloudL的博客
打开CUDA安装路径的demo_suite文件夹。
以管理员身份运行CMD,然后运行这两个文件的绝对路径。
return值都是pass,说明正常。
6、查看copti_xxx.dll文件(xxx是版本号)是否存在 ,如果存在就正常。
四、cuDNN深度学习加速库
上面只是安装好了CUDA,但是cuDNN是需要额外安装的。
下载地址详见:cuDNN Archive | NVIDIA Developer
CUDA的版本要和cuDNN版本匹配,如果是win10就选择windows x86版本(虽然是64bits系统,也没关系,因为可以兼容32bits的软件)。
下载完成后,解压并打开。将下面的3个文件夹复制粘贴到CUDA安装路径下的development对应的文件夹。因为本人放在了cuda1里,所以cuda1文件夹中也对应有这三个文件夹的名称,所以复制过来即可。
这样即安装完成。
五、检测pytorch是否可以用GPU-CUDA
1、先执行python进入环境
2、import torch
torch.cuda.is_available()
3、如果输出为True,则正常
五、反思与总结
4.1软件安装失败时,如果是某一个组件安装失败,可以先不勾选这个组件;把其他组件安装成功后,再回过头来单独勾选这个组件进行安装。
4.2如果在安装包解压文件夹没找到组件安装包,可以直接用setup.exe引导安装文件,仅勾选某组件即可。
4.3本篇文章,有两个疑问没有解决。(1)为啥已经有2017,还提示我未安装2015和2019;(2)为啥其他测试都没问题,samples文件的编译运行还是会出错?也即究竟如何利用samples文件来完成测试?
4.4安装过程中莫名其妙的重启,不代表再用同样的设置安装也有问题;比如我再次尝试,就安装成功了。