2024年9月20日

NVIDIA A100 Tensor Core GPU是NVIDIA最新的旗舰GPU。它设计了许多新的创新功能,为HPC、AI和数据分析工作负载提供性能和功能。功能增强包括

现代云数据中心计算密集型应用程序的多样性推动了GPU加速云计算的爆发。此类应用包括人工智能深度学习(DL)训练和推理、数据分析、科学计算、基因组学、边缘视频分析和5G服务、图形渲染和云游戏。基于NVIDIA Ampere架构的A100 GPU为这些工作负载带来了创纪录的规模和新颖的功能。A100 GPU是基于台积电7纳米工艺制造的540亿个晶体管。它有108个流式微处理器(SM),具有6912个CUDA内核、40MB的二级缓存、600 GB/s的NVIDIA NVLink互连带宽和1.6 TB/s的HBM2内存带宽。它还具有新的弹性GPU功能,包括多实例GPU(MIG)虚拟化的扩展支持,以及直接或通过NVIDIA的NVSwitch连接多个A100的第三代50 Gb/s NVLink I/O接口的扩展支持。A100 SM内部是新的第三代张量核心,支持细粒度稀疏性和新的BFloat16(BF16)、TensorFloat-32(TF32)和FP64数据类型。SM还添加了新的异步数据移动指令和屏障,它们协同工作,以程序员友好的方式高效地传输数据。

对比显示,A100提供了比目前可用的商业设计和NVIDIA上一代V100 GPU高得多的性能。在分子动力学、物理、工程和地球科学领域的重要HPC应用中,A100的运行速度比V100快约1.5倍至2倍以上(见图1)。对于DL工作负载,具有A100的DGX超级吊舱创下了MLPerf基准的记录,轻松超过了所有其他商用系统,包括谷歌的TPU3和华为的Ascend系统(见图2)。该基准测试还展示了A100对人工智能网络的广泛支持,这是唯一一个能够运行所有基准测试并以高性能运行它们的系统。

A100中的许多新功能和创新功能为其高性能和功能做出了贡献。本文将介绍其中的一些改进:支持强大扩展的从上到下功能,支持向上和向外扩展的弹性GPU功能,以及提高效率和程序员生产力的异步编程功能。

典型的深度神经网络由相互连接的层的长链组成(见图3)。虽然网络中有大量的计算,但并行性被分解为更小的、顺序相关的工作块。每一层获取一个输入激活张量和权重张量,执行类似于矩阵乘法的运算,并输出一个激活张量。为了利用GPU中可用的大量计算,输出张量被分解为更小的瓦片,这些瓦片分布在不同的SM中。

A100的Tensor Core在密集FP16数据上的吞吐量是上一代V100 GPU的2.5倍。在弱扩展中,网络大小和并行度都必须增长,以匹配增加的吞吐量。在强扩展中,网络大小和可用并行度都保持不变,A100运行网络的速度更快。为了实现强大的可扩展性,A100需要在所有级别上扩展性能:从张量内核,到缓存层次结构,再到DRAM和芯片互连。

与V100相比,A100的新张量核心将密集FP16数据的处理能力提高了每SM 2倍,每GPU 2.5倍(见图4)。张量核心增加了对其他格式的支持,包括TensorFloat-32操作,该操作将FP32数据的处理提高了每GPU 10倍。A100的张量核还支持细粒度稀疏性,这使处理稀疏数据的吞吐量翻倍。对于密集数据,每SM的FP16数学吞吐量增加2倍需要增加2倍的数据带宽,而对于稀疏数据,有效增加4倍需要增加3倍的数据宽度。

在SM核心中,数据传输的多项改进提供了数据带宽的增加(见图5)。在V100和A100 SM内部,网络层瓦片被进一步分解为四个较小的瓦片,每个瓦片由32线线程粒度下工作,并且需要将瓦片进一步分解为每个经线四个较小的瓦片。这些瓦片中的每一个都从共享存储器(SMEM)加载张量数据,这总共需要加载四次所有数据。在A100中,张量核心被重组和增强,以在32线程粒度下工作。这减少了需要加载数据的次数,并将SMEM带宽减少了一半。

