【PyTorch】n卡驱动、CUDA Toolkit、cuDNN全解安装教程

@TOC


GPU、NVIDIA Graphics Drivers、CUDA、CUDA Toolkit和cuDNN的关系

  • GPU:物理显卡。

  • NVIDIA Graphics Drivers:物理显卡驱动。

  • CUDA:一种由NVIDIA推出的通用并行计算架构,是一种并行计算平台和编程模型,该架构使GPU能够解决复杂的计算问题。在安装NVIDIA Graphics Drivers时,CUDA已经捆绑安装,无需另外安装

  • CUDA Toolkit:包含了CUDA的runtime API、CUDA代码的编译器nvcc(CUDA也有自己的语言,代码需要编译才能执行)和debug工具等。简单言之,可以将CUDA Toolkit视为开发CUDA程序的工具包。需要自己下载安装。此外,在安装CUDA Toolkit时,还可以选择是否捆绑安装NVIDIA Graphics Drivers显卡驱动,因此就可以简略我们的步骤。

  • cuDNN:基于CUDA Toolkit,专门针对深度神经网络中的基础操作而设计基于GPU的加速库。需要自己下载安装,其实所谓的安装就是移动几个库文件到指定路径。

使用情形判断

仅仅使用PyTorch

在只使用torch的情况下,不需要安装CUDA Toolkit和cuDNN,只需要显卡驱动,conda或者pip会为我们安排好一切

安装顺序应该是:NVIDIA Graphics Drivers->PyTorch

使用torch的第三方子模块

需要安装CUDA Toolkit

编译安装一些基于torch的第三方子模块时,譬如tiny-cuda-nnnvdiffrastsimple-knn。如果没有安装CUDA Toolkit,torch/utils/cpp_extension.py会报错如下:

这个报错的意思是找不到CUDA的环境变量路径。这个环境变量是只有安装了CUDA Toolkit之后设置才有意义。

这个报错在仅仅使用pytorch时没有影响,因为pytorch在安装时已经准备好了一切,不需要CUDA环境变量。但是,我们现在需要编译其他子模块,就必须要解决这个问题了。

对于做深度学习的研究者,编译其他子模块是经常会碰到的,因此,笔者建议直接安装CUDA Toolkit,在安装CUDA Toolkit的时候捆绑安装显卡驱动

因此,安装顺序应该是:NVIDIA Graphics Drivers(可跳过,在安装CUDA Toolkit的时候捆绑安装)->CUDA Toolkit->PyTorch->cuDNN

安装NVIDIA Graphics Drivers(可跳过)

前言

在安装CUDA Toolkit的时候可以选择捆绑安装NVIDIA Graphics Drivers显卡驱动。因此,这一步完全可以跳过,但笔者依旧先写出来。

Linux

法一:图形化界面安装(推荐)

在这里插入图片描述

换好源之后更新升级。必须要升级。否则,安装的n卡驱动是无法生效的!而且,下次重启进入Linux之后,连图形化界面都不会出现!!

安装必要依赖。必须要安装gccg++cmake。否则,安装的n卡驱动是无法生效的!而且,下次重启进入Linux之后,连图形化界面都不会出现!!

然后直接下载安装即可:

在这里插入图片描述

法二:手动下载文件后命令行安装(不推荐)

笔者没有使用过此方法,也不推荐此方法。在能用图形化界面的情况下就不要多此一举了。

windows

法一:GeForce Experience自动安装

NVIDIA官网下载GeForce Experience,安装好GeForce Experience之后可以在这个应用里面直接下载最新的驱动。

另外,分享两个可以下载任意驱动版本的方法:

  1. 修改下载链接:如果官网给我的链接是:https://www.nvidia.com/content/DriverDownloads/confirmation.php?url=/Windows/566.36/566.36-notebook-win10-win11-64bit-international-dch-whql.exe&lang=cn&type=GeForce,即566.36版本,那么我可以把566.36改成想要的版本号,例如537.42,然后直接访问链接就可以下载对应版本的驱动了:https://www.nvidia.com/content/DriverDownloads/confirmation.php?url=/Windows/537.42/537.42-notebook-win10-win11-64bit-international-dch-whql.exe&lang=cn&type=GeForce

法二:手动安装

同样的页面手动搜索对应型号的显卡驱动,下载安装。

在这里插入图片描述

检验安装

如果有类似下面的输出,那么NVIDIA Graphics Drivers就已经安装了:

安装CUDA Toolkit

查看显卡驱动版本情况

CUDA Toolkit对刚刚安装的显卡驱动有版本要求,具体可以去此处查询。2024.1查询的关系如下:

在这里插入图片描述

如果你跳过了安装显卡驱动的步骤,那么你就下载一个最新的CUDA Toolkit好了,它会捆绑安装适配的显卡驱动。

如果你已经安装了显卡驱动,那么可以键入如下指令查询自己的显卡驱动版本:

可以在下面看到我的版本是525.147.05

Linux

