安装准备工作
更新内核和软件(可选)
sudo apt update
sudo apt full-upgrade -y
sudo apt autoremove --purge
更新完成后重启电脑
安装必要依赖
sudo apt update
sudo apt install build-essential
下载CUDA Toolkit
在CUDA Toolkit归档页面选择版本后会转跳到下载页面,选择对应下载类型
Installer Type
时要选择runfile
,不要为了方便选deb

图中最下方框出的:
cuda_11.8.x
为CUDA版本号,一般只需保证前两个数据位相同520.x.x
为Driver版本号,一般只需保证第一个数据位相同
在Ubuntu自带的Additional Driver(附加驱动)软件中查找对应于其中Driver的版本号,以上图为例为520
。
由于官网驱动可能会比Ubuntu更新更快,所以版本可能会比Ubuntu中的新。这时就需要对应Ubuntu中
Driver
的版本号在归档页面找到对应的CUDA Toolkit
版本。如Ubuntu中最新的Driver
是515,此时找到的对应CUDA Toolkit
版本为11.7,runfile
文件为cuda_11.7.1_515.65.01_linux.run
找到对应文件后下载即可,以上图为例
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
下载cuDNN
在cuDNN归档页面选择对应CUDA版本。
如之前我们选的是CUDA 11.8,此处可以选择CUDA 11.x的通用版(下方框出的)。如果之前选择的是其他版本,可以用通用版,也可以选择如10.2、11.5等与自己下载的CUDA版本相同的具体版本

deb
格式的文件如果选择的是传统
Tar
方法解压拷贝安装的话也可以运行。但由于其中不包括测试样例相关文件,无法在后续步骤验证cuDNN是否安装成功

Nvidia Driver
安装驱动
upgrade
操作需要先重启电脑再进行安装使用Ubuntu自带的Additional Driver(附加驱动)软件安装之前确认过版本的Driver即可。(打开APP->选择驱动->点击应用)
一般不选择Server版本的驱动

等待进度条跑完后,重启电脑。
检验驱动是否安装成功
重启后打开终端输入
nvidia-smi
如果出现GPU信息即为安装成功

CUDA Toolkit
本节参考NVidia官方CUDA Toolkit安装指南[1]
安装CUDA Toolkit
运行安装程序
在CUDA Toolkit下载位置打开终端,输入以下指令(文件名替换为自己下载的文件名)
sudo sh cuda_11.7.1_515.65.01_linux.run
在交互界面中:
- 上下键移动光标,回车选择
Continue
- 输入
accept
,回车 - 选择需要安装的模块后,移动光标到
Install
,回车安装
注意: 由于之前我们已经安装过驱动,这里上下键移动光标到Driver
处,按空格
取消勾选 - 等待安装完成,出现相关信息
配置环境变量
在.bashrc中根据提示加入CUDA Toolkit相应环境变量
export CUDA_HOME=/usr/local/cuda
export PATH=$PATH:$CUDA_HOME/bin
export LD_LIBRARY_PATH=$CUDA_HOME/lib64
检查CUDA是否安装成功
打开一个新的终端输入
nvcc -V
如果出现相关CUDA版本信息即为安装成功

cuDNN
目前网络上关于cuDNN安装和验证的方法过时且有大量错误和重复现象,本文严格根据cudnn官方安装指南[2]中步骤进行操作,有需要也可自行查阅官方文档。
安装cuDNN
Deb文件的安装方法
sudo dpkg -i cudnn-local-repo-ubuntu2204-8.5.0.96_1.0-1_amd64.deb
sudo cp /var/cudnn-local-repo-*/cudnn-local-*-keyring.gpg /usr/share/keyrings/
sudo apt update
sudo apt install libcudnn8 libcudnn8-dev libcudnn8-samples
Tar文件的安装方法
解压
tar -xvf cudnn-linux-x86_64-8.5.0.96_cuda11-archive.tar.xz
拷贝相应文件并赋予权限
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*
检查cuDNN是否安装成功
安装freeimage库
sudo apt install libfreeimage3 libfreeimage-dev
拷贝测试文件到用户目录下
cp -r /usr/src/cudnn_samples_v8/ $HOME
进入测试目录并编译
cd $HOME/cudnn_samples_v8/mnistCUDNN
make clean && make
运行并检验
./mnistCUDNN
如果有如下输出即为成功
Test passed!
额外配置(可选)
考虑到Ubuntu上NVidia的驱动是与内核相对应的,容易因为使用sudo apt upgrade
或系统的自动更新给更新掉(通常会保留原来的内核,但启动时会默认使用最新内核)。

这种情况下就会出现由于内核更新导致的驱动不可用,具体表现为使用nvidia-smi
无法查看到GPU信息。
为避免出现这种情况可以使用apt-mark hold
来保持当前版本的内核,具体操作如下。
查看当前内核版本
uname -r

查看相关内核文件
最后一个参数为上面获取到的正在使用的内核版本5.15.0.52-generic
sudo dpkg --get-selections | grep linux | grep 5.15.0.52-generic

禁止自动更新
注意:需要根据上面返回的结果修改为自己的信息
sudo dpkg --get-selections | grep linux | grep 5.15.0.52-generic | xargs -n1 | grep linux | xargs sudo apt-mark hold
查看所有hold项目
sudo apt-mark showhold
解除hold (xxx替换为需要解除hold的项目名称)
sudo apt-mark unhold xxx