NCCL环境搭建

GPU云服务器 GPU

  • 线上GPU驱动选装发布记录
  • 快速入门
  • 产品定价
  • 功能发布记录
  • 产品描述
    • 产品优势
    • 产品介绍
    • 应用场景
    • GPU卡详情
    • 实例规格
      • GPU渲染型
      • 弹性高性能计算集群
      • GPU计算型
      • GPU实例命名规则
  • AI加速套件AIAK
    • AIAK推理加速组件
  • 典型实践
    • 基于Nvidia Clara Parabricks的基因测序加速
    • 基于GPU云服务器部署NIM
    • NCCL环境搭建
    • 使用TensorRT加速深度学习推理
    • 使用Nsight工具分析优化应用程序
    • 使用RAPIDS加速数据科学任务
    • 部署满血版DeepSeek-R1模型SGlangServer(单机&多机部署&参数建议)
    • 搭建PaddlePaddle环境完成文本情感分类
    • 基于GPU实例部署NGC环境
  • 操作指南
    • 镜像使用
    • 查看GPU云服务器监控
    • 申请GPU物理服务器
    • 创建GPU实例
    • 数据上传
    • 管理GPU实例
    • 安装GPU驱动
      • 为GPU实例安装GRID驱动(Windows)
      • 手动安装GPU驱动以及Cuda(Windows)
      • 手动安装GPU驱动以及Cuda(Linux)
      • 自动安装GPU驱动及CUDA(推荐)
  • 常见问题
    • 如何检测RDMA常见故障
    • 一般类问题
    • 如何检测GPU常见故障
所有文档
menu
没有找到结果,请重新输入

GPU云服务器 GPU

  • 线上GPU驱动选装发布记录
  • 快速入门
  • 产品定价
  • 功能发布记录
  • 产品描述
    • 产品优势
    • 产品介绍
    • 应用场景
    • GPU卡详情
    • 实例规格
      • GPU渲染型
      • 弹性高性能计算集群
      • GPU计算型
      • GPU实例命名规则
  • AI加速套件AIAK
    • AIAK推理加速组件
  • 典型实践
    • 基于Nvidia Clara Parabricks的基因测序加速
    • 基于GPU云服务器部署NIM
    • NCCL环境搭建
    • 使用TensorRT加速深度学习推理
    • 使用Nsight工具分析优化应用程序
    • 使用RAPIDS加速数据科学任务
    • 部署满血版DeepSeek-R1模型SGlangServer(单机&多机部署&参数建议)
    • 搭建PaddlePaddle环境完成文本情感分类
    • 基于GPU实例部署NGC环境
  • 操作指南
    • 镜像使用
    • 查看GPU云服务器监控
    • 申请GPU物理服务器
    • 创建GPU实例
    • 数据上传
    • 管理GPU实例
    • 安装GPU驱动
      • 为GPU实例安装GRID驱动(Windows)
      • 手动安装GPU驱动以及Cuda(Windows)
      • 手动安装GPU驱动以及Cuda(Linux)
      • 自动安装GPU驱动及CUDA(推荐)
  • 常见问题
    • 如何检测RDMA常见故障
    • 一般类问题
    • 如何检测GPU常见故障
  • 文档中心
  • arrow
  • GPU云服务器GPU
  • arrow
  • 典型实践
  • arrow
  • NCCL环境搭建
本页目录
  • 概览
  • 需求场景
  • 配置步骤
  • 环境准备
  • 环境变量设置
  • NCCL测试
  • 相关产品

NCCL环境搭建

更新时间:2025-08-21

概览

NCCL是NVIDIA面向GPU提供的集合通信库,能实现Collective通信和点对点通信,是在大规模AI训练中必备的组件。结合云上的弹性高性能计算集群EHC GPU实例,可极大加速训练速度。本文将介绍如何准备在实例中测试NCCL所需要的必备环境。

需求场景

  • 大规模人工智能训练
  • 高性能计算HPC

配置步骤

环境准备

  1. 安装GPU运行必备环境,包括GPU驱动等,可参考支持自动安装GPU环境的创建GPU实例或者手动安装GPU驱动。
  2. 安装OFED驱动。百度智能云提供的GPU镜像已包含OFED驱动,无需手动安装。如您使用其他镜像,则可以访问OFED下载链接下载系统环境对应的OFED版本,建议您下载LTS 5.4-3.1.0版本。 如您使用CentOS 7u8或者CentOS 8u4,则需要额外下载依赖包

CentOS 7u8:

Plain Text
1yum install createrepo
2yum install elfutils-libelf-devel python-devel redhat-rpm-config rpm-build libtool

