东湖之滨 发表于 2024-8-3 19:57:52

详解 Nvidia Ampere 架构

NVIDIA Ampere架构是NVIDIA推出的高性能GPU微架构,它是继Volta和Turing架构之后的新一代技能。Ampere架构在2020年初次发布,并被用于构建多种范例的GPU产品,包括数据中心的A100以及面向消费者的GeForce RTX 30系列显卡。Ampere架构代表了在计算性能、能效和AI加速方面的重大进步。
主要特点和改进:


[*] 更多的CUDA核心:Ampere架构明显增加了CUDA核心数目,提高了每个SM(流式处置惩罚器)的计算能力,使得整体性能得到大幅提升。
[*] 第三代Tensor Core:Ampere引入了第三代Tensor Core,这些专用核心针对AI和深度学习计算进一步优化,支持更高效的混合精度运算,明显提升了AI训练和推理的性能。
[*] 第二代RT Core:Ampere架构加入了第二代RT Core,这些核心专门为光线追踪技能设计,提供更高效的光线追踪计算能力,带来更逼真的渲染效果。
[*] 更大的内存带宽和容量:Ampere GPU使用了更快的内存技能(如GDDR6X)和更大的内存容量,为大规模数据集和复杂应用提供支持。
[*] 改进的能效:Ampere架构在保持或提升性能的同时,也优化了能效比,使得同等能耗下能够实行更多的计算任务。
[*] 多实例GPU(MIG)功能:A100引入了多实例GPU功能,允许将GPU分别为多个独立的硬件分区,每个分区可以运行不同的任务,适用于云计算和数据中心环境。
[*] PCI Express 4.0支持:Ampere GPU支持PCI Express 4.0标准,提供比前一代GPU更高的数据传输速率。
[*] 支持更多的并发运算:Ampere架构支持更多的并发运算和更复杂的计算任务,适合实行高性能计算(HPC)和复杂的数据分析。
[*] 异步复制:提供了一个新的异步复制指令,可将数据直接从全局内存加载到 SM 共享内存中,无需使用中间寄存器文件 (RF)。异步复制可淘汰寄存器文件带宽,更有效地使用内存带宽,并低落功耗。顾名思义,当 SM 实行其他计算时,可以在背景完成异步复制。
以 NVIDIA GA100 为 例子

NVIDIA GA100 GPU 由多个 GPU 处置惩罚集群 (GPC)、纹理处置惩罚集群 (TPC)、流式多处置惩罚器 (SM) 和 HBM2 内存控制器组成。
GA100 GPU 的完整实现包括以下单元:


[*]8 个 GPC、8 个 TPC/GPC、2 个 SM/TPC、16 个 SM/GPC、128 个 SM 每个完整 GPU
[*]每个完整 GPU 64 个 FP32 CUDA 核心,8192 个 FP32 CUDA 核心
[*]4 个第三代 Tensor Core/SM,每个完整 GPU 512 个第三代 Tensor Core
[*]6 个 HBM2 堆栈,12 个 512 位内存控制器
GA100 GPU 的 A100 Tensor Core GPU 实现包括以下单元:


[*]7 个 GPC、7 或 8 个 TPC/GPC、2 个 SM/TPC、最多 16 个 SM/GPC、108 个 SM
[*]每个 GPU 64 个 FP32 CUDA 核心,6912 个 FP32 CUDA 核心
[*]每个 GPU 4 个第三代 Tensor Core,432 个第三代 Tensor Core
[*]5 个 HBM2 堆栈,10 个 512 位内存控制器
https://i-blog.csdnimg.cn/blog_migrate/a0d0606e0c68bf6944b3d0c9a3b97448.png
   GA100 全 GPU,具有 128 个 SM。A100 Tensor Core GPU 有 108 个 SM
以下是图中一些关键组件的解释及其工作方式:
GPC(Graphics Processing Cluster,图形处置惩罚集群)



[*]GPC是GPU内的一个主要的硬件单元,它包含了多个下层的结构如TPC(Texture Processing Cluster,纹理处置惩罚集群)和SM(Streaming Multiprocessor,流式处置惩罚器)。GPC是高级图形处置惩罚任务的实行单元,如图形渲染。
TPC(Texture Processing Cluster,纹理处置惩罚集群)



