Gpu

Posted by Suibin Sun on March 18, 2024 · 1 min read

GPU学习

基本原理:

  • 流处理器架构 - GPU采用大量简单流处理器组成,利用单指令多数据(SIMD)架构实现大规模并行计算。
  • 分支与掩码 - GPU流处理器采用隐式掩码实现分支,避免了分支导致的性能损失。
  • 内存层级结构 - GPU具有显存和多级缓存,类似CPU,但更侧重于带宽而非容量。

硬件相关

架构

GPU硬件上主要包含以下部分:

  • 流处理器阵列 - 大量流处理器集群,每个集群包含多个流处理器,用于并行计算。
  • 指令单元 - 负责将指令发送到各个流处理器集群执行。
  • 内存控制器 - 管理显存访问,保证高带宽。
  • 缓存系统 - L1、L2等多级缓存加速内存访问。
  • 固定功能硬件 - 用于渲染、视频解码等固定功能加速。

流处理器

可运行的指令(具体的指令细节在不同平台上不同):

  • 算数:加减乘除、位运算
  • 内存:从显存、缓存加载到寄存器,把寄存器数据存储到内存
  • 流控制:跳转、循环
  • 特殊功能:矩阵运算、纹理采样、视频编解码等

指令单元

指令调度、指令分发、指令管理跟踪

内存控制器

区别于CPU mem的是,GPU更在意显存带宽,而不是容量。GPU显存也有页表TLB、虚拟内存到物理内存映射

主要流程:

  • 内存请求调度
  • 内存通道仲裁
  • 数据传输管理
  • 页表管理
  • 内存预取

缓存系统(cache)

目的:缓解GPU对显存的带宽瓶颈

固定功能硬件

软件相关

编程模型

隐式掩码

  • GPU将线程分组为线程束(warp),每个线程束内的所有线程并发执行相同的指令序列(单指令多数据SIMD)。
  • 每个线程内部通过条件代码跳过不应执行的条件路径。
  • GPU流处理器为每个线程束维护一个活跃掩码(active mask),它跟踪哪些线程需要执行、哪些不需要执行。
  • 对于线程束中被掩码禁用的线程,其ALU和内存操作将被无声地抑制,不会有任何影响。

GPU驱动