CentOS 8u4:

Plain Text
1yum install createrepo
2yum install kernel-rpm-macros python36 elfutils-libelf-devel python36-devel gdb-headless rpm-build libtool gcc

解压驱动安装包后,在安装目录执行以下命令。

Plain Text
1./mlnxofedinstall --without-fw-update  --add-kernel-support --skip-distro-check
  1. 使能GPU Direct RDMA需要加载nv_peer_mem服务,NVIDIA在驱动版本470已预装了该组件,可直接按以下步骤加载相应模块。
Plain Text
1modprobe nvidia_peermem
2# 可通过 lsmod|grep nvidia 检查

加载完后,可直接跳转至环境变量设置步骤。

  1. 如果您使用470以下的版本,则需要手动下载并安装相应模块,下载及编译安装方法如下。
Plain Text
1git clone https://github.com/Mellanox/nv_peer_memory.git
2# 编译并安装 nv_peer_mem.ko
3cd nv_peer_memory && make
4cp nv_peer_mem.ko /lib/modules/$(uname -r)/kernel/drivers/video
5depmod -a
6modprobe nv_peer_mem
7# 可通过 lsmod|grep nv_peer_mem 检查
8service nv_peer_mem start
  1. ACSCtl 检查方法。
Plain Text
1lspci -vvv|grep ACSCtl:|grep SrvValid+

如果没有输出,则表示配置正常。如果有输出,则执行以下指令。

Plain Text
1for pdev in `lspci -vvv|grep -E "^[a-f]|^[0-9]|ACSCtl"|grep ACSCtl -B1|grep -E "^[a-
2f]|^[0-9]"|awk '{print $1}'` 
3do
4    setpci -s $pdev ECAP_ACS+06.w=0000 
5done

执行完后可再执行检查方法验证。

环境变量设置

环境变量 解释 设置
NCCL_SOCKET_IFNAME 指定用于通信的IP接口 设置成主机的host TCP/IP网卡,可通过ip a查找,默认是bond0
NCCL_IB_GID_INDEX 设置RDMA通信优先级 通过show_gids确认对应的IB网卡gid index
NCCL_IB_DISABLE 是否关闭IB通信 设置成1来启用TCP通信,一般需要设置成0或者默认不动
NCCL_IB_HCA 环境中的IB网卡 例如export NCCL_IB_HCA=mlx5_2,mlx5_3,mlx5_4,mlx5_5,可以通过ibstat查看IB网卡名
NCCL_DEBUG 从NCCL显示的调试信息 可设置为export NCCL_DEBUG=INFO

NCCL测试

Plain Text
1cd /home
2mkdir nccl-tool && cd nccl-tool 
3mkdir dependency
  1. 拉取并编译openmpi。
Plain Text
1wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.3.tar.gz
2tar -xzf openmpi-4.1.3.tar.gz && rm -rf openmpi-4.1.3.tar.gz && cd openmpi-4.1.3 ./configure --prefix=/home/nccl-tool/dependency/openmpi
3make -j && make install

如果上述报错/usr/bin/ld -lnuma,则采取以下指令。

Plain Text
1apt-get install numa
2ln -s /usr/lib/x86_64-linux-gnu/libnuma.so.1 /usr/lib/x86_64-linux-gnu/libnuma.so
  1. 验证openmpi。
Plain Text
1export PATH=/home/nccl-tool/dependency/openmpi/bin:$PATH
2export LD_LIBRARY_PATH=/home/nccl- tool/dependency/openmpi/lib:$LD_LIBRARY_PATH
3ompi_info 
4## 输出一大串版本号则正常
  1. 拉取2.12版本的nccl库。
Plain Text
1cd /home/nccl-tool
2git clone -b v2.12.12-1 https://github.com/NVIDIA/nccl.git
3cd nccl
4make -j src.lib PREFIX=/home/nccl-tool/dependency/nccl
5make install PREFIX=/home/nccl-tool/dependency/nccl
6# 通过 ls /home/nccl-tool/dependency/nccl/lib 查看libnccl.so库
  1. 拉取nccl-tests测试脚本。
Plain Text
1cd /home/nccl-tool
2git clone https://github.com/NVIDIA/nccl-tests.git
3cd nccl-tests
4make -j MPI=1 MPI_HOME=/home/nccl-tool/dependency/openmpi CUDA_HOME=/usr/local/cuda NCCL_HOME=/home/nccl-tool/dependency/nccl BUILDDIR=/home/nccl-tool/bin
5# 分发工具包到其它实例上,下列的xxxx使用其他实例内网ip替换
6scp -r /home/nccl-tool/bin root@${xxxx}:/home/nccl-tool 
7scp -r /home/nccl-tool/dependency root@${xxxx}:/home/nccl-tool
  1. 建立实例之间的的ssh互信。
