GPU 拓扑与亲和性:用 nvidia-smi topo 判断 NVLink、PCIe、NUMA 与网卡位置
nvidia-smi topo -m 输出 GPU 之间、GPU 与网卡之间的连接矩阵,标出 NVLink、PCIe 交换机、CPU 插槽和 NUMA 节点。它决定多卡训练的 rank 放置、NCCL 选路、GPU Direct 是否能生效,以及为什么两张卡看起来同型号、通信带宽却差很多。
矩阵里的常见标记:NV# 表示 NVLink,PIX 表示同一 PCIe 交换机,PXB 表示经过 PCIe 桥,PHB 表示经过 PCIe 主机桥,SYS 表示跨 NUMA/跨 CPU 插槽,NODE 表示同一 NUMA 节点。数字越大通常表示路径越长、带宽越低。
# 查看 GPU、网卡与 CPU 的拓扑矩阵
nvidia-smi topo -m
# 矩阵中同时显示 PCI 总线 ID
nvidia-smi topo -mp
# 查看 GPU 的 CPU 亲和性
nvidia-smi topo -c
# 查看 NUMA 节点与 CPU
lscpu | grep -i numa
lscpu -e
# 确认网卡与 GPU 是否在同一 NUMA/PCIe 分支
nvidia-smi topo -m
ip -br link
ethtool -i <nic>
# 多机训练前,配合 NCCL 日志确认选中的网卡
NCCL_DEBUG=INFO NCCL_SOCKET_IFNAME=<nic> ./build/all_reduce_perf -g 8
排布 rank 时优先让通信密集的 GPU 走 NVLink,让同一 NUMA 节点的 GPU 配同一侧网卡;不要只看 GPU 编号连续,物理拓扑可能和编号不一致。
nvidia-smi 的 GPU 编号:编号顺序不等于物理拓扑;用 topo -m 确认 NVLink/PCIe 关系。SYS 当成同一条 PCIe 总线:SYS 通常跨 NUMA/CPU 插槽,延迟和带宽都比 PIX/PHB 差。NCCL_SOCKET_IFNAME/NCCL_IB_HCA 明确指定。PIX 与 PHB 的带宽不同;矩阵要看具体路径。nccl-tests 分别验证单机与多机。合上页面,先回答,再展开对照。
NV#、PIX、SYS 分别代表什么连接?NV# 是 NVLink,PIX 是同一 PCIe 交换机,SYS 通常表示跨 NUMA/CPU 插槽的路径。
小程序版
微信扫码,随时查命令