Linux 环境下 NCCL - tests 测试全流程深度解析与实践指南

在深度学习与高性能计算领域,多 GPU 之间高效的数据通信至关重要。NVIDIA Collective Communications Library(NCCL)正是为此而生,它提供了优化的多 GPU 集合通信原语,极大提升分布式训练效率。而 nccl-tests 作为官方提供的测试套件,能帮助开发者精准评估 NCCL 的性能表现。本文将基于 Linux 环境,为你详细拆解 nccl-tests 测试的全流程。

一、测试前的准备工作

1. 安装 CUDA

CUDA 是 NVIDIA 推出的并行计算平台和编程模型,NCCL 依赖 CUDA 运行。开发者可前往 NVIDIA 官方网站(https://developer.nvidia.com/cuda-downloads?target_os=Linux),根据自己的 Linux 发行版、版本号、架构、驱动版本等信息,选择对应的 CUDA 安装包。安装完成后,CUDA 相关工具和库将为后续的 GPU 计算与 NCCL 测试提供底层支持。

2. 查看 GPU 拓扑

通过 nvidia - smi topo -m 命令,能够获取 GPU 之间的连接拓扑信息。该拓扑信息展示了 GPU 与 GPU 之间、GPU 与 CPU 内存、GPU 与高速缓存等组件之间的连接关系和带宽情况。了解 GPU 拓扑有助于在后续测试和实际应用中,合理分配任务,优化通信路径,充分发挥 GPU 集群的性能。

3. 安装 NCCL

  • 获取源:使用 wget 命令下载 NCCL 的源文件 cuda - keyring_1.0 - 1_all.deb,该文件包含了软件源的密钥,用于验证软件包的完整性和来源合法性。下载完成后,通过 dpkg -i 命令安装密钥。

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-keyring_1.0-1_all.deb

dpkg -i cuda-keyring_1.0-1_all.deb

  • 更新软件源:执行 apt update 命令,使系统获取最新的软件包列表信息。
  • 删除已有 NCCL(如需):若系统中已安装旧版本的 NCCL,可使用 apt - get remove --purge 命令彻底删除相关软件包及其配置文件,避免新旧版本冲突。

apt-get remove --purge libnccl2 libnccl-dev

  • 安装依赖apt install build - essential devscripts debhelper fakeroot - y 命令用于安装编译和构建软件包所需的基础工具和辅助工具。
  • 安装 NCCL:通过 apt install 命令安装 NCCL 的运行库 libnccl2 和开发库 libnccl - dev。安装完成后,可使用 dpkg - l | grep nccl 查看 NCCL 版本信息,使用 dpkg - L libnccl2 | grep.so 查看 NCCL 库文件所在位置。

apt install libnccl2 libnccl-dev -y

dpkg -l | grep nccl

dpkg -L libnccl2 | grep .so

二、编译 nccl-tests 库

1. 克隆库文件

使用 git clone 命令将 nccl-tests 库从 GitHub 仓库克隆到本地,并进入该目录。

git clone https://github.com/NVIDIA/nccl-tests.git

cd nccl-tests

2. 执行编译

通过 make clean && make -j 命令进行编译,同时指定 CUDA_HOME 和 NCCL_HOME 路径。make clean 用于清除之前的编译文件,make -j 中的 -j 参数可利用多核并行编译,加快编译速度。编译成功后,会生成 build 文件夹,其中包含 all_reduce_perf 等多种可执行文件,这些文件将用于后续的性能测试。

make clean && make -j \

  CUDA_HOME=/usr/local/cuda \

  NCCL_HOME=/usr/lib

编译完成后,可通过 ./build/all_reduce_perf --help 命令查看测试工具的使用帮助信息,了解各参数的含义和用法。

三、单节点测试

单节点测试主要用于评估单个服务器上多 GPU 之间的 NCCL 性能。以 8 张 GPU 为例,执行以下命令:

./build/all_reduce_perf \

  --minbytes 8 \

  --maxbytes 256M \

  --stepfactor 2 \

  --ngpus 8

在这个指令中,--ngpus 8 表示使用 8 张 GPU 执行 all_reduce 操作;--minbytes 8 和 --maxbytes 256M 限定了测试数据量的范围,从 8 字节到 256 兆字节;--stepfactor 2 表示数据量每次以翻倍的方式递增。测试完成后,重点关注算法带宽(algbw)和总线带宽(busbw)指标,通常算法带宽大于 6.7GB/s、总线带宽大于 11.7GB/s 左右视为性能良好。

四、多节点测试

多节点测试模拟了在分布式环境下,多个服务器之间 GPU 的通信性能。在进行多节点测试前,需要先安装 open - mpi

1. 安装 open-mpi

使用 apt install 命令安装 openmpi - bin 和 libopenmpi - dev 软件包,分别提供了 open - mpi 的可执行程序和开发库。安装完成后,需要在 .bashrc 文件中配置环境变量,将 open - mpi 的可执行文件路径和库文件路径添加到系统路径中,并使用 source 命令使配置生效。最后通过 mpirun --version 验证安装是否成功。

apt install openmpi-bin libopenmpi-dev -y

vim ~/.bashrc

# 添加以下内容

export PATH=/usr/local/mpich/bin:$PATH

export LD_LIBRARY_PATH=/usr/local/mpich/lib:$LD_LIBRARY_PATH

source ~/.bashrc

mpirun --version

2. 执行测试

假设存在两台机器,每台机器配备 8 张 GPU 卡,在两台机器上分别执行以下命令:

# 第一台

mpirun \

  -np 16 \

  -H 10.157.104.125:8,10.157.104.126:8 \

  --allow-run-as-root \

  ./build/all_reduce_perf \

  -b 8 \

  -e 512M \

  -f 2 \

  -g 1

# 第二台

mpirun \

  -np 16 \

  -H 10.157.104.126:8,10.157.104.125:8 \

  --allow-run-as-root \

  ./build/all_reduce_perf \

  -b 8 \

  -e 512M \

  -f 2 \

  -g 1

mpirun 是启动和管理 MPI 程序的工具。-np 16 指定总共运行 16 个进程(对应两台机器共 16 张 GPU);-H 后跟随主机列表及每台主机使用的 GPU 数量;--allow-run-as-root 允许以 root 用户身份运行(需谨慎使用);-b-e-f-g 等参数与单节点测试中的类似参数作用相同,用于设置数据量范围、递增因子等。

通过完整的 nccl-tests 测试流程,开发者能够全面掌握 NCCL 在不同环境下的性能表现,从而为深度学习分布式训练等场景优化配置、提升系统整体效率。无论是单节点的 GPU 协同性能,还是多节点的分布式通信效率,这些测试结果都能为实际应用提供有力的数据支撑。在实际应用中,建议根据测试结果不断调整参数和配置,充分释放 NCCL 的潜力,推动高性能计算任务高效运行。

最后小小打个广告,胜算云Router已经上线运行,一键调用国内外多种大模型,轻松方便稳定高效。欢迎大家关注“公众号-胜算云”或者直接登录“胜算云Router”官网体验使用!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值