[*]TPC是GPC内的组件,每个TPC包含若干SM和用于处置惩罚纹理的特定硬件。它负责具体的图形任务,比如纹理映射和着色。
SM(Streaming Multiprocessor,流式处置惩罚器)



[*]SM是GPU中负责实行计算任务的基本单元,可以理解为GPU的心脏。每个SM包含若干CUDA核心以及专门设计的张量核心和RT核心。
[*]所有的CUDA步伐终极都在SM上的CUDA核心中实行。
[*]图中绿色部分标记的就是SM,它们在Ampere架构中负责并行处置惩罚大量的线程。
CUDA Core & Tensor Core



[*]CUDA Core是NVIDIA GPU上实行计算的基础处置惩罚单元,类似于CPU中的核心。它可以并行实行多个计算任务,是实现高性能并行计算的关键。
[*]Tensor Core是张量核心,专为AI计算优化,提供加速深度学习矩阵计算的能力。
RT Core(Ray Tracing Core,光线追踪核心)



[*]RT核心专门用于加速光线追踪渲染计算,这是一种能够产生高度逼真图像效果的渲染技能。
L2 Cache



[*]L2缓存位于图中的底部,是一个大容量的缓存,用于存储频繁访问的数据,淘汰访问主内存的延迟。
Memory Controller



[*]内存控制器位于图的左侧、底部和右侧,负责管理GPU的内存访问,包括GDDR6内存接口的数据读写操作。
PCI Express 4.0 Host Interface & NVLink



[*]顶部橙色部分的PCI Express 4.0 Host Interface是GPU连接到主机CPU和系统内存的接口。
[*]底部灰色区域的NVLink是高速互连接口,允许多个GPU之间或与CPU之间进行快速数据交换。
工作流程

当运行图形或计算步伐时:


[*]CPU通过PCI Express接口发送指令和数据到GPU。
[*]GPC接收任务并分配给内部的TPC和SM进行处置惩罚。
[*]SM中的CUDA核心、Tensor Core、RT Core实行具体的计算任务。
[*]L2缓存作为数据的临时存储地,淘汰全局内存访问延迟。
[*]NVLink在多GPU设置中提供高速数据交换。
Cuda Core 和 Tensor Core 的区别

在进行深度学习训练,例如使用ResNet-18模子时,CUDA Core和Tensor Core在计算过程中饰演着各自的角色,并可以协同工作以提升整体的训练服从。以下是它们各自的工作方式以及如何联系起来:
CUDA Core 在深度学习训练中的作用:


[*] 前向传播:CUDA Core可以处置惩罚前向传播过程中的多种操作,例如卷积、激活函数、池化等。每个操作都可以映射为大量的并行线程,由CUDA Core同时实行。
[*] 反向传播:当计算梯度时,CUDA Core同样用于实行反向传播中的各种操作,如梯度的计算和权重更新。
[*] 优化算法:优化器(如SGD、Adam等)通常使用CUDA Core来并行实行权重更新的操作。
[*] 数据预处置惩罚:CUDA Core还可以用来加速训练数据的预处置惩罚,如图像的裁剪、旋转、归一化等。
Tensor Core 在深度学习训练中的作用:


[*] 加速矩阵计算:深度学习的大部分计算量集中在矩阵运算上,尤其是卷积和全连接层的矩阵乘法。Tensor Core可以明显加速这些矩阵运算,因为它们专门为此类计算进行了优化。
[*] 混合精度训练:Tensor Core支持使用较低精度(如FP16)进行计算,这可以淘汰内存使用和加速训练过程,同时使用FP32来累积梯度,以保持训练的稳定性。
[*] 提升吞吐量:利用Tensor Core进行的混合精度训练可以让模子在雷同的硬件资源下更快地实行更多的训练迭代。
在实际的训练过程中,CUDA Core和Tensor Core可以被同时使用。在使用深度学习框架(如TensorFlow或PyTorch)时,这些框架的底层实现通常会根据具体的操作和硬件能力自动选择使用CUDA Core照旧Tensor Core。

[*] 自动选择:深度学习框架通常会基于操作的性子和数据范例自动选择最合适的核心。例如,对于大规模的矩阵乘法操作,框架可能会选择使用Tensor Core。
[*] 协同实行:在同一神经网络训练任务中,某些层或操作可能使用CUDA Core,而其他层或操作可能使用Tensor Core。例如,矩阵乘法使用Tensor Core加速,而自界说的或不规则的操作可能使用CUDA Core实行。
[*] 流水线实行:一些深度学习框架能够在GPU上创建计算流水线,其中一些操作使用CUDA Core,同时其他操作使用Tensor Core,并行实行,以此提升整体计算服从。
SM 架构

