Nvidia A100 架构分析
Nvidia A100 硬件架构
1 GA100 的架构图
A100 GPU的架构名称为GA100,一个完整的GA100架构实现包括以下单元:
基于GA100架构的A100 GPU 包括以下单元:
a. 7 GPCs, 7 or 8 TPCs/GPC, 2 SMs/TPC, up to 16 SMs/GPC, 108 SMs
b. 64 FP32 CUDA Cores/SM, 6912 FP32 CUDA Cores per GPU
c. 4 third-generation Tensor Cores/SM, 432 third-generation Tensor Cores per GPU
d. 5 HBM2 stacks, 10 512-bit memory controllers
2. GA100 SM架构
新的A100 SM 大大提高了性能,建立在 Volta和Turing SM体系结构中引入的功能的基础上,并增加了许多新功能和增强功能。每个SM中有8个Tensor Core,每个Tensor Core 每个时钟执行 64个 FP16/ FP32 FMA操作。 A100每个SM有4个Tensor Core, 每个时钟总共可提供1024个密集的FP16 / FP32 FMA操作。cuda core 就是做通用计算, Tensor core 专门做矩阵运算
2.1 FP32 TF32 FP16 等精度比较
CUDA编程的软件概念
从软件看
Thread, block, grid,warp 是CUDA编程的概念,以方便程序员软件设计,组织线程,同样的我们给出一个示意图来表示
1. thread: 一个cuda的并行程序会被许多个threads来执行
2. block:数个threads会被群组成一个block,同一个block中的threads可以同步,也可以通过shared memory进行通信
3. grid:多个block则会构成一个grid
4. warp:GPU执行程序时的调度单位,目前cuda的warp的大小为32,同一个warp的线程,以不同数据资源执行相同的指令,这就是所谓的SIMT
对应关系
从软件层面看,每一个SM更像一个独立的CPU core。SM(Streaming Multiprocessors)是GPU架构中非常重要的部分,GPU硬件的并行性就是由SM决定的。以Fermi架构为例,其包含以下主要组成部分:
- CUDA cores
- Share Memory/ L1 Cache
- Register File
- Load/Store Units
- Special Funcion Units
- Warp Scheduler
GPU中每个SM都设计成支持数以百计的Thread并行执行,并且每个GPU都包含了很多的SM,所以GPU支持成百上千的Thread并行执行。当一个Kernel启动后,Thread会被分配到这些SM中执行。大量的Thread可能会分配到不同的SM,同一个block中的Threads必然在同一个SM中并行(SIMT)执行。每个Thread拥有它自己的程序计数器和状态寄存器,并且用Thread自己的数据执行指令, 这就是所谓的 SIMT( single instruction multiple thread)。
一个SP可以执行一个thread,但是实际上并不是所有的thread能够在同一时刻执行,Nvidia把32个threads组成一个warp,warp是调度和运行的基本单元。warp中所有thread并行的执行相同的指令。一个warp需要占用一个SM运行,多个warp需要轮流进入SM。由SM的硬件调度器warp schedule负责调度。目前每个warp包含32个threads。所以一个GPU上的resident thread最多只有 SM*warp 个。
参考:https://blog.csdn.net/junparadox/article/details/50540602?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link