AMD 主板 NPS 设置与 8卡 RTX 4090 NCCL 性能调优手册

一、概述

在使用 8 卡 RTX 4090 搭建 AI 训练服务器时,合理配置 NUMA 策略,特别是 AMD 平台上的 NPS(NUMA Per Socket)参数,可以显著影响 NCCL 通信效率,进而提升整体训练性能。


二、NPS 简介

1. NPS 定义

NPS(NUMA Per Socket)用于定义每个 AMD EPYC 处理器插槽被划分成多少个 NUMA 节点:

NPS 设置NUMA 节点数/CPU描述
NPS=11所有 CCD 合为一个 NUMA 节点,延迟低但拥塞可能高
NPS=22每 4 个 CCD 构成一个 NUMA 节点
NPS=44每 2 个 CCD 构成一个 NUMA 节点,NUMA 粒度最细,隔离好

适用于如 AMD EPYC 7003/9004 系列(如 Milan/Genoa)。


三、设置 NPS=4 的方法

方法一:通过 BIOS 设置(推荐)

进入 BIOS,路径如下(可能略有不同):

Advanced → AMD CBS → DF Common Options → NUMA Nodes per Socket (NPS)

NUMA Nodes per Socket 设置为 NPS4,保存并重启服务器。

方法二:通过 grub 设置(部分平台支持)

编辑 /etc/default/grub

GRUB_CMDLINE_LINUX="... numa=on nps=4"

然后执行:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg
reboot

⚠️ 注意:不是所有平台支持通过 grub 覆盖 BIOS 设置,BIOS 设置优先。


四、NPS 设置对 NCCL 性能的影响

1. NCCL 通信瓶颈来源

  • PCIe/NVLink 拓扑路径长短

  • NUMA 绑定不当导致的跨节点内存访问

  • IB 网卡与 GPU NUMA 不一致

2. NCCL 测试对比(示例)

假设配置:2x AMD EPYC 9654 + 8x RTX 4090,部分典型对比:

NPS 设置带宽(GB/s)延迟(us)说明
NPS=1较低较高所有资源集中,竞争严重
NPS=2提升降低分区减少冲突
NPS=4最优或次优最低NUMA 隔离精细,P2P 绑定更合理

3. 测试命令

nvidia-smi topo -m
numactl -H
NCCL_DEBUG=INFO mpirun -np 8 ./all_reduce_perf -b 8M -e 1G -f 2

4. NUMA 绑定建议

  • GPU 与网络设备(如 IB)应处于同一 NUMA 节点;

  • 使用 numactl 控制绑定,例如:

numactl --cpunodebind=0 --membind=0 ./train.py --gpus 0,1

五、调优建议总结

项目建议
BIOS 设置NPS=4
NUMA 绑定GPU 与 IB 在同 NUMA 节点
NCCL 配置使用自动拓扑或自定义拓扑文件
测试工具nvidia-smi, numactl, nccl-tests

六、附录:工具说明

1. nvidia-smi topo -m

查看 GPU 与 CPU、IB 卡间的连接距离与 NUMA 位置。

2. numactl -H

查看当前系统 NUMA 节点数、绑定策略。

3. hwloc-ls

可视化 NUMA 和 PCIe 设备拓扑。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guganly

喜欢就请我喝杯咖啡吧!☕️

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值