https://i-blog.csdnimg.cn/blog_migrate/27c5012f8886078f16a31096e6ca75d9.png
   GA100 的流式多处置惩罚器 (SM)
Volta 和 Turing 每个 SM 有 8 个 Tensor Core,每个 Tensor Core 每个时钟实行 64 个 FP16/FP32 混合精度融合乘法加法 (FMA) 运算。A100 SM 使用新的第三代 Tensor Core,每个 Tensor Core 每个时钟实行 256 次 FP16/FP32 FMA 操作。A100 每个 SM 有四个张量核心,每个时钟总共提供 1024 个密集的 FP16/FP32 FMA 操作,与 Volta 和 Turing 相比,每个 SM 的计算马力增加了 2 倍。
此处简要先容了 SM 的主要功能,并在本文后面进行了详细描述:
第三代 Tensor Core:


[*]所有数据范例的加速,包括 FP16、BF16、TF32、FP64、INT8、INT4 和二进制。
[*]新的 Tensor Core 稀疏性功能利用了深度学习网络中的细粒度结构化稀疏性,将标准 Tensor Core 操作的性能提高了一倍。
[*]A100 中的 TF32 Tensor Core 操作提供了在 DL 框架和 HPC 中加速 FP32 输入/输出数据的简单途径,运行速率比 V100 FP32 FMA 操作快 10 倍,大概在稀疏性条件下快 20 倍。
[*]FP16/FP32 混合精度 Tensor Core 操作为 DL 提供了前所未有的处置惩罚能力,运行速率比 V100 Tensor Core 操作快 2.5 倍,稀疏性增加到 5 倍。
[*]BF16/FP32混合精度 Tensor Core 操作的运行速率与 FP16/FP32 混合精度雷同。 FP64 Tensor Core 操作为 HPC 提供前所未有的双精度处置惩罚能力,运行速率比 V100 FP64 DFMA 操作快 2.5 倍。
[*]INT8 Tensor Core操作具有稀疏性,可为 DL 推理提供前所未有的处置惩罚能力,运行速率比 V100 INT8 操作快 20 倍。
[*]192 KB 共享内存和 L1数据缓存组合,比 V100 SM 大 1.5 倍。
[*]新的异步复制指令将数据直接从全局内存加载到共享内存中,可以选择绕过 L1 缓存,并且无需使用中间寄存器文件 (RF)。 新的基于共享内存的屏障单元(异步屏障),用于新的异步复制指令。
https://i-blog.csdnimg.cn/blog_migrate/650563fccfab2060005d4f95535d5f00.png
   A100 Tensor Core 操作与 V100 Tensor Core 的比较以及不同数据范例的标准操作
NVIDIA Ampere 架构引入了对 TF32 的新支持,使 AI 训练能够默认使用张量核心,而无需用户付出任何努力。非张量操作继续使用 FP32 数据路径,而 TF32 张量核心读取 FP32 数据并使用与 FP32 雷同的范围,但内部精度低落,然后再天生标准 IEEE FP32 输出。TF32 包括一个 8 位指数(与 FP32 雷同)、10 位尾数(与 FP16 雷同)和 1 个符号位。
与 Volta 一样,自动混合精度 (AMP) 使您能够将混合精度与 FP16 结合使用,只需更改几行代码即可进行 AI 训练。使用 AMP,A100 的 Tensor Core 性能比 TF32 快 2 倍。
总而言之,用于 DL 训练的 NVIDIA Ampere 架构的选择如下:


[*]默认情况下,使用 TF32 Tensor Core,不调整用户脚本。与 A100 上的 FP32 相比,吞吐量提高了 8 倍,与 V100 上的 FP32 相比,吞吐量提高了 10 倍。
[*]使用 FP16 或 BF16 混合精度训练以得到最大训练速率。与 TF32 相比,吞吐量提高了 2 倍,与 A100 上的 FP32 相比提高了 16 倍,与 V100 上的 FP32 相比,吞吐量提高了 20 倍。
   参考资料:https://developer.nvidia.com/blog/nvidia-ampere-architecture-in-depth/

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 详解 Nvidia Ampere 架构