CUDA/CuDNN/PyTorch 安装配置

前置 | Python 安装

因为一些原因,Python 采用手动编译安装。参考 [1] 查找版本对应,切换 Python 版本,然后执行如下命令进行手动编译安装

1
2
./configure --enable-optimizations
make altinstall

安装后进行版本切换。最好通过 config alter,如果只是临时使用,在 .bashrc 使用 alias 命令临时替换也可以,如下

1
2
3
# .bashrc
alias python='/usr/local/bin/python3.x'
$ source ~/.bashrc

卸载命令如下。源码安装情况下,删除目录便是卸载

1
2
rm -rf /usr/local/bin/python3.x
rm -rf /usr/local/bin/python3.x-config

注意事项。编译安装后,装包时容易报 ModuleNotFoundError 或动态库链接缺失等。解决方案是把缺的包装好后重新编译 Python,以 BZIP2 为例

1
apt install libbz2-dev

CUDA

安装 CUDA 前,首先确保已安装了 Nvidia 驱动,并执行 nvidia-smi 检查当前 Nvidia 驱动支持的最高 CUDA 版本。如果机器上已经有 CUDA,建议切换版本安装,不卸载当前版本 CUDA。

检查 CUDA 安装情况

1
2
whereis cuda
# cuda: /usr/lib/cuda /usr/include/cuda
1
2
3
sudo dpkg -l | grep cuda
# ii libcuda1:amd64 535.183.01-1~deb12u1 amd64 NVIDIA CUDA Driver Library
# ii libcudart11.0:amd64 11.8.89~11.8.0-5~deb12u1 amd64 NVIDIA CUDA Runtime Library

卸载当前 CUDA 命令如下。不建议此方式。

1
sudo dpkg --remove libcuda1:amd64

安装 CUDA。官方网站提供 .deb .run 等安装方式,这里使用 .run

1
2
wget https://developer.download.nvidia.com/compute/cuda/11.6.2/local_installers/cuda_11.6.2_510.47.03_linux.run
sudo sh cuda_11.6.2_510.47.03_linux.run

根据提示完成安装,然后在 .bashrc 设置环境变量

1
2
export PATH="/usr/local/cuda-x.x/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-x.x/lib64:$LD_LIBRARY_PATH"

检查 CUDA 安装情况,nvcc 有输出,则初步安装完成。

1
2
3
4
5
6
$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Tue_Mar__8_18:18:20_PST_2022
Cuda compilation tools, release 11.6, V11.6.124
Build cuda_11.6.r11.6/compiler.31057947_0

CuDNN

从 .tar 安装或更换 CuDNN

1
2
3
4
tar -xvf cudnn-linux-x86_64-8.4.0.27_cuda11.6-archive.tar.xz
mv ... # 移入 CUDA-11.6 目录
sudo cp include/cudnn* /usr/local/cuda-11.6/include/
sudo cp lib/libcudnn* /usr/local/cuda-11.6/lib64/

现在,分别从 torch 和源码检查 CuDNN 版本,发现并不一致

从 torch 检查

1
2
>>> print(torch.backends.cudnn.version())
90100

从源码检查

1
2
3
4
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
#define CUDNN_MAJOR 8
#define CUDNN_MINOR 4
#define CUDNN_PATCHLEVEL 0 # 8400

实战中并无影响,所以便没有修复。如果从 Conda 安装会容易很多。

PyTorch

安装时需要注意版本匹配 (CUDA/CuDNN/PyTorch) 方可正常运行。本次实验安装 PyTorch 1.13

1
pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu116

附 | NumPy

可能遇到 NumPy 相关报错,一般是使用了 Numpy 1.x 的废弃接口导致。将 Numpy 降回 v1.26 即可。


  1. https://juejin.cn/post/7329572942274363430 ↩︎