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 cudnnnvidia-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
ldconfigPyTorch CUDA 版本对应
| PyTorch 版本 | 支持的 CUDA 版本 |
|---|---|
| 2.0+ | 11.7, 11.8, 12.1 |
| 1.13 | 11.6, 11.7 |
| 1.12 | 11.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 版本,建议:
- 使用 Conda 环境隔离不同版本
- 每个环境安装对应的 cudatoolkit
- 框架会自动使用环境内的 CUDA 版本
