AI基础架构:NVLink技术详解
AI基础架构:NVLink技术详解
NVLink是NVIDIA推出的一种专有互连技术,旨在解决多GPU系统中数据传输的瓶颈问题。自2014年首次亮相以来,NVLink经历了三代技术演进,从最初的20GB/s双向带宽提升至目前的50GB/s,为高性能计算领域带来了革命性的变革。本文将为您详细介绍NVLink的技术原理、发展历程及其在实际系统中的应用。
NVLink技术概述
NVLink于2014年首次发布,作为PCI Express的替代方案,专门设计用于NVIDIA的多GPU系统。在NVLink推出之前,多个NVIDIA GPU共享PCIe总线,随着数据集的不断增长,总线成为系统性能的瓶颈。NVLink通过提供更高的带宽和共享内存功能,解决了这一问题。
NVLink的独特之处在于它能够实现超过PCIe的CPU-GPU通信带宽。虽然AMD和Intel在x86系统上实现NVLink的可能性不大,但IBM已经与NVIDIA合作,在其POWER微处理器上引入了NVLink支持。对于这些支持NVLink的微处理器,NVLink能够完全替代所有链路的PCIe,实现更高效、更快速的数据传输。
NVLink技术细节
NVLink通道被形象地称为"Brick"(或NVLink Brick)。每个NVLink都是双向接口,每个方向拥有8个差分对,合计32条线路。这些线路是直流耦合的,采用带有嵌入式时钟的85Ω差分终端。为了优化路由,NVLink支持通道反转和极性调整,这意味着两个设备间的物理通道顺序及其极性可以自由切换。
NVLink数据包的尺寸在1至18个flit之间变化。每个flit包含128位,通过单个header flit和16个payload flit的组合,可传输256字节的数据,峰值效率高达94.12%。若采用单个header flit和4个data payload flit的组合,则可传输64字节的数据,单向效率为80%。然而,在双向流量中,这些效率会略微下降,分别为88.9%和66.7%。
数据包至少由一个标头构成,并可选择加入地址扩展(AE)、字节启用(BE)数据块,以及多达16个的数据负载块。典型的事务包括请求和响应,而发布操作则无需回应。
头部 flit
Header flit拥有128位的宽度,由25位CRC、83位事务和20位数据链路(DL)层字段构成。其中,事务字段涵盖请求类型、地址、流控制及标签标识等关键信息;而数据链路字段则包含数据包长度、应用程序编号标签以及确认标识符等内容。
纠错
NVIDIA的误码率被精确设定为1/1×10^12,这一数字背后是其强大的错误检测技术。借助25位循环冗余校验头字段,我们能确保数据无误。接收器则负责将这些数据安全地存放在重放缓冲区中。当数据传输包按序到达并经过CRC校验确认无误后,发送端将收到确认信息。若超时未收到确认,系统将自动启动回复序列,重新传输所有后续数据包。
CRC字段由25位构建,确保数据包在最多有5个随机位出错的情况下仍可正常工作。对于差分对突发,该字段甚至能容忍多达25个连续位错误。CRC的计算基于报头和前一有效载荷,因此无需为数据有效载荷设置独立的CRC字段。值得注意的是,由于报头中包含了数据包长度信息,因此在CRC校验过程中也将其纳入考虑。
例如,有两个32字节的数据载荷flit和其相关的头部序列。下一个数据包会对当前的头部以及来自上一个事务的这两个数据载荷进行CRC校验。如果这是首个事务,则CRC会默认上一个事务为空事务。
NVLink版本演进
NVLink 1.0
NVLink 1.0最初是在基于Pascal微架构的P100 GPGPU中引入的。除了能够从CPU端访问系统内存外,P100还配备了自己的HBM内存。P100有四个NVLink,支持高达20GB/s的双向带宽,即40GB/s,总聚合带宽为160GB/s。在最基本的配置中,除了连接到CPU以访问系统DRAM的PCIe通道外,所有四个链路都连接在两个GPU之间,以实现160GB/s的GPU-GPU带宽。
首款原生支持NVLink的CPU,IBM POWER8+,引领了一场技术革命。它通过NVLink互连技术,将CPU与速度缓慢的PCIe链路彻底告别。由于P100 GPU仅配备四个NVLink,因此我们巧妙地利用每个GPU的单个链路,实现了CPU与GPU之间的紧密连接。在典型的全配置节点中,我们可以看到两个强大的Power CPU与四个高性能的P100 GPU共同组成。这四个GPU之间完全相互连接,而第四个链路则延伸至CPU,形成了一个高效、协同的工作体系。
在Intel CPU的环境下,由于NVLink的不兼容性(且长期无望支持),P100 GPU的配置变化可能从两个增至四个。无论何种配置,所有GPU都完全互联,每两个GPU都通过一个直连CPU的PCIe交换机连接。值得注意的是,无论配置如何,每个连接都具有40GB/s的双向带宽。此外,这些链接可以聚合,以在任何两个GPU之间提供更高的带宽,使用链接越多,带宽越高。
DGX-1配置
在2017年,NVIDIA引领科技潮流,推出了DGX-1系统,充分利用NVLink技术。这款DGX-1系统由8个Tesla P100 GPU和双插槽Xeon CPU精心打造,以混合立方体网格NVLink网络拓扑巧妙连接。两个Xeon处理器通过英特尔的QPI实现高效通信,而GPU则通过NVLink进行高速数据传输。这一创新组合,让DGX-1成为高性能计算的杰出代表。
NVLink 2.0
NVLink 2.0最早是在基于Volta微架构的V100 GPGPU和IBM的POWER9中推出的。NVIDIA增加了CPU主控支持,允许GPU和CPU在平面地址空间中访问彼此的内存(即直接加载和存储)。平面地址空间通过新的地址转换服务得到支持。此外,还为CPU和GPU添加了对原子操作的本机支持。随着平面地址空间的增加,NVLink现在具有缓存一致性支持,允许CPU高效缓存GPU内存,显著改善延迟并提高性能。NVLink 2.0将信令速率提高到每线25Gbps(25GT/s),实现50GB/s双向带宽。V100还将片上NVLink的数量增加到6个,总聚合带宽为300GB/s。值得注意的是,还添加了额外的省电功能,例如在空闲期间停用通道。
NVLink 2.0首次亮相于第二代DGX-1,但其全面的拓扑结构优化则在DGX-2中实现。NVIDIA还携手DGX-2推出了NVSwitch,这款拥有18个NVLink端口的交换机实力非凡。这款集成了20亿晶体管的交换机,能够实现从9个端口到其他任一端口的流量路由。每个端口提供高达50GB/s的传输速率,使得整个交换机能够提供惊人的900GB/s带宽。
DGX-2,NVIDIA的杰作,通过六个NVSwitches将八个GPU完全互连。每个GPU都可与同一块底板上的其他七个GPU无缝对接,实现卓越的性能和效率。然后将两个底板相互连接,以将所有16个GPU完全连接在一起。
NVLink 3.0
首次亮相的NVLink 3.0,基于Ampere微架构的A100 GPGPU中引入。它引领技术新潮,以50Gbps的信号速率,彰显无与伦比的速度优势。