当前位置: 首页 > news >正文

WSL Ubuntu 安装 CUDA 教程

WSL Ubuntu 安装 CUDA 教程

    • 1. 概述
    • 2. 准备工作
    • 3. 删除旧的 GPG 密钥
    • 4. 安装 CUDA Toolkit
      • 4.1 使用 WSL-Ubuntu 包安装(推荐)
    • 5. 设置环境变量
    • 6. 注意事项
    • 7. 参考链接
    • 8. 总结

1. 概述

随着 WSL 2 的推出,Windows 用户现在可以在 Windows 子系统 for Linux (WSL) 中运行 Linux 应用程序,并且 NVIDIA 已经为 WSL 2 提供了完整的 CUDA 支持。这意味着你可以在 WSL 2 环境中运行和开发 CUDA 应用程序,而无需修改代码。本文将详细介绍如何在 WSL Ubuntu 中安装 CUDA Toolkit,并避免常见的安装错误。

2. 准备工作

在开始安装之前,请确保你已经完成以下准备工作:

  1. 安装 WSL 2:确保你的 Windows 系统已经安装了 WSL 2,并且已经安装了 Ubuntu 发行版。
  2. 安装最新的 NVIDIA 驱动程序:确保你的 Windows 系统已经安装了最新的 NVIDIA GPU 驱动程序。WSL 2 中的 CUDA 支持依赖于 Windows 主机上的 NVIDIA 驱动程序。

3. 删除旧的 GPG 密钥

在安装 CUDA Toolkit 之前,建议先删除旧的 GPG 密钥,以避免潜在的冲突。你可以通过以下命令删除旧的 GPG 密钥:

sudo apt-key del 7fa2af80

4. 安装 CUDA Toolkit

4.1 使用 WSL-Ubuntu 包安装(推荐)

NVIDIA 提供了一个专门为 WSL-Ubuntu 设计的 CUDA Toolkit 安装包,该安装包不会覆盖 WSL 2 环境中已经映射的 NVIDIA 驱动程序。以下是安装步骤:

  1. 下载并安装 CUDA Toolkit

    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
    wget https://developer.download.nvidia.com/compute/cuda/12.8.0/local_installers/cuda-repo-wsl-ubuntu-12-8-local_12.8.0-1_amd64.deb
    sudo dpkg -i cuda-repo-wsl-ubuntu-12-8-local_12.8.0-1_amd64.deb
    sudo cp /var/cuda-repo-wsl-ubuntu-12-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
    sudo apt-get update
    sudo apt-get -y install cuda-toolkit-12-8
    
  2. 验证安装

    安装完成后,你可以通过以下命令验证 CUDA 是否安装成功:

    nvcc --version
    

    如果安装成功,你应该能够看到 CUDA 编译器的版本信息。

  3. 检查 CUDA 版本信息

    你还可以通过以下命令查看详细的 CUDA 版本信息:

    cat /usr/local/cuda/version.json
    

    该命令会输出一个 JSON 文件,其中包含了 CUDA 及其相关组件的版本信息。例如:

    {
       "cuda" : {
          "name" : "CUDA SDK",
          "version" : "12.8.0"
       },
       "cuda_cccl" : {
          "name" : "CUDA C++ Core Compute Libraries",
          "version" : "12.8.55"
       },
       "cuda_cudart" : {
          "name" : "CUDA Runtime (cudart)",
          "version" : "12.8.57"
       },
       "cuda_cuobjdump" : {
          "name" : "cuobjdump",
          "version" : "12.8.55"
       },
       "cuda_cupti" : {
          "name" : "CUPTI",
          "version" : "12.8.57"
       },
       "cuda_cuxxfilt" : {
          "name" : "CUDA cu++ filt",
          "version" : "12.8.55"
       },
       "cuda_demo_suite" : {
          "name" : "CUDA Demo Suite",
          "version" : "12.8.55"
       },
       "cuda_gdb" : {
          "name" : "CUDA GDB",
          "version" : "12.8.55"
       },
       "cuda_nsight" : {
          "name" : "Nsight Eclipse Plugins",
          "version" : "12.8.55"
       },
       "cuda_nvcc" : {
          "name" : "CUDA NVCC",
          "version" : "12.8.61"
       },
       "cuda_nvdisasm" : {
          "name" : "CUDA nvdisasm",
          "version" : "12.8.55"
       },
       "cuda_nvml_dev" : {
          "name" : "CUDA NVML Headers",
          "version" : "12.8.55"
       },
       "cuda_nvprof" : {
          "name" : "CUDA nvprof",
          "version" : "12.8.57"
       },
       "cuda_nvprune" : {
          "name" : "CUDA nvprune",
          "version" : "12.8.55"
       },
       "cuda_nvrtc" : {
          "name" : "CUDA NVRTC",
          "version" : "12.8.61"
       },
       "cuda_nvtx" : {
          "name" : "CUDA NVTX",
          "version" : "12.8.55"
       },
       "cuda_nvvp" : {
          "name" : "CUDA NVVP",
          "version" : "12.8.57"
       },
       "cuda_opencl" : {
          "name" : "CUDA OpenCL",
          "version" : "12.8.55"
       },
       "cuda_sanitizer_api" : {
          "name" : "CUDA Compute Sanitizer API",
          "version" : "12.8.55"
       },
       "libcublas" : {
          "name" : "CUDA cuBLAS",
          "version" : "12.8.3.14"
       },
       "libcufft" : {
          "name" : "CUDA cuFFT",
          "version" : "11.3.3.41"
       },
       "libcufile" : {
          "name" : "GPUDirect Storage (cufile)",
          "version" : "1.13.0.11"
       },
       "libcurand" : {
          "name" : "CUDA cuRAND",
          "version" : "10.3.9.55"
       },
       "libcusolver" : {
          "name" : "CUDA cuSOLVER",
          "version" : "11.7.2.55"
       },
       "libcusparse" : {
          "name" : "CUDA cuSPARSE",
          "version" : "12.5.7.53"
       },
       "libnpp" : {
          "name" : "CUDA NPP",
          "version" : "12.3.3.65"
       },
       "libnvfatbin" : {
          "name" : "Fatbin interaction library",
          "version" : "12.8.55"
       },
       "libnvjitlink" : {
          "name" : "JIT Linker Library",
          "version" : "12.8.61"
       },
       "libnvjpeg" : {
          "name" : "CUDA nvJPEG",
          "version" : "12.3.5.57"
       },
       "nsight_compute" : {
          "name" : "Nsight Compute",
          "version" : "2025.1.0.14"
       },
       "nsight_systems" : {
          "name" : "Nsight Systems",
          "version" : "2024.6.2.225"
       },
       "nvidia_fs" : {
          "name" : "NVIDIA file-system",
          "version" : "2.24.2"
       }
    }
    

    如果能够看到类似的输出,说明 CUDA 已经成功安装。

