跳转至

CUDA Toolkit (+cuDNN)

无需再为 WSL 安装 NVIDIA 显卡驱动!

只要在 Windows 上安装了 NVIDIA 显卡驱动,CUDA 就能够在 WSL 2 中使用;安装在 Windows 主机上的 CUDA 驱动程序将在 WSL 2 内部以 libcuda.so 库的形式进行模拟(stub),因此不应在 WSL 2 环境中安装任何 NVIDIA 显卡的 Linux 驱动程序。

使用 WSL-Ubuntu CUDA toolkit 安装程序安装将不会附带 NVIDIA 显卡驱动。

NVIDIA 显卡驱动、CUDA、PyTorch 和 Python 的版本兼容性要求

PyTorch CUDA cuDNN Python
2.7 11.8, 12.6, 12.8 ~ 9.7.1.26 >=3.9, <=3.13
2.6 11.8, 12.4, 12.6 ~ 9.5.1.17
2.5 11.8, 12.1, 12.4 None
2.4 ~ 9.1.0.70 >=3.8, <=3.12
2.3 11.8, 12.1 ~ 8.7.0.84
2.2
2.1 >= 3.8, <=3.11
2.0 11.7, 11.8 ~ 8.5.0.96
1.13 11.6, 11.7 ~ 8.3.2.44 >= 3.7, <=3.10
1.12 11.3, 11.6

详见:CUDA Toolkit Major Component VersionsReleasing PyTorch | Release Compatibility Matrix


安装 CUDA Toolkit 1

选择合适的 CUDA 版本

选择 CUDA Toolkit 版本时,需要根据实际开发环境和版本兼容性进行选择,多个 CUDA 版本之间可以通过配置环境变量并存。

是否需要为 PyTorch 安装特定 CUDA?

在虚拟环境下,使用包管理器(condapip)安装 PyTorch 时,会自动安装所依赖版本的 CUDA 和 cuDNN(作为 Python 软件包,如 nvidia-cuda-runtime),并与系统环境变量定义的 CUDA 和 cuDNN 版本相隔离,PyTorch 会优先调用虚拟环境中的 CUDA 和 cuDNN。因此,不需要在系统环境下为 PyTorch 安装特定版本的 CUDA 和 cuDNN

首先,删除过时的 GPG 密钥

$ sudo apt-key del 7fa2af80

安装 NVIDIA CUDA 密钥环,以获取最新软件源

$ wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb

$ sudo dpkg -i cuda-keyring_1.1-1_all.deb

$ sudo apt update

使用 APT 命令,选择一个合适的 CUDA Toolkit 版本进行安装

可用的 CUDA Toolkit 版本 ${cuda-toolkit}
  • cuda-toolkit-11-8
  • cuda-toolkit-12-0
  • cuda-toolkit-12-1
  • cuda-toolkit-12-2
  • cuda-toolkit-12-3
  • cuda-toolkit-12-4
  • cuda-toolkit-12-5
  • cuda-toolkit-12-6
  • cuda-toolkit-12-8

建议使用 Tab 键自动补全,或执行 apt search cuda-toolkit 命令,搜索当前可用的 CUDA Toolkit 版本

目前兼容性最佳的版本为:CUDA Toolkit 11.8

$ sudo apt install ${cuda-toolkit}

访问 CUDA Toolkit Archive 官网,根据实际开发需求,选择一个合适的版本

目前兼容性最佳的版本为:CUDA Toolkit 11.8


选择目标平台的操作系统(Linux)、架构(x86_64)、发行版(WSL-Ubuntu)和安装类型

务必选择 deb (local) 方式安装

安装类型务必选择 deb (local)使用 deb (network) 将会在线安装最新版,而 runfile (local) 无法确保不安装驱动

图中,以 CUDA Toolkit 11.8 为例


依照所选 Installer Type(安装类型)的安装命令进行安装

图中,以 CUDA Toolkit 11.8 为例


编辑 .bashrc 文件,配置环境变量

$ gedit ~/.bashrc

