加载中...

查看显卡之间的拓扑结构


拓扑信息(TOPOLOGY)

本篇主要讲解 nvidia-smi 命令的拓扑信息选项 topo,使用命令如下:

nvidia-smi topo

该命令用于展示设备或者系统的拓扑结构。
拓扑信息选项,支持的参数列表如下:

[-m | --matrix]:     展示系统的 GPUDirect 通信矩阵
[-mp | --matrix_pci]: 展示系统的 GPUDirect 通信矩阵(仅包含pci链接)
[-i | --id]:         驱动程序返回的自然枚举中 GPU 的从 0 开始的索引、
                     GPU 的板序列号、GPU 的 UUID 或 GPU 的 PCI 总线 ID。
                     如果需要指定多个设备,可以使用逗号","将不同的id隔开。
                     必须和 -n 、-p 参数联合使用。
[-c | --cpu]:        展示与特定 CPU 亲和的 GPU 设备列表。
[-n | --nearest_gpus]:     展示对于给定遍历路径最近的 GPU 列表,支持的路径列表如下:
                           0 = 双GPU板上的单个PCIe交换机(例如Tesla K80)
                           1 = 单个PCIe交换机
                           2 = 多个PCIe交换机
                           3 = 单个PCIe主机桥
                           4 = PCIe 主机桥之间的 CPU 上互连链路
                           5 = NUMA 节点之间的 SMP 互连链路
                           必须与 -i 参数联合使用,且只能指定单个设备ID。
[-p | --gpu_path]:   展示一对GPU设备之间的最直接路径遍历,与 -i 一起使用,它必须是一对设备 ID。
[-p2p | --p2pstatus]:      显示给定 p2p 能力的 GPU 之间的 p2p 状态
               r - p2p 读能力
               w - p2p 写能力
               n - p2p nvlink能力
               a - p2p 原子能力
               p - p2p 仅当所有 gpus 都支持 p2p 时才设置 p2p 属性
[-h | --help]:       展示帮助信息

各参数详解

-m 展示系统的 GPU Direct 通信矩阵

nvidia-smi topo -m 可以展示系统中 GPU 之间的互联关系、GPU 与 CPU 之间的绑定关系、以及 GPU 与网络接口卡(NIC)之间的连接。例如:

[root@c4 ~]# nvidia-smi topo -m
	    GPU0	GPU1	NIC0	NIC1	CPU Affinity	NUMA Affinity	GPU NUMA ID
GPU0	 X 	    SYS	    NODE	NODE	0-15,32-47	    0		        N/A
GPU1	SYS	     X 	    SYS	    SYS	    16-31,48-63	    1		        N/A
NIC0	NODE	SYS	     X 	    PIX				
NIC1	NODE	SYS	    PIX	     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

1. GPU 之间的互联类型

  • X:表示 GPU 自身。
  • SYS(PCIe Host Bridge):GPU 间通信跨越 PCIe 主桥 或 SMP(对称多处理)互联结构。
  • NODE:跨越 NUMA 节点,可能涉及多个 CPU 插槽之间的通信,性能较差。
  • PHB:GPU 间通信通过 PCIe 和 PCIe 主机桥(通常是 CPU)。
  • PXB(PCIe Multi-Bridge):GPU 间通信通过 多个 PCIe 桥。
  • PIX(PCIe Single Bridge):GPU 间通信通过 单个 PCIe 桥。
  • NV#:通过数量为n组的 NVLinks 互连。

2. 网络接口卡(NIC)之间的连接

  • PIX:连接最优,延迟最低,数据传输最快。
  • PXB:连接稍差,但仍然高效。
  • SYS:延迟较高,数据需通过系统 PCIe 总线。
  • NODE:最差的连接,跨 NUMA 节点,延迟和开销最大。

3. CPU Affinity 列表示每个 GPU 与哪些 CPU 核心相关联(绑定)。例如:

0-15,32-47

这表示 当前 GPU 会优先使用第 0 到 15 号核心,以及 32 到 47 号核心来进行数据调度和任务分配。

4. NUMA Affinity(NUMA 亲和性)

NUMA(Non-Uniform Memory Access) 表示非均匀内存访问架构。在多插槽服务器中,GPU 会与不同的 NUMA 节点绑定,NUMA 节点间的访问延迟较高,应尽量避免跨 NUMA 节点的数据传输,减少通信延迟。

NUMA Affinity 标识 GPU 属于哪个 NUMA 节点,例如:

NUMA Affinity
     0

如:GPU0:属于 NUMA 0

这些 GPU 直接连接到 NUMA 节点 0 的 PCIe 总线。

CPU Affinity 显示为 0-15,32-47,表示这些 GPU 更接近 NUMA 节点 0 的 CPU 核心。

总结:

连接类型 含义 特点 性能
NV# NVIDIA 高速互联技术 GPU 间高速、低延迟直连 最快
PIX PCIe 单桥接互联 GPU 通过同一个 PCIe Switch 连接 高性能
PXB PCIe 多桥接互联 GPU 跨越多个 PCIe Switch 连接 较高性能
PHB PCIe 主机桥互联 通过 CPU 的 PCIe Host Bridge 连接 中等性能
SYS 系统级 PCIe 与 NUMA 互联 跨 NUMA 节点的 PCIe 连接 较低性能
NODE NUMA 节点间互联 GPU 连接不同 NUMA 节点 最慢,延迟最高
X 自身互联 GPU 自身连接 N/A

-i 指定GPU

id是驱动程序返回的自然枚举中 GPU 的从 0 开始的索引、GPU 的板序列号、GPU 的 UUID 或 GPU 的 PCI 总线 ID。 如果需要指定多个设备,可以使用逗号 , 将不同的id隔开。必须与 -n 或者 -p 配合使用。

例如:

[root@c6 ~]# nvidia-smi topo -i 1,3 -p
Device 1 is connected to device 3 by way of an SMP interconnect link between NUMA nodes.

可以看到1和3之间最直接的遍历路径是 NUMA的SMP (即SYS) 主机桥接。

-c 展示与特定 CPU 亲和的 GPU 设备列表

例如:

[root@c6 ~]# nvidia-smi topo -c 114
The GPUs that have an affinity with CPU 114 are:
2, 3

与 CPU 114 核心亲和的GPU设备列表为 2 和 3 。

-p2p 显示给定 p2p 能力的 GPU 之间的 p2p 状态

支持参数如下:

  • r:p2p 读能力
  • w:p2p 写能力
  • n:p2p nvlink能力
  • a:p2p 原子能力
  • p:p2p 仅当所有 gpus 都支持 p2p 时才设置 p2p 属性

查询 GPU 之间的读能力

[root@c6 ~]# nvidia-smi topo -p2p r
 	    GPU0	GPU1	GPU2	GPU3	
 GPU0	X	    OK	    OK	    OK	
 GPU1	OK	    X	    OK	    OK	
 GPU2	OK	    OK	    X	    OK	
 GPU3	OK	    OK	    OK	    X	

Legend:

  X    = Self
  OK   = Status Ok
  CNS  = Chipset not supported
  GNS  = GPU not supported
  TNS  = Topology not supported
  NS   = Not supported
  U    = Unknown

可以看到读能力全支持。

查询 GPU 之间写能力

[root@c6 ~]# nvidia-smi topo -p2p w
 	    GPU0	GPU1	GPU2	GPU3	
 GPU0	X	    OK		OK		OK	
 GPU1	OK	    X		OK		OK	
 GPU2	OK	    OK		X		OK	
 GPU3	OK	    OK		OK		X	

Legend:

  X    = Self
  OK   = Status Ok
  CNS  = Chipset not supported
  GNS  = GPU not supported
  TNS  = Topology not supported
  NS   = Not supported
  U    = Unknown

可以看到写能力全支持。

查询 GPU 之间nvlink能力

[root@c6 ~]# nvidia-smi topo -p2p n
 		GPU0	GPU1	GPU2	GPU3	
 GPU0	X		NS		NS		NS	
 GPU1	NS		X		NS		NS	
 GPU2	NS		NS		X		NS	
 GPU3	NS		NS		NS		X	

Legend:

  X    = Self
  OK   = Status Ok
  CNS  = Chipset not supported
  GNS  = GPU not supported
  TNS  = Topology not supported
  NS   = Not supported
  U    = Unknown

可以看到nvlink能力不支持。

查询全 GPU 互连能力

[root@c6 ~]# nvidia-smi topo -p2p p
 		GPU0	GPU1	GPU2	GPU3	
 GPU0	X		OK		OK		OK	
 GPU1	OK		X		OK		OK	
 GPU2	OK		OK		X		OK	
 GPU3	OK		OK		OK		X	

Legend:

  X    = Self
  OK   = Status Ok
  CNS  = Chipset not supported
  GNS  = GPU not supported
  TNS  = Topology not supported
  NS   = Not supported
  U    = Unknown

可以看到全GPU p2p互连能力全支持。

GPU 通信技术——GPU Direct、NVLink、RDMA

可以从这里看:https://zhuanlan.zhihu.com/p/654417967

GPU通信技术 扩展阅读:

浅析GPU通信技术:GPUDirect RDMA:https://blog.csdn.net/BtB5e6Nsu1g511Eg5XEg/article/details/86767266

浅析GPU通信技术:GPUDirect P2P

浅析GPU通信技术:NVLink总线技术

本文参考链接:

查看显卡之间的拓扑结构(GPU topology):https://zhuanlan.zhihu.com/p/1338074637

NVIDIA-SMI系列命令详解(14)-拓扑信息:https://juejin.cn/post/7151226884351590431


文章作者: 无夜
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 无夜 !
评论
  目录