如何在 Linux 上安装 GPU 驱动

在 Ubuntu 20.04.6 LTS 中安装 NVIDIA 显卡驱动并安装 CUDA Toolkit 与 cuDNN

由 Anawaert 于 2024-07-08 发布   

概述

  总所周知,在计算机视觉与机器学习/深度学习领域,有相当多数据计算量十分巨大,比如说深度学习模型的训练与大型图像矩阵的处理。若将这些计算任务全部交给 CPU 这个“万金油”来执行,效果是远不如交给能做并行计算任务的 GPU 或 NPU 的。因此,在上述领域的开发环境中配置 GPU 硬件加速必要的驱动与开发套件就显得很重要了,本文在下面将以 Ubuntu 20.04.6 LTS 为例,介绍如何在 Linux 上简易地安装 NVIDIA 显卡驱动,并安装配置并行计算套件 CUDA Toolkit 与深度神经网络开发模块 cuDNN。

附 笔者使用的计算机情况:

  • CPU: Intel(R) Core i9-13900HX x 32
  • GPU: NVIDIA GeForce RTX 4080 Laptop 12G
  • RAM: SAMSUNG DDR5-5600MHz 16GB × 2
  • OS: Ubuntu 20.04.6 (Desktop) LTS

安装流程

安装 NVIDIA 的 显卡 驱动

  在 Ubuntu 20.04.6 LTS 中,打开应用列表,找到“附加驱动”并运行。以笔者这台计算机为例,可在新的窗口中选择“使用NVIDIA driver metapackage 来在 nvidia-driver-535(专有,tested )”,然后点击“应用更改”以安装(最新的)NVIDIA 显卡驱动。

App Lists


Additional Drivers

  若您发觉在此页面中未找到与 NVIDIA 相关的选项,那么很有可能您当前使用的计算机显示卡为 AMD 或 Intel 提供的,自然无法安装 NVIDIA 相关的驱动与软件。若您身处计算机视觉、机器学习与深度学习领域,请考虑更换计算机或更换显卡,因为有且仅有 NVIDIA 的显卡可以使用 CUDA Toolkit ,而 CUDA Toolkit 已深度应用于计算机视觉和深度学习领域。

  在等待应用更改的过程中,可能会出现一个窗口,请点击“Next”。这是 UEFI 为了保护数据与硬件安全而采取的引导保护,需要用户在下一次重启时输入密钥,请设置至少8位且便于记忆和输入的密钥。

  请注意:这里使用了“可能”一词来描述密码保护页的出现。如果您的计算机的 BIOS 中并没有开启“安全引导”或“引导保护”等功能,则不会出现下面的任何“密码输入”与“蓝屏”现象,仅会提示您需要重启。请注意观察,与密码保护相关的操作流程仅供参考:

Set Security Boot Key Hello


Set Security Boot Key

  在重启电脑后,将会看到一个“蓝屏界面”。不要害怕,首先,使用“↓”键将光标移至“Enroll MOK”,接着按下 Enter 键,

Enter Key 1

  接着,使用“↓”键将光标移至“Continue”,按下 Enter 键:

Enter Key 2

  然后,选择“Yes”,按 Enter 继续:

Enter Key 3

  输入刚才我们设置的密钥即可。请在输入时确保您的输入无误,因为它不会显示密码输入:

Enter Key 4

  最后,选择“Reboot”,按下 Enter 键即可重启

Enter Key 5

  重启后,打开终端,输入以下命令来查看 NVIDIA 显卡驱动的安装情况:

nvidia-smi

NVIDIA Driver

  可以看到,笔者的 Ubuntu 系统目前已成功安装 NVIDIA 显卡驱动,并且最高支持的CUDA版本为 12.2。

安装 CUDA Toolkit

  笔者为了后续与 Pytorch 深度学习框架,ZED SDK 和 OpenCV 4.9.0 进行匹配,选择的 CUDA Toolkit 版本为 11.7。重要提醒:若您安装 CUDA ToolKit 是为了深度学习与其它对 CUDA 版本有硬性要求的用途,请务必在它们的官网查看“对应的 CUDA 版本”(例如,可在 PyTorch官网 查询到,PyTorch v1.13 对应的 CUDA 版本有 11.7 与 11.6 )!

  首先,我们从 CUDA ToolKit 归档页 下载适用于 Ubuntu 20.04 x64 的 CUDA TookKit 的 .sh 可执行文件:

