近年来人工智能技术迅猛发展,AI应用覆盖语音识别、图像处理、视频分析、自然语言处理等多个领域,而这些能力的背后无一例外都需要强大的计算资源支撑。AI对算力的需求究竟有多大?简单来说,即便单张GPU的计算能力再强,也难以应对不断膨胀的模型规模——单卡存在极限,那就通过多卡组合来突破。而GPU多卡的组合方式主要分为两种:单服务器内多张GPU卡,以及多服务器各带多张GPU卡。无论是单机多卡还是多机多卡,GPU之间都需要超强的通信能力作为保障。今天我们就来深入拆解,GPU通信技术到底是如何实现的。
单机多卡GPU通信详解
GPUDirect技术概览
GPUDirect是NVIDIA推出的一项核心技术,其核心思路是让GPU与其他设备(如网络接口卡、存储设备)直接对话、直接传输数据,不再需要CPU在中间充当传话筒。过去,数据在GPU和其他设备之间传输时,必须经过CPU这个中间人,结果可想而知——瓶颈出现,延迟上升。而有了GPUDirect,网络适配器和存储驱动器可以直接读写GPU内存,既减少了不必要的内存消耗,又降低了CPU开销和延迟,整体性能自然得到提升。GPUDirect技术家族包含GPUDirect Storage、GPUDirect RDMA、GPUDirect P2P以及GPUDirect视频等多个成员。
GPUDirect Storage:存储直连加速
GPUDirect Storage允许存储设备与GPU之间直接传输数据,绕过CPU,从而降低延迟和CPU开销。具体来说,GPU可以直接从固态硬盘(SSD)或NVMe驱动器等存储设备中读取数据,而无需先将数据复制到CPU内存中。这种直接访问方式带来了更快的传输速度,也显著提升了GPU资源的利用效率。

其主要特点和优势包括:
- 减少CPU参与:绕过CPU,实现GPU与存储设备直接通信,减轻CPU负担,释放出的资源可用于其他任务,从而改善系统整体性能。
- 低延迟数据访问:数据无需绕道CPU,传输路径缩短,延迟自然降低。这对实时分析、机器学习、高性能计算等对延迟敏感的应用而言,至关重要。
- 提高存储性能:GPU直接访问存储设备,借助高速数据传输大幅提升存储性能,数据密集型工作负载的处理速度也随之加快。
- 增强的可扩展性:支持多GPU配置,多个GPU可同时访问存储设备,这种可扩展性对于大规模并行处理和数据分析场景极为关键。
- 兼容性与生态系统支持:GPUDirect Storage兼容NVMe、NVMe over Fabrics、NAS等多种存储协议,主流存储供应商均提供支持,并已集成到NVIDIA CUDA等流行软件框架中,便于快速集成。
GPUDirect P2P:GPU间直接内存访问
某些工作负载需要同一服务器内的两个或多个GPU之间交换数据。在没有GPUDirect P2P技术时,数据从源GPU出发,必须先通过CPU和PCIe总线复制到主机固定的共享内存,然后再从共享内存复制到目标GPU——这一过程数据被复制了两次。而有了GPUDirect P2P,同一节点内的两个GPU之间传输数据,无需再临时存储到主机内存。如果两个GPU连接在同一PCIe总线上,GPUDirect P2P允许它们直接访问对方的内存,CPU全程无需参与。这样一来,复制操作的数量直接减半,效率翻倍提升。
NVLink:高速互联新架构
在GPUDirect P2P方案中,多个GPU通过PCIe直接连接到CPU,但PCIe 3.0×16的双向带宽还不到32GB/s。随着训练数据不断增大,PCIe带宽很快成为瓶颈。为了提升多GPU之间的通信性能,充分发挥GPU计算能力,NVIDIA在2016年推出了NVLink——一种全新的架构。NVLink是一种高速、高带宽的互连技术,专门用于连接多个GPU之间,或连接GPU与其他设备(如CPU、内存)。它提供直接的点对点连接,传输速度远高于传统PCIe总线,延迟也更低。
- 高带宽和低延迟:NVLink的双向带宽高达300GB/s,接近PCIe 3.0带宽的10倍。点对点连接的超低延迟让数据传输和通信更加快速高效。
- GPU间通信:多个GPU之间可以直接点对点通信,无需通过主机内存或CPU中转。
- 内存共享:支持GPU之间共享内存,多个GPU可直接访问彼此的存储空间。
- 弹性连接:支持2、4、6或8个通道的灵活配置,可根据需要扩展,适用于不同规模和需求的系统。
NVSwitch:全连接交换节点
NVLink虽然强大,但单靠它无法让单服务器中的8个GPU实现全连接。为了解决这一问题,NVIDIA在2018年推出了NVSwitch,实现了NVLink的全连接。NVSwitch是首款节点交换架构,支持单个服务器节点中16个全互联的GPU,并且能让全部8个GPU对同时以300GB/s的速度进行通信。

△ NVSwitch 全连接拓扑示意图
多机多卡GPU通信方案
RDMA:远程直接内存访问
AI计算对算力的需求极为庞大,多机多卡计算已成为常态,而多机之间的通信能力直接影响分布式训练的性能。传统的TCP/IP网络通信中,数据发送方需要将数据多次复制到内存,再经过一系列网络协议处理;接收方同样需要多次拷贝和协议处理才能将数据送达应用程序。这一过程导致服务器间的通信延迟常常达到毫秒级别,远远无法满足多机多卡场景的需求。
RDMA(远程直接内存访问)正是为解决这一痛点而生——它允许绕过远程主机,直接访问其内存中的数据,从而避免网络传输中的数据处理延迟。目前RDMA主要有三种实现方式:
- InfiniBand(IB):一种高性能互连技术,原生支持RDMA。使用专用的IB适配器和交换机,通过RDMA操作实现节点间的高速直接内存访问和数据传输。
- RoCE(RDMA over Converged Ethernet):在以太网上实现RDMA的技术。使用标准以太网作为底层传输,配合RoCE适配器和协议栈来实现RDMA功能。
- iWARP:基于TCP/IP协议栈的RDMA实现。使用普通以太网适配器和标准交换机,通过在TCP/IP协议栈中实现RDMA功能,提供高性能远程内存访问和数据传输。
GPUDirect RDMA:GPU与RDMA网络直连
GPUDirect RDMA将GPU加速计算与RDMA技术相结合,允许GPU和RDMA网络设备之间直接传输数据,无需通过主机内存或CPU中介。它让GPU能够直接访问RDMA网络设备中的数据,绕过了主机内存和CPU,从而大幅降低传输延迟,加快数据交换速度,并减轻CPU负载。更重要的是,GPUDirect RDMA避免了数据在主机内存中的复制,提高了数据传输的带宽利用率。

IPOIB:InfiniBand上的IP协议
IPOIB(IP over InfiniBand)是一种在InfiniBand网络上运行IP协议的技术。它将标准IP协议栈与IB互连技术结合起来,使IB网络上的节点能够使用IP协议进行通信和数据传输。IPOIB提供了基于RDMA之上的IP网络模拟层,允许应用无需修改即可运行在IB网络上。不过需要注意的是,IPoIB仍需经过内核层的IP协议栈,会产生大量系统调用,并涉及CPU中断,因此其性能低于纯RDMA通信方式。大多数应用会选择RDMA来获取高带宽低延迟的优势,只有少数关键应用才会采用IPoIB通信。
在大规模计算场景中,单机多卡时使用GPUDirect、NVLink,分布式场景下使用GPUDirect RDMA,能够显著缩短通信时间,从而大幅提升整体性能。
