NVIDA GPU架构演进

GPU发展时间表

在这里插入图片描述

GPU架构的更新主要体现在SM、TPC的增加,最终体现在GPU浮点计算能力的提升。

Kepler架构: FP64单元和FP32单元的比例是1:3或者1:24;GPU型号K80。
Maxwell架构: FP64单元和FP32单元的比例下降到了只有1:32;GPU型号M10/M40。
Pascal架构: 这个比例又提高到了1:2(P100)但低端型号里仍然保持为1:32,型号Tesla P40、GTX 1080TI/Titan XP、Quadro GP100/P6000/P5000
Votal架构: FP64单元和FP32单元的比例是1:2;型号有Tesla V100、GeForceTiTan V、Quadro GV100专业卡。
Turing架构: 一个SM中拥有64个半精度,64个单精度,8个Tensor core,1个RT core。
Ampere架构: 的设计突破,在8代GPU架构中提供了该公司迄今为止最大的性能飞跃,统一了AI培训和推理,并将性能提高了20倍。A100是通用的工作负载加速器,还用于数据分析,科学计算和云图形。

英伟达GPU 用到的 SIMT 基本编程模型都是一致的,每一代相对前代基本都会在 SM 数量、SM 内部各个处理单元的流水线结构等等方面有一些升级和改动。

各代GPU的具体细节参数

Fermi

Fermi架构白皮书:https://www.nvidia.com/content/PDF/fermi_white_papers/NVIDIA_Fermi_Compute_Architecture_Whitepaper.pdf
计算能力适用范围(Compute Capability):2.0,2.1
在这里插入图片描述

计算能力是向前兼容的

每个SM 中包含:

  1. 2 个 Warp Scheduler/Dispatch Unit
  2. 32 个 CUDA Core(分在两条 lane 上,每条分别是 16 个)。 每个 CUDA Core 里面是 1 个单精浮点单元(FPU)和 1 个整数单元(ALU),可以直接做 FMA 的乘累加。每个 cycle 可以跑 16 个双精的 FMA
  3. 16 个 LD/ST Unit
  4. 4 个 SFU

Kepler

Kepler架构白皮书: https://www.nvidia.com/content/PDF/kepler/NVIDIA-kepler-GK110-architecture-whitepaper.pdf
计算能力适用范围(Compute Capability):3.0,3.2,3.5, 3.7
在这里插入图片描述

每个 SM(这里叫 SMX 了)中包含:

  1. 4 个 Warp Scheduler,8 个 Dispatch Unit
  2. CUDA Core 增加到 192 个(4 * 3 * 16,每条 lane 上还是 16 个)
  3. 单独分出来 64 个(4 * 16,每条 lane 上 16 个)双精运算单元。
  4. SFU 和 LD/ST Unit 分别也都增加到 32 个

Kepler架构在硬件上直接有双精运算单元的架构,所以对比前后几代的双精浮点的性能话会发现 Kepler 要高出一截。

Maxwell

Maxwell架构白皮书: https://developer.nvidia.com/maxwell-compute-architecture
计算能力适用范围(Compute Capability):5.0,5.2, 5.3;
在这里插入图片描述

Maxwell的 SM 开始做减法了,每个 SM(SMM)中包含:

  1. 4 个 Warp Scheduler,8 个 Dispatch Unit
  2. 128 个 CUDA Core(4 * 32)
  3. 32 个 SFU 和 LD/ST Unit(4 * 8)

这些硬件单元的流水线分布也不再是像 Kepler 那样大锅炖了,而是有点像是把 4 个差不多像是 Fermi 的 SM 拼在一起组成一个 SM:

每个 Process Block 中包含的内容也更加的多,每个Process Block里面包含了:

  1. 1 个 Warp Scheduler 和 2 个 Dispatch Unit
  2. 32 个 CUDA Core
  3. 8 个 SFU 和 LD/ST Unit

Pascal

Pascal白皮书: https://images.nvidia.com/content/volta-architecture/pdf/volta-architecture-whitepaper.pdf

计算能力适用范围(Compute Capability):6.0,6.1, 6.2
在这里插入图片描述
SM 内部作了进一步的精简,整体思路是 SM 内部包含的东西越来越少,但是总体的片上 SM 数量每一代都在不断增加,每个 SM 中包含:

  1. 2 个 Warp Scheduler,4 个 Dispatch Unit
  2. 64 个 CUDA Core(2 * 32)
  3. 32 个双精浮点单元(2 * 16,双精回来了)
  4. 16 个 SFU 和 LD/ST Unit(2 * 8)

一个 SM 里面包含的 Process Block 数量减少到了 2 个,每个 Process Block 内部的结构倒是 Maxwell 差不多:

  1. 1 个 Warp Scheduler 和 2 个 Dispatch Unit
  2. 32 个 CUDA Core
  3. 多了 16 个 DP Unit
  4. 8 个 SFU 和 LD/ST Unit

此外还有一些其它的升级变化:

  1. 面向 Deep Learning 做了一些专门的定制(CuDNN 等等库)。
  2. 除了 PCIE 以外,P100 还有 NVLink 版,单机卡间通信带宽逆天了,多机之间也能通过 Infiniband 进一步扩展 NVLink(GPUDirect)。
  3. P100 上把 GDDR5 换成了 HBM2,Global Memory 的带宽涨了一个数量级。
  4. 16nm FinFET 工艺,性能提升一大截,功耗还能控制住不怎么增加。
  5. Unified Memory,支持把 GPU 的显存和 CPU 的内存统一到一个相同的地址空间,驱动层自己会做好 DtoH 和 HtoD 的内存拷贝,编程模型上更加友好了。
  6. CUDA Core 也有了升级,现在硬件上直接支持 FP16 的半精计算了,半精性能是单精的 2 倍。

