PCIe 拓扑距离等级

$ nvidia-smi topo -m
        GPU0    GPU1    GPU2    GPU3    GPU4    GPU5    GPU6    GPU7    NIC0    NIC1    NIC2    CPU Affinity    NUMA Affinity   GPU NUMA ID
GPU0     X      NODE    NODE    NODE    SYS     SYS     SYS     SYS     NODE    NODE    SYS     0-79,160-239    0               N/A
GPU1    NODE     X      NODE    NODE    SYS     SYS     SYS     SYS     PHB     PHB     SYS     0-79,160-239    0               N/A
GPU2    NODE    NODE     X      NODE    SYS     SYS     SYS     SYS     NODE    NODE    SYS     0-79,160-239    0               N/A
GPU3    NODE    NODE    NODE     X      SYS     SYS     SYS     SYS     NODE    NODE    SYS     0-79,160-239    0               N/A
GPU4    SYS     SYS     SYS     SYS      X      NODE    NODE    NODE    SYS     SYS     NODE    80-159,240-319  1               N/A
GPU5    SYS     SYS     SYS     SYS     NODE     X      NODE    NODE    SYS     SYS     NODE    80-159,240-319  1               N/A
GPU6    SYS     SYS     SYS     SYS     NODE    NODE     X      NODE    SYS     SYS     PHB     80-159,240-319  1               N/A
GPU7    SYS     SYS     SYS     SYS     NODE    NODE    NODE     X      SYS     SYS     NODE    80-159,240-319  1               N/A
NIC0    NODE    PHB     NODE    NODE    SYS     SYS     SYS     SYS      X      PIX     SYS
NIC1    NODE    PHB     NODE    NODE    SYS     SYS     SYS     SYS     PIX      X      SYS
NIC2    SYS     SYS     SYS     SYS     NODE    NODE    PHB     NODE    SYS     SYS      X

Legend:

  X    = Self
  SYS  = Connection traversing PCIe as well as the SMP interconnect between NUMA nodes (e.g., QPI/UPI)
  NODE = Connection traversing PCIe as well as the interconnect between PCIe Host Bridges within a NUMA node
  PHB  = Connection traversing PCIe as well as a PCIe Host Bridge (typically the CPU)
  PXB  = Connection traversing multiple PCIe bridges (without traversing the PCIe Host Bridge)
  PIX  = Connection traversing at most a single PCIe bridge
  NV#  = Connection traversing a bonded set of # NVLinks

NIC Legend:

  NIC0: mlx5_0
  NIC1: mlx5_1
  NIC2: mlx5_2

X

X(自身):设备和自己的连接,对角线上的占位符,无意义。

NODE

NODE(同 NUMA node 内,跨 PCIe Host Bridge):

Connection traversing PCIe as well as the interconnect between PCIe Host Bridges within a NUMA node

两个设备在同一个 NUMA node,但各自挂在不同的 PCIe Host Bridge(即 CPU 不同的 root port)上,通信要经过 CPU 内部互联(如 Ring Bus/Mesh)做转发,不跨 socket。

上图中对应

  • GPU0-1、GPU0-2、GPU0-3、GPU1-2、GPU1-3、GPU2-3(NUMA0 内部互相)
  • GPU4-5、GPU4-6、GPU4-7、GPU5-6、GPU5-7、GPU6-7(NUMA1 内部互相)
  • 部分 GPU-NIC 连接,比如 GPU0-NIC0、GPU2-NIC0 等

PHB

PHB(经过 PCIe Host Bridge(通常指同一个 host bridge 下)):

Connection traversing PCIe as well as a PCIe Host Bridge (typically the CPU)

两个设备共享同一个 PCIe Host Bridge,通信只需要经过这一个 host bridge 做转发,比 NODE 少绕了 CPU 内部互联那一段,所以比 NODE 快一点。

在你的表里对应

  • GPU1-NIC0、GPU1-NIC1(GPU1 和 NUMA0 的两张网卡共享同一个 host bridge)
  • GPU6-NIC2(GPU6 和 NUMA1 的网卡共享同一个 host bridge)

这也说明 GPU1 和 GPU6 在各自 NUMA 里,物理位置上跟本地网卡“更近”,如果要做 GPUDirect RDMA,优先选 GPU1 配 NIC0/NIC1、GPU6 配 NIC2,delay 会比同 NUMA 里其他卡更低。

SYS

SYS(跨 NUMA node,经过 UPI/QPI):

Connection traversing PCIe as well as the SMP interconnect between NUMA nodes

两个设备分属不同 NUMA node(不同 CPU socket),通信要多走一段 UPI/QPI 跨 CPU 互联,是全表里最慢的一级。

在你的表里对应

  • 所有 GPU0-3 与 GPU4-7 之间的连接(跨两个 NUMA 分组的全部 16 条连接)
  • 所有 NIC0/NIC1(NUMA0)与 GPU4-7 的连接
  • NIC2(NUMA1)与 GPU0-3 的连接

PIX

PIX(经过最多一个PCIe bridge(同一 PCIe switch下)):

Connection traversing at most a single PCIe bridge

两个设备挂在同一个 PCIe switch 下面,只需经过这一级 bridge,不需要碰 CPU host bridge,是除 NVLink 外最快的 PCIe 级别连接。

在你的表里唯一对应:NIC0-NIC1(两张网卡共享同一个 PCIe switch 芯片,这也印证了 NUMA0 这两张卡确实是接在同一个下游 switch 端口上,只是 GPU 没有共享这个 switch)

其他

  • PXB(经过多个 bridge 但不过 host bridge):没出现,说明没有多级 PCIe switch 级联的情况
  • NV#(NVLink):完全没出现,前面已经确认过,这台机器 GPU 间没有 NVLink
posted @ 2026-07-10 15:16  undefined443  阅读(14)  评论(0)    收藏  举报