存储器系统的数据传输效率也得到了提高。在V100中,数据必须首先加载到寄存器文件中,然后存储到SMEM中。在A100中,添加了一条新的异步组合加载全局存储共享指令,该指令将数据直接传输到SMEM中,绕过寄存器堆,提高了效率。结合Tensor Core组织的变化,A100将6次L1þSMEM访问(L1读取、SMEM写入、4次SMEM读取)减少到只有两次SMEM读。内存传输的异步能力也有助于SM连续传输数据,提高整个内存系统的利用率。

A100 L2高速缓存是SM的共享资源。由于A100中SM的数量增加,并且每个SM以更快的速率处理数据,因此需要L2高速缓存的额外带宽来实现强大的扩展。A100提供了比V100高2.3倍的L2带宽,并由一种新的结构支持,以有效地移动这些数据。二级缓存分为两个分区,以实现更高的带宽和更低延迟的内存访问(图6)。每个L2分区定位并缓存来自直接连接到该分区的SM的用于存储器访问的数据。硬件缓存一致性在整个GPU中保持了CUDA编程模型,应用程序将自动利用A100新L2缓存的带宽和延迟优势。

A100使应用程序能够影响二级缓存中数据的持久性,从而允许对全局存储器进行更高带宽和更低延迟的访问。所谓的持久访问控制替换策略以有效地留出L2高速缓存的一部分。对全局内存的正常或流式访问只能在持久访问未使用L2的这一部分时使用。

有两种主要机制允许持久数据驻留在L2中。在第一个窗口中,指定了一个基于地址的窗口,其中所有的读/写访问都被永久缓存在L2中。此方案中不标记个人访问。或者,可以在更细粒度的、每个内存操作的基础上指定控件。

A100 GPU在SXM4风格的电路板上包括40GB的快速HBM2 DRAM内存。存储器被组织为五个有源HBM2堆叠,每个堆叠具有八个存储器管芯。A100 HBM2具有1215 MHz(DDR)数据速率,可提供1555-GB/s的内存带宽,比特斯拉V100内存带宽高出1.7倍多。

为了提高DRAM带宽和L2容量,A100实现了稀疏性和其他可压缩数据模式的数据压缩功能。L2中的压缩使DRAM读/写带宽提高了4倍,使L2读带宽提高了1倍,使二级容量提高了2倍。

压缩是通过使用CUDA 11中的新API标记可用于压缩性的缓冲区来启动的。写入这些缓冲器的数据由硬件在L2内部进行检查。对于与硬件算法匹配的特定数据模式,数据被压缩并写回L2。任何后续访问都将利用压缩的数据带宽。压缩有助于DRAM的写入和读取访问,并增加可用的有效DRAM带宽。

第三代NVIDIA的高速NVLink互连在A100和新的NVSwitch中实现。NVLink是一种可靠、高带宽、低延迟的存储器互连,包括链路级错误检测和数据包重放机制等弹性功能,以确保数据的成功传输。新的NVLink每个信号对的数据速率为50 Gb/s,几乎是特斯拉V100 25.78-Gb/s速率的两倍。与V100中的八个信号对(八个通道)相比,每个链路在每个方向上使用四个差分信号对(四个通道)。单个链路在每个方向上提供25-GB/s的带宽,类似于V100GPU,但与V100相比只使用一半的信号。在A100中,NVLink链路的总数增加到12个,而在V100中为6个,整个A100的总带宽为600-GB/s,而特斯拉V100为300GB/s。每个A100中的12个NVLink链路允许各种配置,并与其他GPU和交换机高速连接。

第三代NVLink中的所有写入操作现在都需要来自目标的确认。这允许在请求者处执行同步,并将错误归因返回到特定的执行上下文。当请求者等待响应时,允许通过管道写入目标。还增加了新功能,以提高小负载写入和无数据响应的效率。

