GPU基本概念

硬件层面

  • SP(Streaming Processor):流处理器, 是GPU最基本的处理单元,在fermi架构开始被叫做CUDA core。
  • SM(Streaming MultiProcessor): GPU中最小的执行单元。一个SM由多个CUDA core组成。

软件层面

  • Kernel:在GPU上执行的函数。
  • thread:一个CUDA的并行程序会被以许多个threads来执行。
  • Block:数个threads会被群组成一个block,同一个block中的threads可以同步,也可以通过shared memory通信。
  • Grid:Kernel 所对应的线程集合,由多个Block组成。
  • Warp:是最基本的执行单元,一个warp包含32个并行thread,这些thread以不同数据资源执行相同的指令。

GPU架构是围绕一个流式多处理器(SM)的扩展阵列搭建的。通过复制这种结构来实现GPU的硬件并行。

  • 先大概看一下SM包含的模块,熟悉一下:
  1. Instruction Cache:指令缓存,缓存了该SM里Warps的指令;
  2. Warp Scheduler:线程束调度器;
  3. Dispatch Unit:指令分发器,根据Warp Scheduler的调度向核心发送该Warp的指令;
  4. Register File:寄存器,编译好的机器码如ADD r1 r2 r3,这些r开头的就是一个个寄存器,给Core提供计算参数或者存储输出结果,上图的SM中有3万多个32bit的寄存器,Warp中每个任务都会分配私有的寄存器;
  5. Core:计算核心,负责浮点数和整数的计算;
  6. SFU:Special Function Units,执行特殊数学计算(sin、cos、log等);
  7. LD/ST:Load/Store,访存单元,加载和存储数据;
  8. L1 Cache:一级缓存,片上内存,即该内存是位于芯片内部的,速度很快;
  9. Shared Memory:共享内存,片上内存;
  10. Tex与Texture Cache:纹理单元用于采样纹理,纹理缓存;
  11. PolyMorph Engine:多边形引擎,用于处理顶点数据拉取、Viewport Transform等。

参考NVIDIA官网资料:Life of a triangle - NVIDIA’s logical pipeline

GPU芯片主流架构有哪几类_Core

GPU芯片主流架构有哪几类_硬件架构_02


Fermi架构如上图,它的特性如下:

  • 拥有16个SM
  • 每个SM:
  • 2个Warp(线程束)
  • 两组共32个Core
  • 16组加载存储单元(LD/ST)
  • 4个特殊函数单元(SFU)
  • 每个Warp:
  • 16个Core
  • Warp编排器(Warp Scheduler)
  • 分发单元(Dispatch Unit)
  • 每个Core:
  • 1个FPU(浮点数单元)
  • 1个ALU(逻辑运算单元)

2018年的NVidia Turing架构为例进行解析

GPU芯片主流架构有哪几类_寄存器_03

放大一点

GPU芯片主流架构有哪几类_Core_04

上图是采纳了Turing架构的TU102 GPU,它的特点如下:

  • 6 GPC(图形处理簇)
  • 36 TPC(纹理处理簇)
  • 72 SM(流多处理器)
  • 每个GPC有6个TPC,每个TPC有2个SM
  • 4,608 CUDA核
  • 72 RT核
  • 576 Tensor核
  • 288 纹理单元
  • 12x32位 GDDR6内存控制器 (共384位)

单个SM的结构图如下:

GPU芯片主流架构有哪几类_GPU芯片主流架构有哪几类_05


每个SM包含:

64 CUDA核
8 Tensor核
256 KB寄存器文件

可用主观看出,一个商业级别的GPU 包含的东西比 寒武纪的深度学习加速卡 的会复杂一点,在图像的处理,浮点运算的考虑上更加丰富。