双机双GPU高速互联(GPUDirect RDMA over InfiniBand)配置部署手册(参考

好的,遵照您的要求,我将我们整个史诗级排查过程的所有关键操作细节,提炼并总结成一份结构清晰、可直接作为技术文档使用的操作手册。

双机双GPU高速互联(GPUDirect RDMA over InfiniBand)配置部署手册

版本: 1.0
日期: 2025-07-13
作者: [您的名字]
目标: 在两台配备NVIDIA GPU和InfiniBand高速网卡的Ubuntu服务器之间,启用并验证GPUDirect RDMA功能,实现低延迟、高带宽的GPU到GPU直接通信。

第零章:前置条件

硬件:

两台服务器,每台配备至少一块NVIDIA GPU。

每台服务器安装一块InfiniBand网卡,并通过IB线缆直连或通过IB交换机连接。

软件:

操作系统:Ubuntu Server (本手册基于24.04 LTS)。

已正确安装与GPU型号匹配的NVIDIA驱动和CUDA Toolkit。

已安装Mellanox OFED驱动栈(通常通过apt或NVIDIA DOCA SDK安装)。

第一章:基础环境验证

此章节用于确认系统底层是否已正确识别硬件。

验证GPU状态:

Generated bash
nvidia-smi

检查点: 确保所有GPU都已列出,并显示正确的驱动/CUDA版本。

验证IB网卡识别:

Generated bash
ibv_devices
IGNORE_WHEN_COPYING_START
content_copy
download
Use code with caution.
Bash
IGNORE_WHEN_COPYING_END

检查点: 确保两台服务器都能列出IB设备(如mlx5_0)。

验证GPUDirect RDMA硬件通路:

Generated bash
nvidia-smi topo -m
IGNORE_WHEN_COPYING_START
content_copy
download
Use code with caution.
Bash
IGNORE_WHEN_COPYING_END

检查点: 寻找GPU与IB网卡(如mlx5_0)交叉点的连接值。理想值为PIX或PXB,表示存在高效的PCIe直接通路。若为SYS,则需排查BIOS中的Above 4G Decoding和Re-Size BAR Support设置,以及nvidia_peermem内核模块加载情况。

第二章:InfiniBand网络核心服务配置

此章节是整个配置的核心,旨在激活并管理IB网络。所有操作在一台指定的管理节点(本文档以服务器A为例)上执行。

安装核心组件:

Generated bash

在两台服务器上都执行

sudo apt update
sudo apt install -y opensm infiniband-diags
IGNORE_WHEN_COPYING_START
content_copy
download
Use code with caution.
Bash
IGNORE_WHEN_COPYING_END

配置子网管理器 (OpenSM):

2.1 创建主配置文件:

Generated bash

--- 仅在服务器A上执行 ---

echo "partition_config_file /etc/opensm/partitions.conf" | sudo tee /etc/opensm/opensm.conf
IGNORE_WHEN_COPYING_START
content_copy
download
Use code with caution.
Bash
IGNORE_WHEN_COPYING_END

2.2 创建分区配置文件:

Generated bash

--- 仅在服务器A上执行 ---

echo "Default=0x7fff, ipoib, full: ALL;" | sudo tee /etc/opensm/partitions.conf
IGNORE_WHEN_COPYING_START
content_copy
download
Use code with caution.
Bash
IGNORE_WHEN_COPYING_END

2.3 创建systemd服务文件:

Generated bash

--- 仅在服务器A上执行 ---

sudo nano /etc/systemd/system/opensm.service
IGNORE_WHEN_COPYING_START
content_copy
download
Use code with caution.
Bash
IGNORE_WHEN_COPYING_END

将以下内容完整粘贴并保存:

Generated ini
[Unit]
Description=OpenSM InfiniBand Subnet Manager
After=network.target

[Service]
Type=simple
ExecStart=/usr/sbin/opensm --config /etc/opensm/opensm.conf

[Install]
WantedBy=multi-user.target
IGNORE_WHEN_COPYING_START
content_copy
download
Use code with caution.
Ini
IGNORE_WHEN_COPYING_END

2.4 加载并启动服务:

Generated bash

--- 仅在服务器A上执行 ---

sudo systemctl daemon-reload
sudo systemctl enable opensm
sudo systemctl start opensm
IGNORE_WHEN_COPYING_START
content_copy
download
Use code with caution.
Bash
IGNORE_WHEN_COPYING_END

2.5 验证服务状态:

Generated bash

--- 仅在服务器A上执行 ---

sudo systemctl status opensm
IGNORE_WHEN_COPYING_START
content_copy
download
Use code with caution.
Bash
IGNORE_WHEN_COPYING_END

检查点: 状态应为绿色的active (running),且日志中无错误。

验证IB网络激活状态:

操作: 在两台服务器上都执行。

命令: ibstat mlx5_0

检查点:

State 必须为 Active。

Physical state 必须为 LinkUp。

必须出现PKey表,并显示 PKey: 0x7fff。

配置IP over InfiniBand (IPoIB):

目的: 为IB接口分配IP地址,用于MPI的初始握手和管理。

操作:

服务器A:

Generated bash
sudo ip addr add 10.0.2.2/24 dev ibp7s0
sudo ip link set dev ibp7s0 up


```bash
sudo ip addr add 10.0.2.3/24 dev ibp7s0
sudo ip link set dev ibp7s0 up
IGNORE_WHEN_COPYING_START
content_copy
download
Use code with caution.
Bash
IGNORE_WHEN_COPYING_END

验证: 在服务器A上 ping 10.0.2.3,应能正常通信。

第三章:系统及应用环境准备

此章节用于优化系统环境,为高性能应用扫清障碍。

解除内存锁定限制:

操作: 在两台服务器上都执行。

1.1 检查当前限制: ulimit -l

1.2 若非unlimited,则配置: 编辑 /etc/security/limits.conf,在文件末尾添加:

Generated code
*   soft   memlock   unlimited
*   hard   memlock   unlimited
IGNORE_WHEN_COPYING_START
content_copy
download
Use code with caution.
IGNORE_WHEN_COPYING_END

1.3 生效: 必须完全登出并重新SSH登录服务器。

配置双向免密SSH:

操作: 在两台服务器上都执行。

2.1 生成密钥: ssh-keygen -t rsa (全程按回车)。

2.2 分发公钥:

ssh-copy-id user@<对方IP>

ssh-copy-id user@localhost

校准主机名解析:

操作: 在两台服务器上,编辑 /etc/hosts 文件。

检查点:

确保没有 127.0.1.1 <本机主机名> 这样的行。

手动添加IB网络的IP与主机名对应关系:

Generated code
10.0.2.2   hostname-A
10.0.2.3   hostname-B
IGNORE_WHEN_COPYING_START
content_copy
download
Use code with caution.
IGNORE_WHEN_COPYING_END
第四章:性能验证测试

此章节用于编译并运行nccl-tests,以量化验证GPUDirect RDMA的性能。

安装编译依赖:

Generated bash
# 在两台服务器上都执行
sudo apt install -y build-essential openmpi-bin libopenmpi-dev git
IGNORE_WHEN_COPYING_START
content_copy
download
Use code with caution.
Bash
IGNORE_WHEN_COPYING_END

下载并编译nccl-tests:

Generated bash
# 在两台服务器上都执行
git clone https://github.com/NVIDIA/nccl-tests.git
cd nccl-tests
make MPI=1 -j
IGNORE_WHEN_COPYING_START
content_copy
download
Use code with caution.
Bash
IGNORE_WHEN_COPYING_END

执行最终的跨节点all_reduce测试:

操作: 从任意一台服务器发起。

命令:

Generated bash
mpirun -np 4 -H 10.0.2.2:2,10.0.2.3:2 \
       --mca btl self,openib \
       --mca pkey 0x7fff \
       -x NCCL_DEBUG=INFO \
       -x NCCL_SOCKET_IFNAME=ibp7s0 \
       ~/nccl-tests/build/all_reduce_perf -b 8 -e 1G -f 2 -g 1
IGNORE_WHEN_COPYING_START
content_copy
download
Use code with caution.
Bash
IGNORE_WHEN_COPYING_END

结果分析:

命令应正常运行并输出大量NCCL INFO日志。

最终会打印一个性能表格。关注大消息(如1GB)时的busbw(总线带宽)列,其数值应接近IB网卡的理论带宽(如100Gbps或200Gbps)。

文档结束
暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