多GPU系统的高速互联技术与拓扑发展现状研究

作者: 崔晨 吴迪 陶业荣 赵艳丽

多GPU系统的高速互联技术与拓扑发展现状研究0

摘 要:      多GPU系统通过横向扩展实现性能提升, 以满足人工智能日趋复杂的算法和持续激增的数据所带来的不断增长的计算需求。 对于多GPU系统而言, 处理器间的互联带宽以及系统的拓扑是决定系统性能的关键因素。 在传统的基于PCIe的多GPU系统中, PCIe带宽是限制系统性能的瓶颈。 当前, 面向GPU的高速互联技术成为解决多GPU系统带宽限制问题的有效方法。 本文首先介绍了传统多GPU系统所采用的PCIe互联技术及其典型拓扑, 然后以Nvidia NVLink、 AMD Infinity Fabric Link、 Intel Xe Link、 壁仞科技BLink为例, 对国内外代表性GPU厂商的面向GPU的高速互联技术及其拓扑进行了梳理分析, 最后讨论了关于互联技术的研究启示。

关键词:     多GPU系统; 高速互联技术; 拓扑; 互联带宽; 数据中心

中图分类号:     TJ760; TP393

文献标识码:    A

文章编号:     1673-5048(2024)01-0023-09

DOI: 10.12132/ISSN.1673-5048.2023.0138

0 引  言

在人工智能三要素中, 随着算法日趋复杂与数据不断激增, 算力逐渐成为人工智能应用创新与落地的关键支撑。

算力的基础是GPU、 FPGA、 ASIC等多种类型的高性能人工智能芯片, 其中GPU在算力峰值、 通用性和兼容性等方面具备较大优势, 成为大多数深度学习模型训练和推理的首选加速器[1-4]。 当前, 全球GPU市场主要由NVIDIA、 AMD、 Intel三家公司垄断, 其先后发布了自己的高性能GPU产品, 通过单个GPU性能的纵向扩展(scale up)和多GPU系统性能的横向扩展(scale out)来满足深度学习不断增长的计算需求。 随着人工智能应用的规模越来越大, 单个GPU通常无法完成训练任务, 多GPU系统逐渐在工作站、 服务器、 超级计算机等各个层面得到了广泛的部署应用[5], 为各种人工智能工作负载提供优异的计算性能和灵活性。

多GPU系统通常以“CPU+GPU”异构计算的方式实现算力扩展, 其中CPU作为控制中心, 对计算任务进行统一调度, 而GPU则作为人工智能加速卡, 专门处理人工智能应用中的大规模矩阵并行计算任务。 使用多GPU系统训练人工智能应用时, 处理器间(CPU-CPU、 CPU-GPU、 GPU-GPU)的互联带宽以及系统的拓扑是影响系统性能的关键因素, 决定了处理器间数据交换的速度, 进而影响了GPU优异的浮点运算性能的实际利用率。 对于CPU-CPU互联, 以Intel CPU为例, 通常通过快速通道互联(Quick Path Interconnect, QPI)或超级通道互联(Ultra Path Interconnect, UPI)进行通信。 而对于CPU-GPU和GPU-GPU互联, 传统的多GPU系统通过PCIe将多个GPU直接与CPU相连, GPU之间则无法直接进行点对点(Peer-to-Peer, P2P)通信, 并且由于CPU提供的PCIe通道数量有限, 因此支持的GPU数量是有限的。 PCIe Switch芯片可用于扩展系统中的PCIe通道数量, 一方面能够容纳更多的GPU, 另一方面同一个PCIe Switch下的GPU可以实现P2P通信。 然而, 随着多GPU系统中GPU相对于CPU的比例持续增长, 且PCIe的带宽远小于CPU和GPU到其DRAM的带宽, 使得PCIe带宽成为限制多GPU系统性能的瓶颈。 当前, 面向GPU的高速互联技术成为解决多GPU系统中带宽限制问题的主流方法。

1 PCIe及其典型拓扑

1.1 PCIe

