详解 Nvidia Ampere 架构

NVIDIA的Ampere架构在计算性能、AI和光线追踪方面取得重大进步,通过增加CUDA核心、第三代TensorCore和第二代RTCore,提升GPU的性能、能效和AI训练效率。A100GPU的MIG功能和PCIe4.0支持使其适用于云计算和数据中心。
摘要由CSDN通过智能技术生成

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

主要特点和改进:

  1. 更多的CUDA核心:Ampere架构显著增加了CUDA核心数量,提高了每个SM(流式处理器)的计算能力,使得整体性能得到大幅提升。

  2. 第三代Tensor Core:Ampere引入了第三代Tensor Core,这些专用核心针对AI和深度学习计算进一步优化,支持更高效的混合精度运算,显著提升了AI训练和推理的性能。

  3. 第二代RT Core:Ampere架构加入了第二代RT Core,这些核心专门为光线追踪技术设计,提供更高效的光线追踪计算能力,带来更逼真的渲染效果。

  4. 更大的内存带宽和容量:Ampere GPU使用了更快的内存技术(如GDDR6X)和更大的内存容量,为大规模数据集和复杂应用提供支持。

  5. 改进的能效:Ampere架构在保持或提升性能的同时,也优化了能效比,使得同等能耗下能够执行更多的计算任务。

  6. 多实例GPU(MIG)功能:A100引入了多实例GPU功能,允许将GPU划分为多个独立的硬件分区,每个分区可以运行不同的任务,适用于云计算和数据中心环境。

  7. PCI Express 4.0支持:Ampere GPU支持PCI Express 4.0标准,提供比前一代GPU更高的数据传输速度。

  8. 支持更多的并发运算:Ampere架构支持更多的并发运算和更复杂的计算任务,适合执行高性能计算(HPC)和复杂的数据分析。

  9. 异步复制:提供了一个新的异步复制指令,可将数据直接从全局内存加载到 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 位内存控制器
    GA100 全 GPU,具有 128 个 SM。A100 Tensor Core GPU 有 108 个 SM

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 在深度学习训练中的作用:

  1. 前向传播:CUDA Core可以处理前向传播过程中的多种操作,例如卷积、激活函数、池化等。每个操作都可以映射为大量的并行线程,由CUDA Core同时执行。

  2. 反向传播:当计算梯度时,CUDA Core同样用于执行反向传播中的各种操作,如梯度的计算和权重更新。

  3. 优化算法:优化器(如SGD、Adam等)通常使用CUDA Core来并行执行权重更新的操作。

  4. 数据预处理:CUDA Core还可以用来加速训练数据的预处理,如图像的裁剪、旋转、归一化等。

Tensor Core 在深度学习训练中的作用:

  1. 加速矩阵计算:深度学习的大部分计算量集中在矩阵运算上,尤其是卷积和全连接层的矩阵乘法。Tensor Core可以显著加速这些矩阵运算,因为它们专门为此类计算进行了优化。

  2. 混合精度训练:Tensor Core支持使用较低精度(如FP16)进行计算,这可以减少内存使用和加速训练过程,同时使用FP32来累积梯度,以保持训练的稳定性。

  3. 提升吞吐量:利用Tensor Core进行的混合精度训练可以让模型在相同的硬件资源下更快地执行更多的训练迭代。

在实际的训练过程中,CUDA Core和Tensor Core可以被同时使用。在使用深度学习框架(如TensorFlow或PyTorch)时,这些框架的底层实现通常会根据具体的操作和硬件能力自动选择使用CUDA Core还是Tensor Core。

  1. 自动选择:深度学习框架通常会基于操作的性质和数据类型自动选择最合适的核心。例如,对于大规模的矩阵乘法操作,框架可能会选择使用Tensor Core。

  2. 协同执行:在同一神经网络训练任务中,某些层或操作可能使用CUDA Core,而其他层或操作可能使用Tensor Core。例如,矩阵乘法使用Tensor Core加速,而自定义的或不规则的操作可能使用CUDA Core执行。

  3. 流水线执行:一些深度学习框架能够在GPU上创建计算流水线,其中一些操作使用CUDA Core,同时其他操作使用Tensor Core,并行执行,以此提升整体计算效率。

SM 架构

在这里插入图片描述

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)。 新的基于共享内存的屏障单元(异步屏障),用于新的异步复制指令。
    在这里插入图片描述

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/

  • 28
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值