在openmpi中使用ucx通信库组件

UCX是Unified Communication X的简称,主要提供RDMA通信的高级API以加速应用开发,在隐藏底层细节的同时还实现了一些优化和最佳实践以保持高性能和可扩展。

202507011017503685657615.pngOpenMPI是一个开源的消息传递接口(Message Passing Interface,MPI)的实现,用于并行计算。它允许多个计算节点之间进行通信和数据交换,从而实现分布式计算。

之前我们也编译安装过这两个组件,但是上次没有记录如何在openmpi中使用ucx作为主要通信库,需要修改一些配置。
之前的笔记可以查看这里:https://sulao.cn/post/1066
然后原来opemmpi的测试命令如下:

mpirun -np 8 \
-H 192.168.1.72:4,192.168.1.73:4 \
--allow-run-as-root -bind-to socket -map-by slot \
-x NCCL_DEBUG=INFO \
-x NCCL_ALGO=Ring \
-x NCCL_MAX_NCHANNELS=16 \
-x NCCL_MIN_NCHANNELS=16 \
-x NCCL_IB_HCA=mlx5_0:1 \
-x NCCL_IB_GID_INDEX=3 \
-x NCCL_IB_DISABLE=0 \
-x NCCL_IB_RETRY_CNT=7 \
-x NCCL_IB_TIMEOUT=23 \
-x NCCL_SOCKET_IFNAME=eth0 \
-x NCCL_NET_GDR_LEVEL=2 \
-x NCCL_IB_QPS_PER_CONNECTION=4 \
-x NCCL_IB_TC=160 \
-x LD_LIBRARY_PATH=$LD_LIBRARY_PATH \
-x PATH=$PATH \
-mca coll_hcoll_enable 0 \
-mca pml ob1 \
-mca btl_tcp_if_include eth0 \
-mca btl ^openib \
all_reduce_perf -b 1M -e 8G -f 2 -g 1

需要修改为

mpirun -np 8 \
-H 192.168.1.72:4,192.168.1.73:4 \
--allow-run-as-root -bind-to socket -map-by slot \
-x NCCL_DEBUG=INFO \
-x NCCL_ALGO=Ring \
-x NCCL_MAX_NCHANNELS=16 \
-x NCCL_MIN_NCHANNELS=16 \
-x NCCL_IB_HCA=mlx5_0:1 \
-x NCCL_IB_GID_INDEX=3 \
-x NCCL_IB_DISABLE=0 \
-x NCCL_IB_RETRY_CNT=7 \
-x NCCL_IB_TIMEOUT=23 \
-x NCCL_SOCKET_IFNAME=eth0 \
-x NCCL_NET_GDR_LEVEL=2 \
-x NCCL_IB_QPS_PER_CONNECTION=4 \
-x NCCL_IB_TC=160 \
-x UCX_NET_DEVICES=mlx5_0:1 \
-x LD_LIBRARY_PATH=$LD_LIBRARY_PATH \
-x PATH=$PATH \
-mca coll_hcoll_enable 0 \
-mca pml ob1 ucx \
-mca btl_tcp_if_include eth0 \
-mca btl ^openib \
all_reduce_perf -b 1M -e 8G -f 2 -g 1

主要是在-mca中添加了ucx通信方式,然后添加了一个UCX_NET_DEVICES使用的网络接口设置,我们有IB网络所以直接设置IB网卡接口。
另外我们执行时,别忘记还需要设置一些环境变量。

export PATH=/usr/local/ucx/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/ucx/lib:$LD_LIBRARY_PATH
export CPATH=/usr/local/ucx/include:$CPATH
export MANPATH=/usr/local/ucx/share/man:$MANPATH

可以将以上环境变量添加到~/.bashrc中。
也可以直接使用ucx命令单独进行性能测试,包含IB网卡
server端启动如下命令

ucx_perftest -c 0 -d mlx5_0:1

client端启动如下命令进行测试

ucx_perftest -c 1 -d mlx5_0:1 <server_hostname> -t tag_lat

参考来源
https://cuterwrite.top/p/openmpi-with-ucx/

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.sulao.cn/post/1070

评论列表

0%