PCIe是一种高速串行计算机扩展总线标准, 其前身是Intel公司于2001年推出的“3GIO”, 经PCI-SIG认证规范后正式命名为“PCI-Express”, 简称“PCIe”[6]。 PCIe总线作为第三代I/O总线, 具备传输数据速度快、 信号抗干扰能力强、 传输距离远、 功耗低等优点, 使其快速取代ISA和PCI总线, 成为当下应用最为广泛的外设互联协议[7]。 经过约20年的技术迭代与优化, PCIe总线已形成6个标准版本的规范, 如表1所示。 表中的×16表示通道(Lane)数。 PCIe通过链路(Link)实现两台设备的点对点物理连接, 一条链路可以包含×1、 ×2、 ×4、 ×8、 ×12、 ×16、 ×32个信号对, 每一组收发信号对称为一条通道。

2022年1月, PCI-SIG正式发布了PCIe 6.0规范。 PCIe 6.0的主要技术要点是不再采用之前版本所采用的不归零编码(Non-Return-to-Zero, NRZ)调制方式, 而是改用四电平脉冲幅度调制(Pulse Amplitude Modulation 4-Level, PAM4)[8]。 图1给出了这两种调制方式的对比示意图。 NRZ是一种两电平调制技术(PAM2), 采用高、 低两种电平表示逻辑0和1, 每个时钟周期可传输1 bit的逻辑信息。 随着传输速率提高, PCIe的信道衰减越来越大, 使得采用NRZ方法将数据速率提升到32.0 GT/s以上时存在重大挑战。 PAM4使用四种电平来表示四种2 bit的逻辑信息, 即00、 01、 10、 11, 且每个时钟周期可以传输2  bit的逻辑信息。  在相同波特率下, PAM4的数据速率是NRZ的两倍。 此外, PCIe 6.0引入了前向纠错(Forward Error Correction, FEC)机制和循环冗余校验(Cyclic Redundancy Check, CRC), 以缓和PAM4的高误码率[9]。

2022年6月, PCI-SIG在开发者大会上宣布PCIe 7.0规范正在开发中, 预计2025年正式发布。 PCIe 7.0同样采用PAM4调制方式, 单通道最大数据速率为128 GT/s, ×16配置下可实现高达512 GT/s的双向带宽。

1.2 典型的PCIe拓扑

在传统的多GPU系统中, 采用的是PCIe直通的方式将多个GPU直接与CPU连接, 如图2(a)所示。 这种互联方式存在两个缺点。 一是GPU之间无法直接进行P2P通信, 二是由于CPU提供的PCIe通道数量有限, 且网卡等其他设备对PCIe的需求也在不断增加, 因此系统能够支持的GPU数量是有限的。

PCIe Switch芯片可用于扩展系统中的PCIe通道数量。 其具有一个上行端口(upstream port)和若干个下行端口(downstream port), 其中上行端口连接主设备, 下行端口连接端节点设备(endpoint), 或者连接下一级Switch继续扩展PCIe链路[10-11]。 通过PCIe Switch对PCIe总线进行扩展, 一方面可以使系统容纳更多的GPU, 另一方面同一个PCIe Switch下的GPU可以实现P2P通信。

在基于PCIe Switch扩展的多GPU系统中, 主要有三种典型的拓扑, 分别为: Balance拓扑; Common拓扑; Cascade拓扑[12], 如图2(b)~(d)所示。 在这三种拓扑中, 同一个PCIe Switch下的GPU可以实现P2P通信, 不同PCIe Switch下的GPU的通信方式则有所不同。 Balance拓扑中不同PCIe Switch下的GPU通常通过CPU之间的QPI或者UPI进行通信(Intel CPU), Common拓扑中则是跨PCIe Root Port进行通信, Cascade拓扑中2级PCIe Switch下的GPU可以实现P2P通信, 不再需要通过PCIe Root Port。

目前PCIe Switch芯片的核心厂商主要是美国的博通(Broadcom)和微芯科技(Microchip), 表2给出了这两家公司的代表性PCIe Switch产品。 其中, Microchip的PCIe Switch分为PFX、 PSX和PAX三个类型, 分别对应于Fanout、 Programmable和Advanced Fabric三种PCIe Switch。 PSX和PAX比PFX拥有更高级的功能, 比如PSX是客户可编程的, 并提供相应的软件开发套件, 而PAX则能够提供高性能的光纤连接。

2 面向GPU的高速互联技术及其拓扑