将 CUDA 的路径 PATHLD_LIBRARY_PATH 写入 .bashrc 文件

需要将 cuda-x.x 替换为实际安装的版本,例如 cuda-11.8

.bashrc
export PATH=/usr/local/cuda-x.x/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-x.x/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}


保存更改后,使用下列命令使配置立即生效:

$ source ~/.bashrc

安装完成后,查看 CUDA 版本以验证安装

建议重启系统以重新加载图形界面

$ nvcc --version

卸载 CUDA Toolkit

  • 移除 CUDA Toolkit
$ sudo apt --purge remove "*cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" \
  "*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*"
  • 清理缓存及无用的相关依赖
$ sudo apt autoremove --purge -V

安装 cuDNN 2

cuDNN(CUDA Deep Neural Network Library)

NVIDIA CUDA 深度神经网络库(cuDNN)是由 NVIDIA 推出的专为深度学习设计的 GPU 加速库,专注于优化深度神经网络的核心计算操作。 它通过高度优化的卷积、池化、归一化和激活函数等算法,显著提升了训练和推理任务的效率,并与主流深度学习框架(如 TensorFlow、PyTorch)无缝集成,使开发者无需手动编写底层代码即可充分利用 GPU 性能,广泛应用于学术和工业领域的高性能计算场景。

更新至 cuDNN 9

2024年2月,cuDNN 9.0.0 发布,主要引入了对动态形状推理的优化支持,显著提升了可变输入尺寸场景(如自然语言处理)的计算效率,同时新增了针对 Ampere 架构 GPU(如A100)的细粒度 Tensor Core 加速功能,优化了卷积、池化和归一化等核心操作的性能,并扩展了 API 以支持更灵活的模型设计。

为了获得最佳性能,建议安装最新的 cuDNN 9 及与之兼容的 CUDA 11/12 最新版本 ! (1)

  1. cuDNN 9 可以与之前的 7/8 版本共存,安装新版本不会自动删除较旧的版本

安装 cuDNN 依赖项 zlib(数据压缩软件库)

$ sudo apt install zlib1g

默认安装最新版本

网络安装将默认安装最新版的 cuDNN,如需安装特定版本,建议使用软件包本地安装

如果在之前安装 CUDA Toolkit 时已添加密钥环,可以跳过此步骤

安装 NVIDIA CUDA 密钥环,以获取最新软件源

$ wget https://developer.download.nvidia.com/compute/cuda/repos/$distro/$arch/cuda-keyring_1.1-1_all.deb

$ sudo dpkg -i cuda-keyring_1.1-1_all.deb

$ sudo apt update
根据实际版本和架构,$distro/$arch 需要替换为以下字段:
  • ubuntu2004/x86_64
  • ubuntu2004/sbsa
  • ubuntu2004/arm64
  • ubuntu2204/x86_64
  • ubuntu2204/sbsa
  • ubuntu2204/arm64
  • ubuntu2404/x86_64
  • ubuntu2404/sbsa
  • ubuntu2404/arm64

详见:https://developer.download.nvidia.com/compute/cuda/repos/


安装适用于 CUDA 版本的 cuDNN:

  • 对于 CUDA 11:
$ sudo apt install cudnn9-cuda-11
  • 对于 CUDA 12:
$ sudo apt install cudnn9-cuda-12

访问 cuDNN Archive 官网,选择一个合适的版本


选择目标平台的操作系统、架构、发行版,其中,安装类型选择 deb (local)

图中,以 cuDNN 9.7.1 为例


依照所选 Installer Type(安装类型)的安装命令进行安装

图中,以 cuDNN 9.7.1 为例


验证 cuDNN

安装 cuDNN 示例

$ sudo apt install libcudnn9-samples

编译 mnistCUDNN 示例

$ cd /usr/src/cudnn_samples_v9/mnistCUDNN

$ sudo make clean && sudo make

运行 mnistCUDNN 示例

$ ./mnistCUDNN

如果运行结果提示 Test passed!,则说明已正确安装 cuDNN