首先安装Ubuntu22.04,此处不介绍。
安装CUDA和cuDNN需要先后完成以下几步,注意先后顺序:
- 安装显卡驱动,完成后nvidia-smi指令可以使用🚀;
- 安装CUDA Toolkit,安装完成后nvcc -V指令正常输出🚀;
- 安装cuDNN,安装完成后PyTorch可以调用相关的计算包🚀。
nvidia-smi指令查看的是驱动版本的CUDA(CUDA Driver)。nvcc -V查看的是PyTorch等深度学习环境调用的版本CUDA(CUDA Toolkit)。这里只需要 CUDA Driver≥CUDA Toolkit即可。
目录
一、安装NVIDIA驱动
安装指令:
ubuntu-drivers devices
sudo apt install nvidia-driver-535
查看安装结果:
nvidia-smi
二、安装CUDA
1.查看系统架构
uname -m
2.选择CUDA版本
CUDA相关内容可从CUDA官网查看
CUDA版本选择一定要与主流pytorch相结合,可从pytorch官网查看
虽然推荐安装新版本,但是由于pytorch很多扩展库尚未开发这么快,所以选择CUDA11.8
在CUDA下载选择对应版本
网络不好就推荐本地下载安装,选择对应架构和版本
3. 安装CUDA
检查安装环境:包括确认gcc已安装,确认已禁用nouveau
gcc --version
lsmod | grep nouveau
运行cuda.run文件
sudo sh cuda_11.8.0_520.61.05_linux.run
Existing package manager installation of the driver found. It is strongly recommended that you remove this before continuing
选择continue
输入accept
此处对应了文章开头所讲,去掉CUDA Driver只安装CUDA Toolkit
安装完成,记着截图看下安装地址:/usr/local/cuda-11.8/
重启终端,写入系统环境变量
sudo gedit ~/.bashrc
输入
export PATH=$PATH:/usr/local/cuda-11.8/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.8/lib64
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-11.8
测试安装情况
nvcc -V
三、安装cuDNN
1.选择cuDNN版本
cuDNN官网下载安装包
本文选择cuDNN v8.9.0版本,此处建议相同版本,具体原因在2中会讲
下载完deb文件后安装
2.安装cuDNN
运行安装指令
sudo dpkg -i cudnn-local-repo-ubuntu2204-8.9.0.131_1.0-1_amd64.deb
此处注意两点,首先,会自动生成下一步的运行指令,导入CUDA GPG key,复制粘贴运行
sudo cp /var/cudnn-local-repo-ubuntu2204-8.9.0.131/cudnn-local-2063C34E-keyring.gpg /usr/share/keyrings/
其次,根据运行指令,可以看出在/var/cudnn-local-repo-ubuntu2204-8.9.0.131/文件夹会生成三个文件,其命名方式对应了CUDA版本,因此1中选择此版本cuDNN
更新包缓存
sudo apt-get update
验证安装结果
dpkg -l | grep cudnn
出现下图则cuDNN已经成功安装。已经安装了以下组件:
cudnn-local-repo-ubuntu2204-8.9.0.131
libcudnn8(cuDNN运行库)
libcudnn8-dev(cuDNN开发库和头文件)
libcudnn8-samples(cuDNN示例)
进一步运行示例
制示例代码到工作目录
cp -r /usr/src/cudnn_samples_v8/ $HOME
进入该目录并编译示例代码
cd $HOME/cudnn_samples_v8/mnistCUDNN
make clean && make
如果遇到错误fatal error: FreeImage.h: No such file or directory,表明系统中缺少FreeImage库
则安装缺失的FreeImage库,运行
sudo apt update
sudo apt install libfreeimage-dev
然后,重新编译示例代码,正确结果应该如下
可以忽略关于架构的警告,compute_35, sm_35, sm_37已被弃用
运行编译后的示例程序来验证
./mnistCUDNN
正确结果应显示“Test passed!”的消息
此时,cuDNN安装完成。