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

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 的官方文档或社区论坛获取帮助。


http://www.kler.cn/a/546346.html

相关文章:

  • 【NLP251】命名实体识别常用模块(基于Transformer分类)
  • 从驾驶员到智能驾驶:汽车智能化进程中的控制与仿真技术
  • 【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter12-BOM
  • HBASE面试技巧
  • 洛谷 acwing刷题 有关图的存储形式和djstra算法的例题
  • C语言进阶习题(4结构体)【1】通讯录的实现
  • 从无序到有序:上北智信通过深度数据分析改善会议室资源配置
  • 企业网站设计HTML源码模板
  • 【认证授权FAQ】HP Anyware LLS服务器常用命令
  • minio在上传pdf文件时设置Content-Type: application/pdf有什么作用
  • 硬件-电源-隔离与非隔离的区别
  • 如何评估云原生GenAI应用开发中的安全风险(上)
  • 寻找两个有序数组的中位数
  • 【OJ项目】深入剖析 JudgeServiceImpl 类:题目的判题逻辑详解
  • 基于javaweb的SpringBootoa办公自动化系统设计和实现(源码+文档+部署讲解)
  • 【油猴脚本/Tampermonkey】DeepSeek 服务器繁忙无限重试(20250214优化)
  • CZML 格式详解,javascript加载导出CZML文件示例
  • 图数据库neo4j进阶(一):csv文件导入节点及关系
  • Vue 2 — 配置请求转发
  • qt + opengl 给立方体增加阴影