👉点击这里申请火山引擎VIP帐号,立即体验火山引擎产品>>>
关键组件
关键组件 | 说明 |
实例 |
|
NCCL | NCCL(Nvidia Collective Communication Library)是NVIDIA的集合通信库,支持安装在单个节点或多个节点的大量GPU卡上,实现多个GPU的快速通信。它提供了一系列高度优化的通信原语,如allreduce(全规约)、reduce-scatter(分散规约)、allgather(全收集)等,这些原语能够帮助并行计算任务在多个GPU间高效地同步和交换数据。 注意 使用NCCL Tuner Plugin必须确保NCCL版本不低于2.19,本文以NCCL2.20.5和 2.21.5为例。 |
NCCL Tuner Plugin | 用于优化NCCL性能的插件。 |
Git | 分布式版本控制系统。本文使用Git 2.25.1版本。 |
OpenMPI | OpenMPI是一个开源的 Message Passing Interface 实现,是一种高性能消息传递库,能够结合整个高性能计算社区的专业知识、技术和资源,建立现有的最佳MPI库。OpenMPI在系统和软件供应商、应用开发者和计算机科学研究人员中有广泛应用。 |
NCCL Tests | NCCL Tests是一个测试工具集,可以用来评估NCCL的运行性能和正确性。 |
准备环境
已拥有一台GPU计算型实例,本文所示配置如下:
规格:ecs.gni3cg.45xlarge
镜像:Ubuntu 20.04
GPU驱动版本:535.154.05
执行nvcc -V 命令查看CUDA版本。若未安装,请安装CUDA。
执行python3 --version命令查看Python版本。若未安装,请安装Python。
操作步骤
步骤一:安装NCCL和NCCL Tuner Plugin
登录实例。
安装NCCL和NCCL Tuner Plugin。
方式一:执行以下命令,直接安装libnccl.so.2.20.5和libnccl-tuner.so。
#!/bin/bashset -exwget -c https://iaas-perf-beijing.tos-cn-beijing.volces.com/nccl/plugin/libnccl-tuner.somv libnccl-tuner.so /usr/local/libwget -c https://iaas-perf-beijing.tos-cn-beijing.volces.com/nccl/libnccl.so.2.20.5mv libnccl.so.2.20.5 /usr/local/lib/python3.10/dist-packages/nvidia/nccl/libln -sf /usr/local/lib/python3.10/dist-packages/nvidia/nccl/lib/libnccl.so.2.20.5 /usr/local/lib/python3.10/dist-packages/nvidia/nccl/lib/libnccl.so.2
方式二:如需安装其他版本的NCCL,请参考以下操作,本文以2.21.5为例。
执行以下命令,安装libnccl-tuner.so。
wget -c https://iaas-perf-beijing.tos-cn-beijing.volces.com/nccl/plugin/libnccl-tuner.somv libnccl-tuner.so /usr/local/lib
安装Git。
apt updateapt -y install git
执行以下命令,安装NCCL并进行编译。
git clone -b v2.21.5-1 https://github.com/NVIDIA/ncclcd ncclmake -j src.buildmake install
步骤二:安装OpenMPI
执行以下命令,安装OpenMPI。
sudo apt updatesudo apt -y install openmpi-bin
检查是否正常安装。
mpiexec --version
步骤三:使用NCCL Tuner Plugin
在NVIDIA nccl-tests中下载nccl-tests软件包。
git clone https://github.com/NVIDIA/nccl-tests.git
执行以下命令,编译nccl-tests。
cd nccl-testsmake
执行以下脚本加载优化算法。
mpirun --allow-run-as-root -np 8 -x NCCL_DEBUG=INFO -x NCCL_P2P_LEVEL=SYS -x NCCL_TUNER_PLUGIN=/usr/local/lib/libnccl-tuner.so ./build/all_reduce_perf -b 8 -e 1G -f 2 -g 1
性能示例
INSTANCE_TYPE | gni3cg | ||
data_size (B) | nccl 2.18.1 | nccl 2.19.3 | nccl 2.19.3 Tunner |
8 | 0 | 0 | 0 |
16 | 0 | 0 | 0 |
32 | 0 | 0 | 0 |
64 | 0.01 | 0.01 | 0.01 |
128 | 0.02 | 0.02 | 0.02 |
256 | 0.03 | 0.03 | 0.03 |
512 | 0.07 | 0.07 | 0.07 |
1024 | 0.13 | 0.12 | 0.130 |
2048 | 0.23 | 0.23 | 0.230 |
4096 | 0.43 | 0.44 | 0.440 |
8192 | 0.86 | 0.86 | 0.860 |
16384 | 1.67 | 1.67 | 1.660 |
32768 | 3.01 | 3.05 | 3.050 |
65536 | 5.62 | 5.61 | 5.650 |
131072 | 2.99 | 2.81 | 8.220 |
262144 | 4.7 | 4.55 | 8.970 |
524288 | 7.39 | 7.12 | 14.260 |
1048576 | 12.91 | 12.6 | 16.630 |
2097152 | 17.27 | 17.12 | 18.220 |
4194304 | 20.24 | 20.07 | 20.020 |
8388608 | 21.14 | 20.96 | 21.090 |
16777216 | 20.1 | 20.08 | 20.080 |
33554432 | 20.02 | 20.04 | 20.060 |
67108864 | 20.11 | 20.11 | 20.100 |
134217728 | 20.16 | 20.17 | 20.170 |
268435456 | 20.21 | 20.21 | 20.240 |
536870912 | 20.27 | 20.25 | 20.280 |
1073741824 | 20.32 | 20.31 | 20.320 |