利用 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.04VERSION2。若为 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 天前
WSL2 中将 Ubuntu 20.04 升级到 22.04 的详细步骤
深度学习·ubuntu·wsl2
人工智能训练4 天前
在Windows系统Docker中使用wsl2、容器、windows文件路径三种不同挂载方式的区别和性能差异
运维·服务器·人工智能·windows·docker·容器·wsl2
fpcc4 天前
并行编程实战——CUDA编程的流的优先级
c++·cuda
碧海潮生_CC5 天前
【CUDA笔记】03 CUDA GPU 架构与一般的程序优化思路(下)
笔记·架构·cuda
中医正骨葛大夫7 天前
一文解决如何在Pycharm中创建cuda深度学习环境?
pytorch·深度学习·pycharm·软件安装·cuda·anaconda·配置环境
lvxiangyu1111 天前
wsl2 ubuntu24 opengl 无法使用nvidia显卡 解决方法记录
wsl·cuda·opengl
李昊哲小课12 天前
wsl ubuntu24.04 cuda13 cudnn9 pytorch 显卡加速
人工智能·pytorch·python·cuda·cudnn
wanzhong233313 天前
CUDA学习2-CPU和GPU的性能优化
深度学习·gpu·cuda·高性能计算
C2H5OH66613 天前
Podman讲解
docker·centos·vmware·podman·wsl2·sqlbot
赴遥15 天前
WSL2下Ubuntu20.04图形化环境配置
ubuntu·wsl2·xfce4·图形化页面