利用 Windows GPU 在 WSL2 中安装并配置 CUDA Toolkit

目录

  • 一、前提条件检查
    • [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 示例(可选):)
  • [五、(可选)安装 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
相关推荐
论文复现现场1 天前
LAMMPS 用 RTX 5090 能跑多大?32GB 显存、CUDA 编译与规模验证
cuda·分子动力学·lammps·rtx5090
EatFan1 天前
从 CUDA 到昇腾:一张对照表拆解 DeepSeek 最新开源组件(TileLang / DeepGEMM / DeepEP / TileKernels)
开源·cuda·deepseek·deepgemm·tilelang·华为昇腾
论文复现现场4 天前
RTX 3090 24GB 适合科研吗?单卡论文复现、PyTorch 显存检查与 OOM 排错
人工智能·pytorch·python·深度学习·cuda·rtx3090
ysu_03145 天前
Docker-Desktop-WSL2实战指南-Windows从安装配置到项目容器化
windows·python·docker·容器·composer·dockerfile·wsl2
论文复现现场6 天前
RTX 5090 32GB 适合科研计算吗?单卡训练、推理、论文复现与 OOM 判断方法
pytorch·深度学习·cuda·rtx5090
论文复现现场6 天前
论文复现看到“RTX 3090 or higher”:显存、CUDA、batch size 与 OOM 怎么判断?
开发语言·pytorch·batch·cuda·rtx3090
_nibel6 天前
第二章:Details 重点数据细读 ⭐教你读懂 Nsight Compute 报告 系列合集⭐
cuda·ncu·nsight compute
论文复现现场15 天前
MiniCPM-o 4.5 需要多少显存?RTX 3090 24GB 的 BF16、AWQ、GGUF 部署边界与验收方法
cuda·多模态大模型·显存优化·rtx3090·minicpm-o
qq_1998868716 天前
第8板块·第2节:统一内存的高级特性与性能调优
c++·人工智能·gpu算力·cuda
熊明才16 天前
WSL2 网络突然瘫痪(Network is unreachable / 没有 eth0)最短修复指南(2026年9月20日亲测可用)
linux·windows·wsl2