以下是在 WSL2 (Ubuntu) 中安装 CUDA 12.9 的详细教程,整合了多个权威来源的操作步骤,并针对常见问题提供解决方案:
📋 一、安装前的准备工作
1. 系统要求
- Windows 版本:Windows 10 21H2 (Build 19044+) 或 Windows 11。
- WSL2 已启用:
wsl --install -d Ubuntu-22.04 # 安装 Ubuntu 22.04 wsl --set-default-version 2 # 设为 WSL2
- NVIDIA 驱动:
- 宿主机需安装 ≥515.43.04 的 NVIDIA 驱动(通过
nvidia-smi
验证)。 - 若驱动版本低于 CUDA 12.9 要求,需升级(官网下载)。
- 宿主机需安装 ≥515.43.04 的 NVIDIA 驱动(通过
2. 更新 Ubuntu 环境
在 WSL 终端中执行:
sudo apt update && sudo apt upgrade -y
sudo apt install build-essential # 安装编译工具
⬇️ 二、安装 CUDA 12.9
1. 添加 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
💡 关键点:必须使用
wsl-ubuntu
仓库(非标准 Ubuntu 仓库),否则安装失败。
2. 安装 CUDA Toolkit
sudo apt install -y cuda-toolkit-12-9 # 精确匹配版本号
3. 配置环境变量
编辑 ~/.bashrc
:
nano ~/.bashrc
在文件末尾添加:
export PATH=/usr/local/cuda-12.9/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.9/lib64:$LD_LIBRARY_PATH
保存后生效:
source ~/.bashrc
✅ 三、验证安装
1. 检查 CUDA 编译器
nvcc --version # 应输出 "release 12.9"
2. 验证 GPU 驱动兼容性
nvidia-smi # 顶部显示的 CUDA 版本需 ≥12.9
⚠️ 若报错
command not found
:
- 检查环境变量是否生效(
echo $PATH
)。- 确认安装路径存在(
ls /usr/local/cuda-12.9
)。
⚙️ 四、安装 cuDNN(可选)
深度学习用户需安装 cuDNN ≥9.10.2(CUDA 12.9 兼容版本)。
1. 下载 cuDNN 包
从 NVIDIA cuDNN 官网 下载对应版本(需注册账户)。
2. 安装 cuDNN
sudo dpkg -i cudnn-local-repo-*.deb # 替换为下载的文件名
sudo apt update
sudo apt install libcudnn9
🧪 五、测试 PyTorch GPU 支持
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu129
验证代码:
import torch
print(torch.cuda.is_available()) # 应输出 True
print(torch.version.cuda) # 应显示 12.9
⚠️ 六、常见问题解决
问题 | 解决方案 |
---|---|
nvcc 未找到 |
检查环境变量是否包含 /usr/local/cuda-12.9/bin 。 |
nvidia-smi 无输出 |
升级宿主机 NVIDIA 驱动并重启。 |
CUDA 版本与驱动不兼容 | 宿主机驱动版本需 ≥ CUDA 要求的版本(见 兼容表)。 |
网络下载失败 | 替换 DNS 为 8.8.8.8 (修改 /etc/resolv.conf )。 |
💎 总结步骤
- 准备环境:升级 Windows、WSL2、NVIDIA 驱动。
- 安装 CUDA 12.9:使用
wsl-ubuntu
仓库安装。 - 配置环境变量:确保
nvcc
可执行。 - 验证:
nvcc --version
和nvidia-smi
双重确认。 - 扩展:按需安装 cuDNN 和 PyTorch。
完整流程参考:NVIDIA CUDA WSL 指南。遇到问题优先检查 驱动兼容性 和 环境变量路径!