Select CUDA Version


Get Bash File Commands

  将这两行命令分别粘贴到终端中运行,第一个命令用于下载,第二个命令用于运行下载的文件。第一个命令可能会执行很长时间,视网络环境而定,耐心等待即可。

Download .sh File

  运行第二个命令后,终端可能会卡一会,请不要打断或关闭窗口。片刻之后,会看到终端上显示的 CUDA安装向导,使用“↑”、“↓”键移动高亮光标至“继续”上,并按 Enter 继续:

Start Installing CUDA 1


Start Installing CUDA 2

  输入“accept”以接受用户协议:

Agree User License

  接下来依然可使用方向键来控制选项,使用 Enter 键来执行“点击”操作,“[ ]”中打“X”则代表选中,反之则未选中。

  由于我们先前已安装 NVIDIA 显卡驱动,因此将第一项“Driver”取消选择,仅选择 CUDA 相关的三个选项。最后,将光标移至“安装”以确认安装:

Installation Options

  随后,终端会“卡住”一会。等待片刻后,会看到终端的如下提示。这并非安装失败或报错,我们仅需配置环境变量即可完成 CUDA 11.7 的安装:

Installing CUDA Init Success

  在终端中输入以下命令以编辑用户环境变量:

sudo gedit ~/.bashrc

  在 ~/.bashrc 文件的最后添加上这两行内容:

export PATH=$PATH:/usr/local/cuda/bin  
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64

Edit User Env Var

  保存文件后,回到终端,运行下面的命令以刷新环境变量:

source ~/.bashrc

  最后,输入下面的命令,若输出与下图类似,则代表 CUDA ToolKit 已安装配置完成:

nvcc -V

NVCC -V

安装 cuDNN

  在完成 CUDA ToolKit 的安装后,我们访问 cuDNN 归档页 来查找与下载匹配我们 CUDA ToolKit 版本的 cuDNN 模块。

Select cuDNN

  在一众版本的 cuDNN 中,虽然大部分都标注着支持 “11.x” 或 “12.x” 全版本,但笔者有个选择建议:在满足软件依赖的前提下,选择与你的 CUDA ToolKit 、Pytorch 等框架发行时间相近的 cuDNN 版本。例如,笔者的 Python 版本是 Python 3.8 ,CUDA ToolKit 版本为 11.7 ,发行于 2022 年 5 月。因此,可选择发行于 2022 年 5 月的 cnDNN v8.4.1:

Select cuDNN 8.4.1

  选择“Local Installer for Linux x86_64 (Tar)”下载:

Select cuDNN 8.4.1 Tar

  当然,下载 cuDNN 需要登录 NVIDIA 账户。账号注册流程非常简单常规,本文不再过多赘述:

NVIDIA Login

  下载后,在文件下载目录中打开终端,分别运行下面的命令进行 cuDNN 的配置安装

# [your-cudnn-tar-xz-package] 为刚才下载的 cuDNN 文件名
# 请根据实际情况输入第一条命令
tar -xvf [your-cudnn-tar-xz-package]

sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include
sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

Installing cuDNN Commands

  最后,输入以下命令来验证 cuDNN 是否配置完成。若终端中的内容如下图所示,则说明配置完成:

cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

Verify cuDNN

  至此,NVIDIA 的显卡驱动、CUDA ToolKit 与 cuDNN 模块都已安装完毕。

总结

  本文在安装 GPU 驱动时未采用大多数博客中采用的命令行或无 GUI 模式安装,而是利用 Ubuntu 附加驱动程序实现了相对简单的安装操作,另外在安装 cuDNN 时也使用了拷贝覆盖法而非 Debian/Ubuntu 系统中使用的 deb 包安装法,但最终实现的效果与逻辑其实都是相似的。当我们安装好驱动,配置好 CUDA 后,就可以开始借助 GPU 的力量进行并行计算,玩转计算机视觉/深度学习了,若各位对此部分还有其他的看法与建议,也欢迎在下方评论区留言、评论。