目录
- 一、前提条件检查
-
- [1. 确认 WSL2 已启用](#1. 确认 WSL2 已启用)
- [2. 验证 Windows GPU 驱动支持 WSL](#2. 验证 Windows GPU 驱动支持 WSL)
- [二、在 WSL2 中安装 CUDA Toolkit](#二、在 WSL2 中安装 CUDA Toolkit)
-
- [1. 添加 NVIDIA 官方软件源](#1. 添加 NVIDIA 官方软件源)
- [2. 安装 CUDA Toolkit(匹配驱动支持的版本)](#2. 安装 CUDA Toolkit(匹配驱动支持的版本))
- [三、配置 CUDA 环境变量](#三、配置 CUDA 环境变量)
- 四、验证安装
-
- [1. 检查 `nvcc` 版本](#1. 检查
nvcc
版本) - [2. 检查 GPU 状态](#2. 检查 GPU 状态)
- [3.运行 CUDA 示例(可选):](#3.运行 CUDA 示例(可选):)
- [1. 检查 `nvcc` 版本](#1. 检查
- [五、(可选)安装 cuDNN(用于深度学习框架)](#五、(可选)安装 cuDNN(用于深度学习框架))
-
- [1.下载 cuDNN](#1.下载 cuDNN)
- [2. 解压并复制文件](#2. 解压并复制文件)
- [3.验证 cuDNN](#3.验证 cuDNN)
- [六、安装NVIDIA Container Toolkit](#六、安装NVIDIA Container Toolkit)
- 七、常见问题解决
-
- [1. nvcc: command not found](#1. nvcc: command not found)
- [2. 编译报错 "unsupported GNU version"](#2. 编译报错 “unsupported GNU version”)
要在 WSL2(Ubuntu 22.04) 中使用 GPU,需依赖 Windows 的 NVIDIA 驱动 提供硬件支持,并在 WSL 内安装 CUDA Toolkit 及配置环境。
一、前提条件检查
1. 确认 WSL2 已启用
bash
# 打开 PowerShell(管理员),运行
wsl -l -v
-
确保
Ubuntu-22.04
的VERSION
为2
。若为1
,转换为 WSL2:wsl --set-version Ubuntu-22.04 2
wsl --set-default-version 2 # 设置默认版本为 WSL2
2. 验证 Windows GPU 驱动支持 WSL
bash
# 在 WSL 终端运行
nvidia-smi
- 若输出 Driver Version (如
572.40
)和 CUDA Version (如12.8
),说明驱动已支持 WSL,无需额外安装 Windows 驱动。
二、在 WSL2 中安装 CUDA Toolkit
1. 添加 NVIDIA 官方软件源
bash
# 下载并配置仓库优先级
sudo wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86\_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
# 添加 GPG 密钥
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86\_64/3bf863cc.pub
# 添加 CUDA 仓库
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86\_64/ /"
# 更新软件源
sudo apt update
2. 安装 CUDA Toolkit(匹配驱动支持的版本)
- Windows
nvidia-smi
显示的CUDA Version
(如12.8
)是驱动支持的最高版本,因此 WSL 中可安装 ≤12.8 的 CUDA 版本(推荐与 Windows 一致的12.4
,或最新兼容版12.8
):
-
安装 CUDA 12.4
sudo apt install cuda-toolkit-12-4
-
若安装 12.8(需仓库支持)
sudo apt install cuda-toolkit-12-8
-
若遇依赖问题,先安装
gcc
/g++
(Ubuntu 22.04 默认版本11
兼容 CUDA 12.4)sudo apt install gcc g++
三、配置 CUDA 环境变量
- 编辑 Shell 配置文件(如
~/.bashrc
):
bash
vim ~/.bashrc
- 在文件末尾添加以下内容(根据安装的 CUDA 版本修改
cuda-12.4
):
bash
# CUDA 环境变量
export CUDA\_HOME=/usr/local/cuda-12.4
export PATH=\$CUDA\_HOME/bin:\$PATH
export LD\_LIBRARY\_PATH=\$CUDA\_HOME/lib64:\$LD\_LIBRARY\_PATH
- 保存并退出(
Ctrl+X → Y → Enter
),然后使配置生效:
bash
source ~/.bashrc
四、验证安装
1. 检查 nvcc
版本
bash
nvcc --version
- 若输出
Cuda compilation tools, release 12.4
(或对应版本),说明安装成功。
2. 检查 GPU 状态
bash
nvidia-smi
- 应与 Windows 中运行的
nvidia-smi
输出一致(如 GPU 型号、驱动版本)。
3.运行 CUDA 示例(可选):
bash
# 进入示例目录
cd /usr/local/cuda/samples/1_Utilities/deviceQuery
# 编译(需安装 make)
sudo apt install make && make
# 运行测试
./deviceQuery
- 若输出
Result = PASS
,说明 GPU 可被 CUDA 调用。
五、(可选)安装 cuDNN(用于深度学习框架)
- 若需运行 PyTorch、TensorFlow 等框架,需安装 cuDNN
1.下载 cuDNN
- 前往 NVIDIA cuDNN 官网,登录后选择与 CUDA 版本匹配 的 cuDNN(如 CUDA 12.4 对应 cuDNN 8.9+),下载 Linux x86_64 版本的压缩包。
2. 解压并复制文件
bash
# 假设下载到 ~/Downloads,解压
cd ~/Downloads
tar -xvf cudnn-linux-x86_64-8.9.2.26_cuda12-archive.tar.xz
cd cudnn-linux-x86_64-8.9.2.26_cuda12-archive
# 复制头文件和库文件到 CUDA 目录
sudo cp include/cudnn*.h /usr/local/cuda/include
sudo cp lib/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
3.验证 cuDNN
- 安装深度学习框架后,运行代码测试 GPU 是否可用(以 PyTorch 为例)
python
import torch
print(torch.cuda.is_available()) # 应输出 True
六、安装NVIDIA Container Toolkit
- Docker 默认不支持 GPU 访问,需要安装 NVIDIA 提供的容器工具包,在 WSL2 的 Ubuntu 环境中执行以下命令安装 NVIDIA Container Toolkit
bash
# 添加 NVIDIA 包仓库和 GPG 密钥
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
# 更新包索引并安装 nvidia-docker2
sudo apt-get update
sudo apt-get install -y nvidia-docker2
# 重启 Docker 服务
sudo systemctl restart docker
- 验证 NVIDIA 驱动兼容性,确认 WSL2 中的驱动版本与 Windows 主机一致
bash
# 在 WSL2 中检查
nvidia-smi
# 在 Windows PowerShell 中检查
nvidia-smi
- 两个环境中的驱动版本应当完全一致。如果不一致,更新 Windows 驱动到最新版本并重启 WSL2
powershell
# 在 Windows PowerShell 中执行
wsl --shutdown
- 配置 Docker 默认运行时(可选),编辑 Docker 配置文件
/etc/docker/daemon.json
,添加以下内容:
json
{
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
},
"default-runtime": "nvidia" # 可选,设置为默认运行时
}
- 保存后重启 Docker
bash
sudo systemctl restart docker
七、常见问题解决
1. nvcc: command not found
- 检查环境变量:
echo $PATH
是否包含/usr/local/cuda-12.4/bin
。 - 确认 CUDA 安装:
dpkg -l | grep cuda
,若未安装则重新执行sudo apt install cuda-toolkit-12-4
。
2. 编译报错 "unsupported GNU version"
- Ubuntu 22.04 默认 GCC 11 兼容 CUDA 12.4,若仍报错,添加编译参数
bash
nvcc test.cu -o test -allow-unsupported-compiler