NVLink是一种由Nvidia开发的基于线缆的串行、多通道、近距通信链路,用于连接高性能计算系统中的处理器。与PCI Express不同,一个设备可以由多个NVLink组成,并且设备可以使用网状网络进行通信,而无需中央集线器或交换机。该协议于2014年3月首次公布,采用专有的高速信号互连(NVHS)。它主要用于在CPU和GPU之间以及GPU和GPU之间传输数据和控制代码,为人工智能和机器学习等计算密集型工作负载提供高带宽、低延迟的通信。
NVLink规定点对点连接的数据速率分别为1.0、2.0和3.0及以上版本的每差分对20、25和50 Gbit/s。对于NVLink 1.0和2.0,八个差分对形成一个子链路,两个子链路(每个方向一个)形成一个链路。从NVLink 3.0开始,只有四个差分对形成一个子链路。对于NVLink 2.0及以上版本,子链路的总数据速率为25 GB/s,链路的总数据速率为50 GB/s。每个V100 GPU最多支持六个链路,提供高达300 GB/s的总双向带宽。NVLink 3.0于2020年5月14日公布,将每差分对的数据速率从25 Gbit/s提高到50 Gbit/s,同时将每链路的对数从8对减少到4对。对于基于Ampere架构的A100 GPU,具有12个链路,总带宽达到600 GB/s。Hopper GPU微架构于2022年3月公布,具有18个NVLink 4.0链路,支持900 GB/s的总带宽。NVLink 6用于Nvidia的Vera Rubin NVL72平台,每个GPU提供3.6 TB/s的双向带宽,NVL72机架使用九个NVLink 6交换机,提供260 TB/s的总扩展带宽。
拓扑与交换
对于少量GPU,单个设备上的NVLink通道足以实现全对全的网状连接。为了适应更高的GPU数量,自2018年起,NVLink采用分组交换架构,其中中央交换机最多可服务32个双通道端口。NVLink 4.0的NVSwitch可以执行一些简单的自身计算(例如求和、广播),以减少通信需求,这得益于SHARP加速器。这使得扩展超出了直接GPU到GPU连接的范围,支持DGX系列和NVL72机架等更大规模系统。
性能特征
实际性能取决于应用不同的数据传输开销成本,例如128b/130b线路编码、链路控制字符、事务头、缓冲能力以及计算机端的DMA使用。这些物理限制通常将数据速率降低到传输速率的90%到95%之间。NVLink基准测试显示,对于由IBM POWER8 CPU驱动的系统中面向P100 GPU的40 Gbit/s(2个子通道上行)NVLink连接,可实现约35.3 Gbit/s(主机到设备)的传输速率。
与插卡配合使用
对于各种版本的插卡,少量高端游戏和专业图形GPU板卡会暴露额外的连接器,用于将它们加入NVLink组。存在类似数量的、略有差异的、相对紧凑的基于PCB的互连插头。通常,由于物理和逻辑设计,只有相同类型的板卡才能相互配合。对于某些设置,需要应用两个相同的插头才能达到完整数据速率。典型插头为U形,每个端部带有细网格边缘连接器,面向远离观察者的方向。插头的宽度决定了插卡需要相隔多远,已知插头宽度为3到5个插槽,具体取决于板卡类型。这种互连通常被称为可扩展链路接口(SLI),自2004年起因其结构设计而得名,尽管现代基于NVLink的设计在技术上有所不同。已报告的设备包括Quadro GP100(最多2个桥接器,160 GB/s)、Quadro GV100(最多2个桥接器,200 GB/s)、GeForce RTX 2080和2080 Ti(单桥接器)、GeForce RTX 3090(独特桥接器)以及Quadro RTX 5000、6000和8000(单桥接器,最高可达100 GB/s)。
服务软件与编程
对于Tesla、Quadro和Grid产品线,NVML-API(Nvidia管理库API)提供函数,用于在Windows和Linux上以编程方式控制NVLink的各个方面,例如组件评估、状态/错误查询和性能监控。NCCL库(Nvidia集体通信库)使开发人员能够在NVLink之上实现强大的深度学习和计算密集型应用。Nvidia控制面板的“3D设置”页面和CUDA示例应用程序“simpleP2P”使用此类API。在Linux上,带有子命令“nvidia-smi nvlink”的命令行应用程序提供高级信息和控制。
历史
2016年4月5日,Nvidia宣布NVLink将应用于基于Pascal微架构的GP100 GPU,如Nvidia Tesla P100产品中所用。随着DGX-1高性能计算机的推出,单个机架系统中最多可容纳八个P100模块,连接到最多两个主机CPU。载板允许使用专用板卡来路由NVLink连接,每个P100需要800个引脚(400个用于PCIe加电源,另外400个用于NVLink)。此后,NVLink经历了多代演进,每一代都增加了带宽和链路数量,并且它仍然是Nvidia的生成式人工智能和大语言模型训练基础设施中的关键组件。