随着多GPU系统中GPU相对于CPU的比例持续增长, 且PCIe的带宽远小于CPU和GPU到其DRAM的带宽, 使得PCIe带宽成为限制多GPU系统性能的瓶颈。 此外, 高带宽存储(High Bandwidth Memory, HBM)在GPU中得到广泛应用, 且HBM1[13], HBM2[14-16], HBM2E[17-18], HBM3[19-20]的每管脚速率越来越高, 使得GPU与DRAM之间的数据交换带宽得到了大幅提升。 如果仍基于PCIe实现GPU的P2P通信, 则会进一步加剧PCIe带宽对系统性能的影响。 于是, GPU厂商开始寻求面向GPU的高速互联方式, 如Nvidia NVLink, AMD Infinity Fabric Link, Intel Xe Link和壁仞科技BLink等。

2.1 Nvidia NVLink

Nvidia在2016年发布的Pascal架构GPU(P100)中, 推出了新的高速接口——NVLink 1.0。 NVLink 1.0采用Nvidia全新的高速信号互联(High-Speed Signaling interconnect, NVHS)技术, 一条链路由一对Sub-Link组成, 每个Sub-Link对应一个发送方向并包含8个差分信号对, 每个差分信号对以20 Gb/s的速度传输NRZ形式的差分电信号, 因此一条链路的双向带宽为40 GB/s, P100支持4条链路, 从而能够获得160 GB/s的总双向带宽[5, 21]。 NVLink 1.0既支持GPU-GPU的P2P通信, 也支持CPU-GPU的P2P通信(P100可与IBM的POWER8 CPU通过NVLink 1.0互联), 并允许GPU对远端CPU的主机内存和相连GPU的设备内存进行直接读写。

在NVLink 1.0之后, Nvidia又在2017年的Volta架构(V100)中推出了NVLink 2.0[22], 在2020年的Ampere架构(A100)中推出了NVLink 3.0[23], 在2022年的Hopper架构(H100)中推出了NVLink 4.0[24]。 表3给出了四代NVLink的参数对比。 从表中可以看出, 虽然每条链路的信号对数在逐渐减少, 但每个信号对的数据速率在逐渐增加, 使得每条链路的双向带宽增长到50 GB/s以后保持稳定。 而随着GPU包含的链路数量越来越多, GPU间的双向带宽也在持续增大。 在调制方式上, 前三代NVLink均采用NRZ, 而NVLink 4.0开始采用PAM4[25]。

图3给出了基于NVLink的DGX系统的拓扑[5,22-24]。 基于Pascal架构和NVLink 1.0, Nvidia推出了世界上第一款专为深度学习构建的服务器——DGX-1。 图3(a)是DGX-1系统的混合立方体网格(Hybrid Cube Mesh)拓扑, 其中左右两边的4个P100构成了2个NVLink全连接的四边形, 2个四边形之间也用NVLink进行连接, 每个四边形中的GPU则通过PCIe分别与对应的CPU相连。 通过使用单独的NVLink将2个四边形相连, 一方面能够缓解PCIe上行链路的压力, 另一方面能够避免通过系统内存和CPU间链路进行路由传输[5]。 随着GPU架构的演进, Nvidia对DGX系统不断进行升级。 图3依次给出了基于V100的DGX-1系统(图3(b))、 基于V100的DGX-2系统(图3(c)), 以及DGX A100系统(图3(d))和DGX H100系统(图3(e))的拓扑。 可以看出, DGX系统的拓扑与GPU所包含的链路数紧密相关。 由于实现多GPU系统性能持续扩展的关键是灵活、 高带宽的GPU间通信, 因此在DGX-2系统中, Nvidia引入了NVSwitch 1.0交换芯片。 NVSwitch 1.0具有18个NVLink端口, 每个端口能够与任意其他端口以50GB/s的双向带宽进行全速通信。 DGX-2含有2块基板, 每块基板上有8块V100和6个NVSwitch 1.0, 这是因为V100包含6条链路, 能够同时与6个NVSwitch 1.0连接。 每个NVSwitch 1.0中, 有8个NVLink端口用于基板上的GPU间通信, 另外8个NVLink端口用于与另一块基板相连, 还预留了2个NVLink端口。 因此, DGX-2的GPU间带宽为300 GB/s(50 GB/s×6NVLinks), 总的对分带宽(bisection bandwidth)为2.4TB/s(50 GB/s×8NVLinks×6NVSwitches)。 目前, NVSwitch已经升级到3.0, 表4给出了各版本NVSwitch的参数对比。

上一篇 点击页面呼出菜单 下一篇