进入官网选择合适的版本。然后根据自己的设备一步步选择安装即可。

完成选择之后,应该有类似界面。根据官网的步骤一步一步来即可。

在这里插入图片描述

根据官网步骤,可以看到给出了三种安装方式。笔者在安装的时候先尝试了第二种,官网步骤如下:

然后在第三步报错如下:

根据提示信息,是因为我现在已经有libnvidia-common-525nvidia-kernel-common-525,无法再安装libnvidia-commonnvidia-kernel-common,需要更换现有的软件包。理论上,这个问题有两个解决方案:

  1. 替换软件包

  1. 放弃apt,使用aptitude安装

笔者这里都没有尝试,而是改成了官网的另外一种安装方式:

执行这个run程序之后会解压一段时间,要有一些耐心,然后就会有安装引导,一路yes之后来到这里:

在这里插入图片描述
  • 注意点1:如果跳过了显卡驱动安装的,这里就勾选第一个Driver。笔者已经安装了显卡驱动,自然就不用再勾选Driver了。然后安装即可。

  • 注意点2:如果这里勾选Kernel Objects,会导致安装不成功。笔者暂时不清楚原因,可能是因为已经安装了显卡驱动的原因。总之,这里不要勾选Kernel Objects

笔者在选择Install之后的安装过程中还出现dkms未安装报错,于是sudo apt install dkms,再次尝试安装,就成功了,然后出现:

根据提示,我们添加环境变量:

然后安装就完成了。

Windows

win系统下比较简单,进入官网选择合适的版本,直接下载exe可执行程序,进入引导安装即可。

  • 注意点:同样根据自己是否安装过显卡驱动来勾选要不要装显卡驱动

环境变量会自动设置好,不需要手动设置。安装程序会自动添加以下CUDA_PATH_V11_8CUDA_PATH这2个环境变量:

安装程序还会自动在Path环境变量中添加以下2项:

检验安装

重新打开一个终端查看:

应该有如下类似的输出:

版本切换

Linux

cuda的软链接位于/usr/local/,输入如下命令查看:

应该有类似如下的输出:

可以看到现在的cuda是链接到了我刚刚安装的cuda-11.8.一台设备可以安装不同的CUDA Toolkit版本,想要切换版本,只需要改变这个软链接即可。

假如我还有一个CUDA Toolkit12.0,可以用如下指令切换:

Windows

修改之前自动添加的CUDA_PATH环境变量到对应目录:

修改之前自动添加到Path环境变量下的那两个项目:

针对项目安装conda环境内隔离的cuda版本

不同的项目代码经常会要求不同的cuda版本,每次都手动切换难免有些麻烦,还有一种办法是针对项目,安装conda环境内隔离的cuda版本。

  • 在当前shell设置环境变量并检查是否安装成功:

Linux卸载CUDA Toolkit

再次回顾安装完成后的summary:

可以知道只需要输入类似的指令:(自行更改版本号)

安装PyTorch

查看显卡驱动的CUDA支持版本情况

同样是这个指令:

可以在下面看到我的最大支持的CUDA版本是12.0

下载pytorch

打开pytorch的官网,输入对应自己设备环境的pytorch安装指令即可。==着重注意刚刚安装的显卡驱动的可支持CUDA的最高版本,我们选择的pytorch的CUDA版本要低于显卡驱动的可支持CUDA的最高版本==。例如,我刚刚查询到我的显卡驱动可支持CUDA最高版本为12.0,那么我就选择11.8,如下图这样:

在这里插入图片描述

当然也可以选择conda安装。

安装cuDNN

cuDNN对已经安装的CUDA版本有要求。进入官网,选择合适的版本,界面如下:

在这里插入图片描述

下载即可。安装的官方文档在这里

Linux

按官方文档,先安装依赖:

法一:下载tar压缩包解压(推荐)

下载好之后解压缩:

然后复制文件并赋予权限就完成了:

法二:下载deb包安装(不推荐)

deb包安装反而要复杂一些。

  1. 下载好之后dpkg安装一下:

  1. 导入GPG key并更新:

这里的xy根据自己的版本自己调整

  1. 再安装几个依赖:

这里的xy也自己的版本略微调整

Windows

Windows只有解压缩安装的方式。下载并解压缩好zip文件,然后复制库文件如下:

  1. 复制 bin/cudnn*.dllC:/Program Files/NVIDIA/CUDNN/v12.x/bin

  2. 复制 include/cudnn*.hC:/Program Files/NVIDIA/CUDNN/v12.x/include

  3. 复制 lib/x64/cudnn*.libC:/Program Files/NVIDIA/CUDNN/v12.x/x64/lib

然后修改PATH环境变量,在其中添加项目:

检验安装

执行/usr/local/cuda/extras/demo_suite/deviceQuery,应该有以下类似输出:

执行/usr/local/cuda/extras/demo_suite/bandwidthTest,应该有以下类似输出:

最后更新于

这有帮助吗?