GPU拓扑结构

张开发
2026/4/9 5:23:59 15 分钟阅读

分享文章

GPU拓扑结构
GPU 拓扑是指 GPU图形处理单元及其相关组件在计算机系统中的物理布局和连接关系。PCIPCI总线是一种由英特尔于1991年推出的局部总线标准最早提出的PCI总线工作在33MHz频率之下传输带宽达到133MB/s(33MHz * 32bit/s)后面提出64bit的pci总线总线频率也提升到66MHz。PCI总线使用并行总线结构在同一条总线上所有的外部设备共享总线带宽采用共享总线的机制会出现不同的设备抢占总线的情况所有带宽还是有限。PCI后来被PCIe取代但在编程中两者兼容。-- PIC基本拓扑结构如下-- PCI 设备符合 PCI 总线标准的设备就被称为 PCI 设备PCI 总线架构中可以包含多个 PCI 设备。PCI 设备同时也分为主设备和目标设备两种主设备是一次访问操作的发起者而目标设备则是被访问者。-- PCI 总线PCI 总线在系统中可以有多条类似于树状结构进行扩展每条 PCI 总线都可以连接多个 PCI 设备/桥。-- PCI 桥当一条 PCI 总线的承载量不够时可以用新的 PCI 总线进行扩展而 PCI 桥则是连接 PCI 总线之间的纽带。北桥一般用来连接processor处理器图像接口存储接口和PCI总线。南桥用来连接PCI总线和外围设备同时南桥也通常给PCI总线提供系统复位信号时钟信号和错误报告信号。这个是PIC桥一般的设计图中分在上下所以叫南北桥。PCIePeripheral Component Interconnect ExpressPCIe英文缩写为PCIe或者PCI Express一般用于CPU与外部设备进行高速连接GPU声卡。PCIe是点对点全双工的差分传输信号总线基于数据包协议传输。点对点互连表示链路上的电气负载有限从而使发送和接收频率可扩展到更高。PCIe目前成熟的版本有GEN1GEN2GEN3GEN4和GEN5每一代相较上一代传输速率和传输带宽都有了很大幅度的提升。(点对点通信的含义直接通信在点对点架构中每个设备如 CPU 和 PCIe 设备之间通过专用的通道进行通信而不是通过共享总线。专有带宽每个连接都有自己的专用带宽不会与其他设备共享从而减少了数据传输冲突和瓶颈。)-- 点对点传输 每一个设备是对于一条完整的总线, 在 PCIe 架构中根复合体Root Complex通常集成在 CPU 或芯片组中直接与 PCIe 设备如 GPU、网络卡、存储控制器等进行通信。-- 差分传输 每个信号由一对差分信号压差来表示D和D-之间电压差为正表示1D和D-之间的电压差为负表示0。-- 通信协议帧传输分为三层协议–事务层、数据链路层、物理层-- 链路LinksPCIe设备之间的信号传输路径称作链路Links一个Links由一个或多个收发通道Lanes组成-- 收发通道Lanes一个通道内由一对差分信号组成lanes的连接可以不用端口对应方便布局布线会在软件端做处理GT/S:Giga transaition per second即每一秒内传输的次数带宽(吞吐量)(传输速率×lane数量×编码效率)/8 (结果单位是GB/S)举个例子PCIE1.0x4带宽(2.5GT/s ×4×0.8)/81GB/sPCIe基本拓扑机构PCIe采用的是树形拓扑结构 一般由根组件(Root Complex)交换设备(Switch)终端设备(Endpoint)等类型的PCIe设备组成-- Root Complex: 根桥设备是PCIe最重要的一个组成部件 Root Complex主要负责PCIe报文的解析和生成。RC接受来自CPU的IO指令生成对应的PCIe报文或者接受来自设备的PCIe TLP报文解析数据传输给CPU或者内存。-- Switch: PCIe的转接器设备目的是扩展PCIe总线。和PCI并行总线不同PCIe的总线采用了高速差分总线并采用端到端的连接方式, 因此在每一条PCIe链路中两端只能各连接一个设备 如果需要挂载更多的PCIe设备那就需要用到switch转接器。-- switch在linux下不可见软件层面可以看到的是switch的上行口upstream port 靠近RC的那一侧) 和下行口(downstream port)。一般而言一个switch 只有一个upstream port 可以有多个downstream port-- PCIe endponit: PCIe终端设备是PCIe树形结构的叶子节点。比如网卡NVME卡显卡都是PCIe ep设备。PCIe Switch多个GPU通过PCIe Switch直接与CPU相连。其工作原理是GPU 发出的信号首先传输至 PCIe Switch随后由交换机将数据分发至对应的 CPU 进行调度处理。他们之间的pcie 3.0*16有接近32GB/s的双向带宽现代GPU的内存带宽远高于此当训练数据不停增长的时候这个互联方案本身却成为了致命的系统瓶颈限制了数据传输速度。如果不改进这个互联带宽那么新时代GPU带来的额外性能就没法发挥出来从而无法满足现实需求负载的增长。在PCIe直连拓扑中PCIe lane的数量显然存在一定的局限性。为了解决这一问题新的PCIe标准中引入了PCIe Switch模块。PCIe Switch模块在主板上与2个CPU Socket一一对应采用2个PCIe Switch芯片来进行信号扩展。这种设计巧妙地利用了信号放大的原理使得每个扩展芯片能够额外扩展出5个x16的插槽从而显著增加了可用的PCIe插槽数量。通过这种方式PCIe Switch有效地缓解了CPU直连时PCIe lane数量不足的问题为系统提供了更灵活的扩展能力和更强大的连接性能。通过 PCIe Switch服务器可以实现 CPU-GPU、GPU-GPU 之间的连接同时也出现了 3 种连接模式即balance、common、cascade 拓扑。在PCIe Switch 互联拓扑里GPU 间通信链路可能为 GPU0→Switch0→CPU0→CPU1→Switch1→GPU7这种链路通信会存在延迟更适合对信号效率要求不高、注重性价比的场景比如推理、云计算等。NVLink为了解决这个问题nvidia开发了一个全新的互联构架nvlink。目的是突破 PCIe 互联在带宽性能上的限制让 GPU 芯片间能实现高带宽、低延迟的数据传输。NVLink 互联方式是让 GPU 通过 NVLink 直接连通无需借助 PCIe Switch。是点对点的高速互连技术单条 NVLink 是全双工双路信道可直连 2 个 GPU且每个 GPU 能凭借多条 NVLink 接口连接多个 GPU。下图所示单条nvlink是一种双工双路信道其通过组合32条配线从而在每个方向上可以产生8对不同的配对2bi*8pair*2wire32wire第一版的实现被称为nvlink 1.0与P100 GPU一同发布。一块P100上集成了4条nvlink。每条link具备双路共40GB/s的带宽整个芯片具备整整160GB/s的带宽这种设计使得 NVLINK 在进行大量数据传输时能保持较低的延迟。NVLink提供比PCIe更高的带宽和更低的延迟。支持GPU之间的高速数据传输适用于需要大量GPU通信的应用场景NVLink主要应用于需要大规模并行计算的高性能场景中如深度学习、AI推理、科学模拟和金融分析等。特别是在深度学习领域NVLink允许多个GPU之间实现高速数据传输从而大幅加速了模型训练的速度。-- HBM2High Bandwidth Memory 2一种高性能内存技术直接集成在GPU旁边提供高带宽的内存访问。-- TxTransmit和RxReceive分别表示数据传输的发送和接收通道。这些通道通过NVLink连接在一起形成一个数据传输网络。NVLINK的工作流程1. 寻址和初始化在使用NVLINK 进行通信之前需要对目标 GPU 进行寻址和初始化。这通常通过设置 GPU 设备的地址和端口号来完成。2. 数据传输一旦寻址和初始化完成就可以开始进行数据传输。NVLINK 支持两种数据传输模式DMA 和 P2P。DMA 模式在 DMA 模式下CPU 可以通过 NVLink 桥接器直接将数据传输到目标 GPU 的显存中。这个过程不需要目标 GPU 的参与因此可以有效地提高数据传输效率。P2P 模式在 P2P 模式下两个 GPU 之间可以直接进行数据传输。这种模式通常用于在 GPU 之间共享数据或进行并行计算任务。3. 数据接收和处理目标 GPU 在接收到数据后会对其进行处理或存储。在这个过程中GPU 可以使用 CUDA 核心直接访问显存以实现高效的数据处理。--查看 NVLink 拓扑信息运行以下命令nvidia-smi topo -m“CPU Affinity” 指的是 CPU 亲和性它描述了特定的硬件资源如 GPU与 CPU 核心之间的关联关系。在表格中GPU0 和 GPU1 对应的 CPU Affinity 是 0 - 11这意味着 GPU0 和 GPU1 与 CPU 的 0 - 11 号核心有较高的亲和性如果使用多个 GPU根据 CPU Affinity 将不同的 GPU 分配给对应的 CPU 核心组来处理相关任务更好地利用 CPU 资源减少资源竞争可以加快训练速度。--查看 NVLink 带宽运行以下命令nvidia-smi nvlink --status这将显示 NVLink 的状态和带宽信息包括每个通道的带宽是否已启用。其他命令自行deepseekDGX-1第一种nvidia专门为AI加速订制的机器叫做dgx1它集成了八块p100与两块志强e5 2698v4(英特尔Intel至强Xeon系列的处理器),但是因为每块GPU只有4路nvlink这些GPU构成了一种混合的cube-mesh网络拓扑结构GPU被4块4块分为两组然后在互相连接。也叫做cube-mesh拓扑结构由多个GPU组成这些GPU通过NVLink等高速互连技术相连形成一个立方体或多维网格状的网络架构。同时因为GPU需要的pcie通道数量超过了芯片组所能提供的数量所以每一对GPU将连接到一组pcie switch上与志强相连然后两块志强再通过qpi总线连接。8块P100每块16GB HBM2显存总计128GB显存和512GB DDR4-2133系统内存。nvlink 2.0nvlink 2.0提升了信号的传输率从20Gb/s到了25Gb/s双信道总计50GB/spre nvlink。同时进一步提升了nvlink数到6路。这些举措让v100的总带宽从p100的160GB/s提升到了300GB/s。NVSwitchNVLink 技术无法使单服务器中 8 个 GPU 达到全连接为解决该问题NVIDIA 在 2018 年发布了 NVSwitch实现了 NVLink 的全连接。NVIDIA NVSwitch 是首款节点交换架构可支持单个服务器节点中 16 个全互联的 GPU并可使全部 8 个 GPU 对分别达到 300GB/s 的速度同时进行通信提供一致的高带宽连接。NVIDIA的GB200服务器通过NVSwitch连接32个GPU实现高达14.4 TB/s的带宽。-- NVSwitch的简单理解如上图所示在没有 NVSwitch 的配置中GPU 之间的连接通常是通过将 NVLinks 聚合成多个组Gang来实现的。这意味着多个 GPU 通过共享的 NVLink 链路进行通信。然而这种方法的一个限制是任意两个 GPU 之间的最大带宽受限于它们所在 Gang 的 NVLink 数量和带宽。右图引入 NVSwitch 后VSwitch 作为一个高速交换机允许所有链路上的数据进行交互。在 NVSwitch 架构中任意一对 GPU 都可以直接互联且只要不超过六个 NVLink 的总带宽单个 GPU 的流量就可以实现非阻塞传输。这也就意味着NVSwitch 支持的全互联架构意味着系统可以轻松扩展以支持更多的 GPU而不会牺牲性能。每个 GPU 都能利用 NVLink 提供的高带宽实现快速的数据交换0、1两张卡正在通信其他卡间也可以全速通信互不影响。NVSwitch 技术通过提供高带宽、低延迟的多 GPU 互联解决了大规模并行计算中的通信瓶颈问题。RDMARemote Direct Memory Access远程直接内存访问(即RDMA)允许GPU直接访问远程GPU的内存绕过CPU减少延迟提高数据传输效率。它将数据直接从一台计算机的内存传输到另一台计算机无需双方操作系统的介入。是一种为了解决网络传输中服务器端数据处理延迟而产生的技术。传统的 TCP/IP 软硬件架构及应用存在着网络传输和数据处理的延迟过大、存在多次数据拷贝和中断处理、复杂的 TCP/IP 协议处理等问题。RDMA 将用户应用中的数据直接传入服务器的存储区通过网络将数据从一个系统快速传输到远程系统的存储器中消除了传输过程中多次数据复制和文本交换的操作降低了 CPU 的负载。RDMA技术的原理及其与TCP/IP架构的对比如下图所示。RDMA 技术主要包括-- IBInfiniBand基于 InfiniBand 架构的 RDMA 技术由 IBTAInfiniBand Trade Association提出。搭建基于 IB 技术的 RDMA 网络需要专用的 IB 网卡和 IB 交换机。-- iWARPInternet Wide Area RDMA Protocal基于 TCP/IP 协议的 RDMA 技术由 IETF 标 准定义。iWARP 支持在标准以太网基础设施上使用 RDMA 技术但服务器需要使用支持iWARP 的网卡。-- RoCERDMA over Converged Ethernet基于以太网的 RDMA 技术也是由 IBTA 提出。RoCE支持在标准以太网基础设施上使用RDMA技术但是需要交换机支持无损以太网传输需要服务器使用 RoCE 网卡。

更多文章