gpu-topo

gpu-topo
gogongxtgpu 连接关系拓扑
NIC : Network Interface Card 就是网卡
NVSwitch : NVLink的芯片
普通非RDMA拓扑
命令nvidia-smi topo -m
例如输出:
性能区别:
1
2
3
4
5
6
7
8
9
10
11
NVLink/NVSwitch
>
PIX(同一 PCIe Switch)
>
PXB(多个 PCIe Switch)
>
PHB/NODE(经过 Host Bridge)
>
SYS(跨 CPU Socket/NUMA)
>
跨机 TCP拓扑示意图:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
============================= 【双 CPU 服务器 PCIe 拓扑示意图】 =============================
[跨 CPU 互联总线 (如 Intel UPI)]
/ \
(SYS 路径) / \ (SYS 路径)
/ \
[ CPU 0 / Host Bridge 0 ] [ CPU 1 / Host Bridge 1 ]
/ \ |
/ (PHB 路径) \ |
/ \ |
[ 上层 PCIe Switch ] [ PCIe Switch C ] [ PCIe Switch D ]
/ (PXB 路径) \ | |
/ \ | |
/ \ | |
[ Switch A ](PIX路径) [ Switch B ] GPU 5 GPU 6
/ \ / \
GPU 1 GPU 2 GPU 3 GPU 4根据上面的拓扑图,假设以 GPU 1 为起点,它与其他 GPU 通信时的路径和对应级别如下:
- PIX (GPU 1 ↔︎ GPU 2)
- 路径: GPU 1 ➔ Switch A ➔ GPU 2
- 理解: 它们挂在同一个底层的 Switch A 上,数据直接在 Switch A 内部完成交换。延迟最低。
- PXB (GPU 1 ↔︎ GPU 3)
- 路径: GPU 1 ➔ Switch A ➔ 上层 PCIe Switch ➔ Switch B ➔ GPU 3
- 理解: 它们不在同一个底层 Switch 上,但它们共享一个更高层级的“上层 PCIe Switch”。数据跨越了多个 Switch,但在到达 CPU 之前完成了掉头。这就是 PXB (跨越多个 Switch 但不经过 Host Bridge)。
- PHB (GPU 1 ↔︎ GPU 5)
- 路径: GPU 1 ➔ Switch A ➔ 上层 Switch ➔ CPU 0 (Host Bridge) ➔ Switch C ➔ GPU 5
- 理解: GPU 1 和 GPU 5 没有共同的上游 PCIe Switch,它们唯一相交的节点是 CPU 0 的 Host Bridge。数据必须进入 CPU 芯片内部进行转发,这会占用 CPU 的 PCIe 控制器带宽,并引入更高的延迟。
- SYS (GPU 1 ↔︎ GPU 6)
- 路径: GPU 1 ➔ Switch A ➔ 上层 Switch ➔ CPU 0 ➔ UPI 总线 ➔ CPU 1 ➔ Switch D ➔ GPU 6
- 理解: 数据不仅经过了 CPU,还跨越了 CPU 插槽(跨 NUMA 节点)。这种路径带宽最小,延迟最高,是跨机 TCP 之前最慢的一环。
- 上面没有给出外部的nvlink,这个是接在gpu上的
- 从 PXB 到 PHB,数据流的物理路径变得更长,且需要 CPU 介入。CPU 的 PCIe Root Complex 处理开销大于纯硬件的 PCIe Switch。同时,经过 Host Bridge 的数据流可能需要与网卡、NVMe 硬盘等其他设备的 IO 抢占带宽。这就是为什么 PXB 的性能会明显优于 PHB。
RDMA拓扑
在这台机器中,rdma的关系是:
1
2
3
4
5
6
7
8
9
10
11
[gongxiaotian@ml-b1-ser063 ~]$ ibdev2netdev
mlx5_0 port 1 ==> eth400g0 (Up)
mlx5_1 port 1 ==> eth400g1 (Up)
mlx5_2 port 1 ==> eth400g2 (Up)
mlx5_3 port 1 ==> eth0 (Up)
mlx5_4 port 1 ==> eth1 (Down)
mlx5_5 port 1 ==> eth400g3 (Up)
mlx5_6 port 1 ==> eth400g4 (Up)
mlx5_7 port 1 ==> eth400g5 (Up)
mlx5_8 port 1 ==> eth400g6 (Up)
mlx5_9 port 1 ==> eth400g7 (Up)可以看到拓扑关系中,gpu0-NIC0-nlx5_0是PIX的,是最近的
以此类推,根据PIX找到卡对应的NIC和mlx标号,就可以知道对应的rdma关系:
1
2
3
4
5
6
7
8
gpu0 -> mlx5_0
gpu1 -> mlx5_1
gpu2 -> mlx5_2
gpu3 -> mlx5_5
gpu4 -> mlx5_6
gpu5 -> mlx5_7
gpu6 -> mlx5_8
gpu7 -> mlx5_8而NIC3和NIC4是挂在一个PCIE switch下面的,就是普通的外部网口,并且可以知道这个是在NUMA0下的
评论
匿名评论隐私政策