Volta

Volta白皮书: https://images.nvidia.com/content/volta-architecture/pdf/volta-architecture-whitepaper.pdf

计算能力适用范围(Compute Capability):7.0, 7.2
在这里插入图片描述
SM 中包含:

  1. 4 个 Warp Scheduler,4 个 Dispatch Unit(发现不需要配 2 个 Dispatch 给每个 Scheduler 了?白皮书里面倒是没有对这个的解释)
  2. 64 个 FP32 Core(4 * 16)
  3. 64 个 INT32 Core(4 * 16)
  4. 32 个 FP64 Core(4 * 8)
  5. 8 个 Tensor Core (4 * 2)
  6. 32 个 LD/ST Unit(4 * 8)
  7. 4 个 SFU

与 Pascal 相比,单个 SM 中的单精运算单元数量是一致的,相当于把 Pascal 中的每个 Process Block 进一步地又拆成了 2 个,每个 Process Block 中包含:

  1. 1 个 Warp Scheduler,1 个 Dispatch Unit
  2. 16 个 FP32 Core
  3. 16 个 INT32 Core
  4. 8 个 FP64 Core
  5. 2 个 Tensor Core
  6. 8 个 LD/ST Unit
  7. 1 个 SFU

这里把原本的 CUDA Core 给拆开了,FP32 和 INT32 的两组运算单元现在是独立出现在流水线 lane 里面了,这一设计的好处是在前几代架构中 CUDA Core 同时只能处理一种类型的运算,而现在每个 cycle 都可以同时有 FP32 和 INT32 的指令在一起跑了。Pascal 中需要 6 个 cycles 来做一组 FMA,现在在 Volta 中只需要 4 个 cycles。

另外每个 Warp Scheduler 还有了自己的 L0 指令 cache。这一代还改进了一下MPS,现在从硬件上直接支持对资源的隔离,方便多任务共享 GPU。

最重大的改进在于Tensor Core

什么是Tensor Core?

https://zhuanlan.zhihu.com/p/75753718
针对于Tensor Core的介绍这篇文章介绍的很详细。

Turing

计算能力适用范围(Compute Capability):7.5

Turing架构白皮书: https://www.nvidia.com/content/dam/en-zz/Solutions/design-visualization/technologies/turing-architecture/NVIDIA-Turing-Architecture-Whitepaper.pdf

在这里插入图片描述
在这里插入图片描述

每个GPC均包含一个专用的光栅化引擎和6个TPC,且每个TPC均包含两个SM。每个SM包含:

  1. 64个CUDA核心
  2. 8个Tensor核心
  3. 1个256KB寄存器堆
  4. 4个纹理单元以及96KB的L1或共享内存

可根据计算或图形工作负载将这些内存设置为不同容量。每个SM中的全新RT核心处理引擎负责执行光线追踪加速。

Turing架构采用全新SM设计,每个TPC均包含两个SM,每个SM共有64个FP32核心和64个INT32核心。Turing SM支持并行执行FP32与INT32运算,每个Turing SM还拥有8个混合精度Turing Tensor核心和1个RT核心。

Ampere

Ampere架构白皮书: https://www.nvidia.com/content/dam/en-zz/Solutions/Data-Center/nvidia-ampere-architecture-whitepaper.pdf
计算能力适用范围(Compute Capability):8.0

在这里插入图片描述
NVIDIA Ampere GA100 GPU架构满配如下:

  1. 8 GPCs,
  2. 8 TPCs/GPC, 2 SMs/TPC, 16 SMs/GPC, 128 SMs per full GPU
  3. 64 FP32 CUDA Cores/SM, 8192 FP32 CUDA Cores per full GPU
  4. 4第三代Tensor Cores/SM, 512第三代Tensor Cores per full GPU
  5. 6 HBM2 stacks, 12 512bit 内存控制器

NVIDIA A100在AI训练(半/单精度操作,FP16/32)和推理(8位整数操作,INT8)方面,GPU比Volta GPU强大20倍。在高性能计算(双精度运算,FP64)方面,NVIDIA表示GPU的速度将提高2.5倍。

五大突破:

  1. NVIDIA Ampere架构 — A100的核心是NVIDIA Ampere GPU架构,其中包含超过540亿个晶体管,使其成为世界上最大的7纳米处理器。
  2. 基于TF32的第三代张量核(Tensor Core): Tensor核心的应用使得GPU更加灵活,更快,更易于使用。TF32包括针对AI的扩展,无需进行任何代码更改即可使FP32精度的AI性能提高20倍。此外, TensorCore 现在支持FP64,相比上一代,HPC应用程序可提供多达2.5倍的计算量。
  3. 多实例(Multi-Instance)GPU — MIG是一项新技术功能,可将单个A100GPU划分为多达七个独立的GPU,因此它可以为不同大小的作业提供不同程度的计算,从而提供最佳利用率。
  4. 第三代NVIDIA NVLink —使GPU之间的高速连接速度加倍,可在服务器中提供有效的性能扩展。
  5. 结构稀疏性—这项新的效率技术利用了AI数学固有的稀疏特性来使性能提高一倍。

NVIDIA A100基于7nm Ampere GA100 GPU,具有6912 CUDA内核和432 Tensor Core,540亿个晶体管数,108个流式多处理器。采用第三代NVLINK,GPU和服务器双向带宽为4.8 TB/s,GPU间的互连速度为600 GB/s。另外,Tesla A100在5120条内存总线上的HBM2内存可达40GB。

猜你喜欢

转载自blog.csdn.net/daijingxin/article/details/115042353