CUDA是显卡厂商NVIDIA推出的运算平台,常用于一些图形图像处理技术。当然,安装CUDA的 前提 是有一块NVIDIA的独显。如今人工智能、神经网络方向的大火,更是带动了CUDA在并行计算领域的发展,本文安装CUDA平台主要是用于Python语言基于Pytorch框架编写神经网络模型。
至于详细的CUDA介绍可参考百度百科。
本文详细介绍的是Windows平台下CUDA的安装教程,之前曾在Linux平台(Ubuntu 18.04系统)上安装过,但估计是显卡驱动等相关的原因并未能够正常使用,现在转战Windows平台,凭借Win10兼容性强的特点上手安装会更加容易。
对于那些安装CUDA用于并行计算的朋友,需要特别说明的一点是一定要注意CUDA的版本与编程语言支持的版本是否相同。本文安装CUDA是用于Python语言中Pytorch框架编程,目前全网搜索Pytorch安装教程CUDA11.4&Torch1.9.0应该是最新的版本,也算是我头铁安装的一次经历吧。
直接百度搜索查看显卡驱动的很多教程与后续NVIDIA给出的版本号相差较大,真正查看符合的版本号可参考这篇文章
需要安装的CUDA版本必须有支持的显卡驱动,NVIDIA官网公布了CUDA支持的显卡驱动版本号,本文截取在榜的支持驱动如下表所示:
CUDA Toolkit | Linux x86_64 Driver Version | Windows x86_64 Driver Version |
---|---|---|
CUDA 11.4.0 GA | >=470.42.01 | >=471.11 |
CUDA 11.3.1 Update 1 | >=465.19.01 | >=465.89 |
CUDA 11.3.0 GA | >=465.19.01 | >=465.89 |
CUDA 11.2.2 Update 2 | >=460.32.03 | >=461.33 |
CUDA 11.2.1 Update 1 | >=460.32.03 | >=461.09 |
CUDA 11.2.0 GA | >=460.27.03 | >=460.82 |
CUDA 11.1.1 Update 1 | >=455.32 | >=456.81 |
CUDA 11.1 GA | >=455.23 | >=456.38 |
CUDA 11.0.3 Update 1 | >=450.51.06 | >=451.82 |
CUDA 11.0.2 GA | >=450.51.05 | >=451.48 |
CUDA 11.0.1 RC | >=450.36.06 | >=451.22 |
CUDA 10.2.89 | >=440.33 | >=441.22 |
CUDA 10.1 (10.1.105 general release, and updates) | >=418.39 | >=418.96 |
CUDA 10.0.130 | >=410.48 | >=411.31 |
CUDA 9.2 (9.2.148 Update 1) | >=396.37 | >=398.26 |
CUDA 9.2 (9.2.88) | >=396.26 | >=397.44 |
CUDA 9.1 (9.1.85) | >=390.46 | >=391.29 |
CUDA 9.0 (9.0.76) | >=384.81 | >=385.54 |
CUDA 8.0 (8.0.61 GA2) | >=375.26 | >=376.51 |
CUDA 8.0 (8.0.44) | >=367.48 | >=369.30 |
CUDA 7.5 (7.5.16) | >=352.31 | >=353.66 |
CUDA 7.0 (7.0.28) | >=346.46 | >=347.62 |
首先进入CUDA Toolkit 官网去下载CUDA。本机使用的是Windows 10系统,且系统是64位的,因而在官网上选择对应的安装包并下载(如下图所示)。注意尽量选择local版本,这是安装在本机并使用独显算力的,区别于network在线算力。
11.4版本是目前最新的一个工具包,大小共计2.8G,等待下载方便后续安装。
我安装的时候基本都是CUDA默认选项,但网络看其他朋友安装的时候有自定义一些东西,这边给一个借鉴链接。
CUDA安装完成后可以运行cmd,输入nvcc -V查看是否安装成功。
cuDNN是用于深度神经网络的GPU加速库,在具体编写神经网络程序时会使用到。CUDA与cuDNN的关系可参见这篇文章。
与安装CUDA需选择对应的版本类似,安装cuDNN时也需选择与CUDA对应的版本。
本文给出目前已知CUDA与cuDNN的版本对应关系,具体的安装包及支持情况可查询cuDNN官网。需要特别说明的一点是,cuDNN的下载需登录NVIDIA账户,如若没有可注册一个方便后续安装。
cuDNN | CUDA |
---|---|
v8.2.1 | 11.x, 10.2 |
v8.2.0 | 11.x, 10.2 |
v8.1.1 | 11.0, 11.1, 11.2, 10.2 |
v8.1.0 | 11.0, 11.1,11.2, 10.2 |
v8.0.5 | 11.1, 11.0, 10.2, 10.1 |
v8.0.4 | 11.0, 10.2, 10.1 |
v8.0.3 | 11.0, 10.2, 10.1 |
v8.0.2 | 11.0, 10.2, 10.1 |
v8.0.1 RC2 | 11.0, 10.2 |
v7.6.5 | 10.2, 10.1, 10.0, 9.2, 9.0 |
v7.6.4 | 10.1, 10.0, 9.2, 9.0 |
v7.6.3 | 10.1, 10.0, 9.2, 9.0 |
v7.6.2 | 10.1, 10.0, 9.2, 9.0 |
v7.6.1 | 10.1, 10.0, 9.2, 9.0 |
v7.6.0 | 10.1, 10.0, 9.2, 9.0 |
v7.5.1 | 10.1, 10.0, 9.2, 9.0 |
v7.5.0 | 10.1, 10.0, 9.2, 9.0 |
v7.4.2 | 10.0, 9.2, 9.0 |
v7.4.1 | 10.0, 9.2, 9.0 |
v7.3.1 | 10.0, 9.2, 9.0 |
v7.3.0 | 10.0, 9.0 |
v7.2.1 | 9.2 |
v7.1.4 | 9.2, 9.0, 8.0 |
v7.1.3 | 9.1, 9.0, 8.0 |
v7.1.2 | 9.2, 9.1, 9.0 |
v7.0.5 | 9.1, 9.0, 8.0 |
v7.0.4 | 9.0 |
v6.0 | 8.0, 7.5 |
v5.1 | 8.0, 7.5 |
v5 | 8.0, 7.5 |
v4 | 7.0 and later |
v3 | 7.0 and later |
v2 | 6.5 and later |
v1 | 6.5 R1 |
本文安装时选择的是最新的cuDNN v8.2.1版本,下载完成后需加以解压,然后将文件按对应的要求放至相应文件夹,具体文件夹的转移方法可参考这篇文章。
所需替换的文件夹路径如下:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.4
win+R 打开 cmd 窗口,输入如下命令跳转至CUDA的安装目录下:
cd C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.4\extras\demo_suite
然后运行deviceQuery.exe 和 bandwidthTest.exe 来查看GPU的状态,实测的结果如下:
可以看到,运行deviceQuery.exe显示的结果是PASS
同理,bandwidthTest.exe 运行也是通过的。
如前文所述,搭建CUDA环境是用于Python编程。我选择的框架是Facebook公司推出的Torch框架,如果选择Google公司的TensorFlow框架,需额外关注对应的编程环境,与本文搭建的情况有所不同。
因为是新配的电脑,就直接选择了最新版本的Python环境进行安装。在Python安装上并无什么特别值得说明的,直接从官网下载所需要的版本即可,选择Windows系统版本进行安装。方便不太熟悉的朋友安装Python,这边给出一个安装参考链接。
在Pytorch安装时也是需要注意版本号对应的,这边给出Pytorch的官网,上面会给出安装的版本建议。
本文选择的仍然是最新的Pytorch 1.9.0 stable版本,选择的安装方式是pip安装。
这边列出下图所示pip命令:
pip3 install torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio===0.9.0 -f https://download.pytorch.org/whl/torch_stable.html
当然,pip安装需要网络环境比较稳定,有一定的可能出错,我也是尝试了3-4次才最终安装成功。
前文提及的安装是基于实验室中的台式机安装CUDA的一整套记录,近期在自己的笔记本电脑上也同样安装了一下CUDA。不过我的笔记本电脑购于2017年,用的还是GTX 1050显卡(4G 显存),驱动的话也是出厂原装的驱动398.36。
整个这套配置放到2021年,已经是老掉牙的装备了,所以安装各个版本的时候也是要花费一番功夫的。
根据之前提及的步骤,由本机的驱动去选择对应适配的CUDA版本。398.36的显卡驱动,让我选择了最后能支持该驱动的CUDA 9.2版本(毕竟新版本的CUDA在算力和优化上是有所提升的)。同样的,查找上文给出的表格,选择最后支持CUDA 9.2的cuDNN 7.6.5版本。
当然,安装CUDA和cuDNN的时候并没有遇到什么大的困难,按照前文的步骤一步步操作,最终在cmd窗口可以检验安装是有效的。
在我自己的笔记本安装Python时,第一反应是选择最新的Python 3.9.7稳定版,一切安装妥当后,便准备开始我的PyTorch安装之路了。由于CUDA版本不高于10.2,在PyTorch官方安装说明首页已经不配拥有一席之地了。我只能在 Previous PyTorch Version 页面寻找我所需要的版本。老样子,我选择的CUDA 9.2所能支持的最高版本torch 1.7.1,具体的pip安装命令如下:
# CUDA 9.2
pip install torch==1.7.1+cu92 torchvision==0.8.2+cu92 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
运行该命令,直接显示:
ERROR: No matching distribution found for torch==1.7.1 cu92
百度一波,发现可能是CUDA版本太低,不支持当前PyTorch版本。那咋办?降PyTorch版本呗。但当我一直降到PyTorch 1.5.1版本时,仍旧无法安装。我心想:这不对啊,网上给出的帖子就是CUDA 9.2和PyTorch 1.5.1安装成功的,这肯定是其他安装方面的原因。
既然在cmd窗口pip安装出错,那我试试其他方法呗。由于我习惯在PyCharm中编写Python代码,所以就尝试了一下能否在PyCharm中成功安装。第一次安装没有选择具体的Torch版本,默认最新版就安装的Pytorch 1.9.0版本,但居然显示安装成功了!!!
我立马尝试能否正常使用显卡算力:
import torch
torch.cuda.is_available()
输出:
False
但想想也正常,毕竟我安装的是最新Pytorch 1.9.0版本,官方都说这个版本不支持CUDA 9.2,这能正常调用有鬼嘞。卸载,重新安装PyTorch 1.7.1版本,结果仍旧是同样的结果。
其实PyCharm中为了Python的适配,只会安装CPU版本的PyTorch,因而无论如何都是无法调用显卡算力的。所以手头有N卡的铁汁,千万不要图方便用PyCharm默认方法的安装PyTorch。
一通分析下来,最终还是版本下载错误的问题。幸好在网上看到了这份帖子:解决could not find a version that satisfies the requirement torch等类似问题。
帖子里面分析的很对,我们使用pip命令最终也是为了下载对应的whl。那在pip无法连接官网的情况下,不如直接去官网下载好whl文件,再直接安装。
这个早期版本的显卡对应的PyTorch需要额外花力气在官网找到对应的支持网址,这边给出一个CUDA 9.2对应的各版本torch和torchvision的链接:https://download.pytorch.org/whl/cu92/torch_stable.html
下载的就是下面这个Win平台支持的PyTorch版本:
这边还是有点小坑的,我额外说明一下。
Windows平台必须使用后缀为 -win_amd64.whl 的文件。吐槽一波,这样式的文件确实少!
当然,还有一点就是这边cp38要求我们本机上的版本使用Python 3.8版本。所以我之前预装的Python 3.9版本自然而然的就废了,只能选择卸载重装。
一切安装妥当后,PyCharm中包管理页面会显示:
其中后缀+cu92说明该版本号是基于CUDA 9.2安装的,再运行上面的算力检测程序就能显示True啦。