gpu-topo

gpu 连接关系拓扑

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 通信时的路径和对应级别如下:

  1. PIX (GPU 1 ↔︎ GPU 2)
    • 路径: GPU 1 ➔ Switch A ➔ GPU 2
    • 理解: 它们挂在同一个底层的 Switch A 上,数据直接在 Switch A 内部完成交换。延迟最低。
  2. PXB (GPU 1 ↔︎ GPU 3)
    • 路径: GPU 1 ➔ Switch A ➔ 上层 PCIe Switch ➔ Switch B ➔ GPU 3
    • 理解: 它们不在同一个底层 Switch 上,但它们共享一个更高层级的“上层 PCIe Switch”。数据跨越了多个 Switch,但在到达 CPU 之前完成了掉头。这就是 PXB (跨越多个 Switch 但不经过 Host Bridge)
  3. 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 控制器带宽,并引入更高的延迟。
  4. 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下的