Ubuntu 24.04 双 GPU 环境配置:从零到 NCCL 成功运行的完整指南

好的,非常乐意为你效劳。这是一份根据我们整个排错过程整理出的完整操作文档。

这份文档记录了从配置基础环境到解决一系列复杂依赖问题,最终成功运行 NCCL 测试的全过程。你可以直接将它保存下来。


Ubuntu 24.04 双 GPU 环境配置:从零到 NCCL 成功运行的完整指南

文档目标: 在一台装有两块 NVIDIA GPU (例如 Tesla T10) 的 Ubuntu 24.04 服务器上,正确配置 NVIDIA 驱动、CUDA Toolkit 12.5 以及 NCCL 库,并最终通过 nccl-tests 验证多 GPU 间通信正常。

核心问题背景: 此过程中的主要挑战来自于软件包版本的不匹配,特别是 CUDA Toolkit 版本与 NCCL 库版本之间的不兼容,以及 apt 包管理器在处理多个软件源时的优先级混乱问题。


第一阶段:安装 NVIDIA 驱动和 CUDA Toolkit

此阶段的目标是让系统能正确识别 GPU,并安装 nvcc 编译器。

  1. 安装 CUDA Toolkit 12.5:
    我们通过 apt 安装由 NVIDIA 官方打包的 cuda-toolkit-12-5

    # (此步骤已在你之前的操作中完成)
    # 例如:sudo apt install cuda-toolkit-12-5
  2. 配置环境变量:
    新安装的 CUDA 工具链需要被添加到系统的 PATH 中,否则终端将找不到 nvcc 等命令。

    • 打开 shell 配置文件 .bashrc

      nano ~/.bashrc
    • 在文件末尾添加以下两行,指定 CUDA 的可执行文件和库文件路径:

      # NVIDIA CUDA Toolkit
      export PATH=/usr/local/cuda-12.5/bin${PATH:+:${PATH}}
      export LD_LIBRARY_PATH=/usr/local/cuda-12.5/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
    • 使配置立即生效:

      source ~/.bashrc
  3. 验证:

    nvcc -V

    此时应能看到 CUDA 12.5 的版本信息,证明此阶段成功。


第二阶段:解决 NCCL 版本不匹配的终极方案

在尝试了多种方法(包括使用 apt 安装、手动复制文件等)后,我们发现最可靠、最能保证版本匹配的方案是:从 NCCL 源码编译并打包成适用于当前系统的 .deb 文件,然后进行安装。

这个方法可以彻底绕过 apt 仓库优先级混乱的问题。

  1. 环境清理(非常重要):
    确保系统中没有任何旧的、由 apt 安装的 NCCL 库残留,避免冲突。

    # 彻底卸载,--purge 会删除所有相关配置文件
    sudo apt-get remove --purge libnccl-dev libnccl2
    
    # 更新 apt 缓存,确保状态干净
    sudo apt-get update
  2. 准备 NCCL 源码:

    • 从 GitHub 克隆 NCCL 的官方源代码仓库。
      git clone https://github.com/NVIDIA/nccl.git
      cd nccl
  3. 安装编译依赖:
    为了能将源码打包成 Debian (.deb) 包,需要安装一些开发工具。

    sudo apt-get install build-essential devscripts
  4. 编译并打包 NCCL:
    进入 nccl 源码根目录,执行 make 命令来构建 .deb 包。这个命令会自动处理编译、打包等所有事务。

    # 在 nccl/ 源码目录下执行
    make pkg.debian.build

    这个过程会持续几分钟。完成后,你会在 build/pkg/deb/ 目录下找到生成的两个 .deb 文件。

  5. 安装你亲手制作的 .deb 包:
    使用 dpkg 命令直接安装本地的 .deb 文件。这是确保版本正确的关键一步。

    # 同时安装 runtime 库和 development 开发包
    # 路径和版本号请根据你实际生成的文件名调整
    sudo dpkg -i build/pkg/deb/libnccl2_*.deb build/pkg/deb/libnccl-dev_*.deb
  6. 验证安装结果:
    使用 apt-cache policy 命令检查当前系统中 libnccl-dev 的状态。

    apt-cache policy libnccl-dev

    此时,输出结果中已安装的版本应明确显示为你刚刚构建的、版本号中带有 +cuda12.5 的那一个。

    成功标志:

    libnccl-dev:
      已安装:2.27.6-1+cuda12.5
      ...
     *** 2.27.6-1+cuda12.5 100
            100 /var/lib/dpkg/status 

第三阶段:最终验证 NCCL 功能

现在,你的系统拥有了版本完美匹配的驱动、CUDA Toolkit 和 NCCL。我们最后来运行 nccl-tests 进行最终验证。

  1. 准备 nccl-tests
    如果还没有,从 GitHub 克隆它。

    # 回到主目录
    cd ~
    git clone https://github.com/NVIDIA/nccl-tests.git
    cd nccl-tests
  2. 编译 nccl-tests
    使用 make 命令进行编译。由于上一步已正确安装 libnccl-dev,编译过程会顺利找到 nccl.h 头文件并成功链接 libnccl.so 库。

    # 清理一下可能存在的旧编译产物
    make clean
    
    # 编译
    make -j $(nproc)
  3. 运行测试!
    执行 all_reduce_perf 测试,指定使用 2 个 GPU。

    ./build/all_reduce_perf -b 8M -e 128M -f 2 -g 2
  4. 查看最终结果:
    终端上会输出一个性能数据表格,显示了不同数据块大小下的通信带宽,并且没有任何错误信息。

    成功标志:

    #       size         count      type   redop     time   algbw   busbw  error     time   algbw   busbw  error
    #        (B)    (elements)                       (us)  (GB/s)  (GB/s)            (us)  (GB/s)  (GB/s)       
         8388608       2097152     float     sum   2973.5    2.82    2.82  0e+00   2975.6    2.82    2.82  0e+00
        16777216       4194304     float     sum   5920.5    2.83    2.83  0e+00   5917.2    2.84    2.84  0e+00
        ...

结论: 至此,你的双 GPU 环境已完美配置,可以胜任任何需要多 GPU 通信的计算任务。

暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