GPU结构


接触了一些cuda编程的概念后我觉得得先从GPU的结构下手
按我逻辑上比较舒服的顺序梳理一下结构

GPU由哪些大部件组成

一整张GPU卡由大量SM+全局缓存+显存接口组成

GPU的主存为HBM/GDDR(显存),存放:模型权重/KV cache/激活/中间张量

整个GPU共享L2 Cache(全局缓存)

专用硬件单元Copy Engines负责CPU与GPU之间的内存拷贝

Interconnect是多卡训练/推理的通信通道

GPU内部并行计算如何被调度

SM是GPU的基本运算单元,一个GPU有几十到上百个

Warp Scheduler(调度器)在SM内有1~多个,以warp(通常32线程)为单位发射指令

Execution Units(执行单元):CUDA Cores/Tensor Cores/SFU

一个SM可同时驻留多个thread blocks,决定occupancy

Shared Memory/L1 Cache每个SM一份,前者程序员显式管理,后者硬件自动缓存

单个线程如何执行指令和访问数据

Thread是CUDA中最小的执行实体

Warp是由32个线程组成的执行小队,是实际调度与执行的最小单位,SIMT(Single Instruction,Multiple Threads)

Registers每个线程私有,延迟最低、容量最小,使用过多会降低并发

Memory Access Pattern,warp 级访存

包含关系图

GPU(整张卡)

├── HBM / GDDR(显存,主存)

├── L2 Cache(全局缓存,整个 GPU 共享)

└── 多个 SM(Streaming Multiprocessor)

├── L1 Cache ←┐
├── Shared Mem ←┘ (同一块片上 SRAM,不同用途)

├── Warp Schedulers

├── Execution Units
│ ├── CUDA Cores
│ ├── Tensor Cores
│ └── SFU

└── Registers(寄存器,线程私有)

线程访问数据

Thread

Registers(线程私有)

Shared Memory / L1 Cache(SM 内)

L2 Cache(全 GPU 共享)

HBM / GDDR(显存,主存)


文章作者: Austin
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Austin !
评论
  目录