每个A100中的12个NVLink链路允许各种配置,并与其他GPU和交换机高速连接。为了满足更大、更复杂的DNN和HPC模拟日益增长的计算需求,新的NVIDIA DGX A100系统(图7)包括八个A100 GPU,通过启用NVLink的新NVSwitch连接。多个DGX A100系统可以通过NVIDIA Mellanox InfiniBand和Mellanox以太网等网络结构连接,以扩展数据中心,从而创建强大的超级计算机级系统。更强大的NVIDIA DGX POD和NVIDIA DG X Super POD系统将包括多个DGX A100系统,以提供更大的计算能力和强大的扩展能力。

虽然许多数据中心工作负载的规模和复杂性都在不断扩大,但一些加速任务的要求并不那么高,例如早期开发或低批量大小的简单模型的推理。数据中心管理者的目标是保持较高的资源利用率,因此理想的数据中心加速器不仅需要有效地处理大型工作负载,还需要有效地加速许多较小的工作负载。

新的 MIG 功能可以将每个 A100 划分为多达 7 个 GPU 实例,以实现最佳利用率,从而有效扩展对每个用户和应用程序的访问。A100 GPU 的新 MIG 功能可以将单个 GPU 划分为多个称为 GPU 实例的 GPU 分区。每个实例的 SM 在整个内存系统中都有单独且隔离的路径 – 片上交叉开关端口、L2 缓存组、内存和 DRAM 地址总线都唯一分配给单个实例。这确保了单个用户的工作负载可以以可预测的吞吐量和延迟运行,并且具有相同的 L2 缓存分配和 DRAM 带宽,即使其他任务正在破坏自己的缓存或使其 DRAM 接口饱和。利用此功能,MIG 可以对可用的 GPU 计算资源进行分区,以提供定义的服务质量 (QoS),并为不同客户端(例如 VM、容器、进程等)提供故障隔离。它允许多个 GPU 实例在单个物理 A100 GPU 上并行运行。MIG 还保持 CUDA 编程模型不变,以最大限度地减少编程工作量。

MIG 使用户能够在虚拟 GPU 实例上查看和调度作业,就像它们是物理 GPU 一样。MIG 可与 Linux 操作系统及其虚拟机管理程序配合使用。

CUDA 的目标是将直观的 Cþþ 源代码编译为 GPU 的高性能可执行程序。在这种追求中,编译器的目标是紧张的:最大化操作级并行性,但决不改变程序的语义。NVIDIA 在联合硬件和编程系统协同设计方面的工作直接解决了这种紧张局势。

A100 的 CUDA 更新扩展了 Cþþ 在数据和计算流水线方面的表现力,我们认为这是 CUDA 程序员日益增长的困难来源。软件中流水线的目标与硬件中的相同:通过重叠不同计算阶段的延迟来保持执行资源繁忙。由于 Cþþ 对内存一致性的保守要求,这很难用 Cþþ 来表达。图 8 中的示例程序显示同步语义阻止了操作级并行性。软件流水线依赖于在阶段边界解决同步问题时执行独立工作的机会。

第一个编程模型创新借鉴了异步编程:将到达和等待步骤分开,就像在移相器中一样。在开发早期,NVIDIA 认识到这一创新将使 CUDA 以外的程序员受益,因此 NVIDIA 向社区提供了规范和实现;它现在是 ISO Cþþ 205 的一部分,并且现在可以在 LLVM (libcxx) 中使用。第二项创新通过异步数据移动功能扩展了这一基础。图 9 中的示例程序结合了异步屏障和数据移动操作,从而非常精确地表达了编程意图。通过利用异步操作的宽松语义,编译程序的难度净降低,并且性能更高且更可预测。

NVIDIA 的 A100 GPU 是 NVIDIA 开发的最大、最先进的 GPU,建立在前几代 NVIDIA GPU 的基础上。它是数千名工程师共同努力的结果,从晶体管到标准以及系统集成和编程模型设计等之间的一切。A100 在各个规模上提供前所未有的加速,并添加了强大的新功能,为 HPC、AI 和数据分析工作负载提供显着更快的性能。

发表评论

邮箱地址不会被公开。 必填项已用*标注