5. 设置环境变量

为了确保系统能够正确识别 CUDA 的路径,你需要设置以下环境变量。将以下内容添加到你的 ~/.bashrc 文件中:

export CUDA_HOME="/usr/local/cuda-12.8"
export CuDNN_HOME="/usr/local/cuda-12.8/include"
export PATH="/usr/local/cuda-12.8/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-12.8/lib64:$LD_LIBRARY_PATH"

添加完成后,运行以下命令使配置生效:

source ~/.bashrc

6. 注意事项

  • 不要安装 NVIDIA Linux 驱动程序:WSL 2 环境中的 CUDA 驱动程序是通过 Windows 主机上的 NVIDIA 驱动程序映射的,因此不要在 WSL 2 中安装任何 NVIDIA Linux 驱动程序。
  • 避免覆盖驱动程序:默认的 CUDA Toolkit 安装包可能会包含驱动程序,因此在安装时务必使用专门为 WSL-Ubuntu 设计的安装包,以避免覆盖 WSL 2 中的 NVIDIA 驱动程序。

7. 参考链接

  • NVIDIA CUDA on WSL 2 用户指南
  • CUDA Toolkit 下载页面
  • WSL 2 での CUDA 環境構築 (Qiita)

8. 总结

通过本文的步骤,你应该已经成功在 WSL Ubuntu 中安装了 CUDA Toolkit,并且可以开始开发和运行 CUDA 应用程序。WSL 2 的 CUDA 支持为开发者提供了一个便捷的环境,使得在 Windows 系统上进行 CUDA 开发变得更加容易。如果你在安装过程中遇到任何问题,可以参考 NVIDIA 的官方文档或社区论坛获取帮助。

相关文章:

  • 嵌入式AI革命:DeepSeek开源如何终结GPU霸权,开启单片机智能新时代?
  • 芯谷 D2761:专为扬声器保护设计的音频限幅器
  • 网络将内网服务转换到公网上
  • vue学习10
  • Windows 图形显示驱动开发-WDDM 2.0 -GpuMmu 寻址方式
  • 蓝桥杯单片机组第十三届初赛试题-程序题(第2批)
  • 我用AI做数据分析之数据清洗
  • 【python】连接Jira获取token以及jira对象
  • C++-----------酒店客房管理系统
  • Maven下载安装IDEA使用MavenJava在pom.xml配置教程
  • Python--多线程
  • 探索ChatGPT背后的前端黑科技
  • 机器学习数学基础:26.随机变量分布详解
  • Python用PyMC3马尔可夫链蒙特卡罗MCMC对疾病症状数据贝叶斯推断
  • 一阶微分方程的解法与通解式全解析
  • gitlab无法登录问题
  • 周考考题(学习自用)
  • 【webview Android】视频获取首帧为封面
  • Niginx笔记
  • 本地部署DeepSeek(Mac版本,带图形化操作界面)
  • 南昌网站建设品牌/写软文赚钱的平台都有哪些
  • 长沙 直播网站建设/seo技术学院
  • 江宁网站建设要多少钱/东莞做网站推广
  • 网站的稳定性/广告媒体资源平台
  • 最新军事动态最新消息/大丰seo排名
  • aspcms网站地图生成/谷歌google play官网下载