Skip to content

CUDA 与 cuDNN

CUDA 是 NVIDIA 的并行计算平台,cuDNN 是深度学习加速库。本文介绍如何查看和配置这些组件。

是否需要手动安装?

大多数情况下不需要

现代深度学习框架(PyTorch、TensorFlow)已内置编译好的 CUDA 支持。除非您需要:

  • 编译自定义 CUDA 算子
  • 使用特定版本的 CUDA 功能
  • 编译某些依赖原生 CUDA 的库

否则直接使用框架即可,无需额外配置。

查看当前版本

查看 CUDA 版本

bash
# 查看系统安装的 CUDA
nvcc --version

# 查看动态链接库
ldconfig -p | grep cuda

查看 cuDNN 版本

bash
ldconfig -p | grep cudnn

通过 Conda 查看

bash
conda list | grep cudatoolkit
conda list | grep cudnn

nvidia-smi 显示的版本

bash
nvidia-smi

注意

nvidia-smi 右上角显示的 CUDA 版本是驱动支持的最高版本,并非实际安装的版本。实际使用的版本以 nvcc --version 或框架内置版本为准。

安装其他版本

方法一:通过 Conda 安装(推荐)

优点:简单快捷,自动处理依赖 缺点:通常不包含头文件,不适合编译需求

bash
# 搜索可用版本
conda search cudatoolkit

# 安装指定版本
conda install cudatoolkit=11.8 -y
conda install cudnn=8.6 -y

方法二:手动安装完整版

适用于需要编译 CUDA 代码的场景。

下载 CUDA Toolkit:

访问 NVIDIA CUDA Archive 下载对应版本。

安装步骤:

bash
# 添加执行权限
chmod +x cuda_xx.x.x_xxx.xx_linux.run

# 运行安装程序(仅安装 toolkit,不安装驱动)
./cuda_xx.x.x_xxx.xx_linux.run --toolkit --silent

下载 cuDNN:

访问 NVIDIA cuDNN Archive 下载对应版本(需注册账号)。

安装 cuDNN:

bash
# 解压
tar -xzf cudnn-linux-x86_64-8.x.x.x_cudaxx.x-archive.tar.xz

# 复制文件
cp cudnn-*/include/* /usr/local/cuda/include/
cp cudnn-*/lib/* /usr/local/cuda/lib64/
chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

配置环境变量:

bash
echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
ldconfig

PyTorch CUDA 版本对应

PyTorch 版本支持的 CUDA 版本
2.0+11.7, 11.8, 12.1
1.1311.6, 11.7
1.1211.3, 11.6

安装对应版本:

bash
# PyTorch 2.0 + CUDA 11.8
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

# PyTorch 2.0 + CUDA 12.1
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

验证 GPU 可用性

PyTorch

python
import torch
print(f"CUDA 可用: {torch.cuda.is_available()}")
print(f"CUDA 版本: {torch.version.cuda}")
print(f"cuDNN 版本: {torch.backends.cudnn.version()}")
print(f"GPU 数量: {torch.cuda.device_count()}")
print(f"GPU 名称: {torch.cuda.get_device_name(0)}")

TensorFlow

python
import tensorflow as tf
print(f"GPU 列表: {tf.config.list_physical_devices('GPU')}")
print(f"TF 版本: {tf.__version__}")

多版本共存

如需在同一实例中使用多个 CUDA 版本,建议:

  1. 使用 Conda 环境隔离不同版本
  2. 每个环境安装对应的 cudatoolkit
  3. 框架会自动使用环境内的 CUDA 版本

智算无疆 川流不息