Plain Text
1ssh-keygen
2ssh-copy-id -i ~/.ssh/id_rsa.pub ${ip2}
3# 新建文件hostfile用于 mpirun 识别多机,将需要互联的实例VPC IP分行写入 hostfile 文件中
4vim hostfile 
5# 测试mpi,输出2台实例的hostname
6mpirun --prefix /home/nccl-tool/dependency/openmpi -np 2 --allow-run-as-root -- hostfile hostfile hostname
  1. NCCL all_reduce测试。
Plain Text
1NCCL_HOME=/home/nccl-tool/dependency/nccl
2CUDA_HOME=/usr/local/cuda
3MPI_HOME=/home/nccl-tool/dependency/openmpi
4export LD_LIBRARY_PATH=${NCCL_HOME}/lib:${CUDA_HOME}/lib64:${MPI_HOME}/lib:${LD_LIBRA
5RY_PATH}
6mpirun --allow-run-as-root \
7--prefix /home/nccl-tool/dependency/openmpi \ 
8-np 2 \
9--hostfile ./hostfile \
10-x NCCL_DEBUG=INFO \
11-x NCCL_SOCKET_IFNAME=bond0 \
12-x LD_LIBRARY_PATH \
13-x PATH \
14-x NCCL_IB_GID_INDEX=0 \
15/home/nccl-tool/bin/all_reduce_perf -b 1024 -e 1G -f 2 -g 1 -t 8 -c 0 -n 20

得到回显结果如下。

Plain Text
1#                                                       out-of-place                       in-place
2#       size         count      type   redop     time   algbw   busbw  error     time   algbw   busbw  error
3#        (B)    (elements)                       (us)  (GB/s)  (GB/s)            (us)  (GB/s)  (GB/s)
4        1024           256     float     sum    44.40    0.02    0.04    N/A    43.90    0.02    0.04    N/A
5        2048           512     float     sum    45.19    0.05    0.08    N/A    45.04    0.05    0.09    N/A
6        4096          1024     float     sum    44.93    0.09    0.17    N/A    45.27    0.09    0.17    N/A
7        8192          2048     float     sum    47.20    0.17    0.33    N/A    46.98    0.17    0.33    N/A
8       16384          4096     float     sum    65.53    0.25    0.47    N/A    54.88    0.30    0.56    N/A
9       32768          8192     float     sum    364.6    0.09    0.17    N/A    117.5    0.28    0.52    N/A
10       65536         16384     float     sum    146.0    0.45    0.84    N/A    165.2    0.40    0.74    N/A
11      131072         32768     float     sum    155.2    0.84    1.58    N/A    183.7    0.71    1.34    N/A
12      262144         65536     float     sum    150.3    1.74    3.27    N/A    148.7    1.76    3.31    N/A
13      524288        131072     float     sum    172.0    3.05    5.72    N/A    183.8    2.85    5.35    N/A
14     1048576        262144     float     sum    204.6    5.13    9.61    N/A    203.5    5.15    9.66    N/A
15     2097152        524288     float     sum    271.8    7.72   14.47    N/A    272.0    7.71   14.46    N/A
16     4194304       1048576     float     sum    283.8   14.78   27.72    N/A    284.2   14.76   27.67    N/A
17     8388608       2097152     float     sum    317.0   26.47   49.62    N/A    306.3   27.39   51.35    N/A
18    16777216       4194304     float     sum    456.7   36.73   68.87    N/A    598.6   28.03   52.55    N/A
19    33554432       8388608     float     sum    788.1   42.58   79.84    N/A    798.7   42.01   78.77    N/A
20    67108864      16777216     float     sum   1232.4   54.45  102.10    N/A   1228.3   54.64  102.44    N/A
21   134217728      33554432     float     sum   2270.0   59.13  110.86    N/A   2547.1   52.69   98.80    N/A
22   268435456      67108864     float     sum   4609.7   58.23  109.19    N/A   4645.1   57.79  108.36    N/A
23   536870912     134217728     float     sum   8093.6   66.33  124.37    N/A   7971.2   67.35  126.28    N/A
24  1073741824     268435456     float     sum    15227   70.51  132.21    N/A    14959   71.78  134.59    N/A
25# Out of bounds values : 0 OK
26# Avg bus bandwidth    : 39.4978

相关产品

GPU云服务器

上一篇
基于GPU云服务器部署NIM
下一篇
使用TensorRT加速深度学习推理