GDR模块无法构建问题解决方案
场景描述 OS: openEuler 22.03 SP3 项目操作系统使用openEuler 22.03 SP3,在进行跨节点 nccl-test 测试的时候发现 nvidia-peermem 无法加载使用RDMA。 注意: H200节点跨节点通信只有100+GB,因为没有开启GDR,所以默认走PCIE,链路瓶颈就在于PCIE 测试参数及带宽如下 1 2 3 4 5 6 7 8 9 10 11 12 13 mpirun \ --allow-run-as-root \ --prefix /usr/local/openmpi \ -H 1.1.1.1:8,1.1.1.2:8 \ -mca btl_tcp_if_exclude lo,docker0 \ -x LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/openmpi/lib/:/root/test_env/nccl/build/lib/ \ -x PATH \ -x NCCL_IB_DISABLE=0 \ -x NCCL_IB_HCA=mlx5_0,mlx5_1,mlx5_2,mlx5_3,mlx5_4,mlx5_7,mlx5_8,mlx5_9 \ -x NCCL_DEBUG=INFO \ -x NCCL_IB_QPS_PER_CONNECTION=8 \ -x NCCL_SOCKET_IFNAME=bond4.24 \ ./build/all_reduce_perf -b 8M -e 8G -g 1 -f 2 问题解决 从GitHub拉取nvidia-peermem进行编译 1. 拉取nvidia-peermem源码 1 sudo git clone https://github.com/Mellanox/nv_peer_memory.git 2. 编译并安装nv_peer_mem.ko 1 2 3 4 cd nv_peer_memory && make cp nv_peer_mem.ko /lib/modules/$(uname -r)/kernel/drivers/video depmod -a modprobe nv_peer_mem 3. 检查模块加载状态 1 2 # 可通过lsmod|grep nv_peer_mem检查 lsmod|grep nv_peer_mem 加载模块后的测试结果 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 mpirun \ --allow-run-as-root \ --prefix /usr/local/openmpi \ -H 1.1.1.1:8,1.1.1.2:8 \ -mca btl_tcp_if_exclude lo,docker0 \ -x LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/openmpi/lib/:/root/test_env/nccl/build/lib/ \ -x PATH \ -x NCCL_IB_DISABLE=0 \ -x NCCL_IB_HCA=mlx5_0,mlx5_1,mlx5_2,mlx5_3,mlx5_4,mlx5_7,mlx5_8,mlx5_9 \ -x NCCL_IB_QPS_PER_CONNECTION=8 \ -x NCCL_ALGO=Ring \ -x NCCL_DEBUG=INFO \ -x NCCL_SOCKET_IFNAME=enp25s0np0 \ -x NCCL_IB_TC=160 \ -x NCCL_NET_GDR_LEVEL=4 \ ./build/all_reduce_perf -b 4G -e 32G -g 1 -n 20 -w 5 ...