跳到正文
半导体开放世界

GPU

Graphics Processing Unit也称 图形处理器、图形处理单元、通用GPU、GPGPU、graphics processor、graphics accelerator

以大量并行执行资源和高吞吐存储系统同时处理许多相似工作项,并通过图形或通用计算编程模型接受任务的吞吐型处理器。

报告问题

速览

约 1 分钟

GPU把工作拆成大量线程/工作项,再以warp或wavefront等组调度到SM/CU。它擅长规则、数据并行且计算量足以摊薄调度和搬运成本的任务;分支发散、零散访存、同步、串行段和主机—设备传输都可能让大量算力闲置。

系统理解

约 3 分钟

现代GPU由可扩展的多处理器/计算单元阵列构成,每个单元含多条执行通道、寄存器、调度器和局部共享存储。编程模型通常把线程组织为块/工作组,再组织为网格;硬件把线程进一步编成warp或wavefront执行。NVIDIA常以32线程warp说明SIMT,AMD不同架构可采用32或64工作项wavefront,因此“线程组宽度”不是所有GPU共有的固定常数。

SIMT让软件以独立线程表达工作,但一组线程共享指令发射资源。当同组线程走不同控制路径时,硬件需以活动掩码分别执行路径,未参与的通道暂时空闲;不同warp/wave之间可独立调度以隐藏延迟。它与传统SIMD相关但不等同:SIMD通常由软件显式操作向量,SIMT向软件暴露标量线程语义,再由硬件成组执行。

GPU性能强依赖数据供给。线程私有寄存器、块内共享存储/LDS、缓存与全局显存形成层次;相邻线程的访存能否合并、局部数据是否复用、寄存器和共享存储占用是否允许足够多线程驻留,共同决定有效带宽与占用率。提高占用率不是最终目标:若算法受指令、同步或带宽限制,更多驻留线程不一定提高性能。

GPU从图形流水线扩展到科学计算、AI和媒体处理,但不同产品的固定功能、矩阵/张量单元、数据类型、缓存一致性和主机连接差异很大。CPU擅长低延迟控制和复杂串行任务,GPU擅长高并行吞吐;异构系统的收益必须扣除数据搬运、内核启动、同步、精度变化和不可并行部分。

以CPU与芯片架构为前置,连接并行编程、HBM/DRAM、先进封装、片间互连、AI与科学计算工作负载。

公式提示

有效内存带宽Beff=实际传输字节数/执行时间;占用率可写为驻留warp(或wave)数/硬件允许最大值。两者是资源利用指标,不是端到端性能保证,且统计口径、缓存命中和实际总线事务必须说明。

关键参数

关键参数
参数单位含义
warp / wavefront宽度thread or work-item硬件成组执行粒度,随厂商和架构变化
占用率与资源用量—寄存器、共享存储和块大小共同限制同一计算单元的驻留工作组
有效显存带宽与访问合并B/s实际有用数据流量和物理事务效率,决定带宽受限工作负载
分支发散、同步与主机传输—分别损失执行通道、引入等待,并增加异构端到端开销

常见误区

  • 认为GPU核心数量可以与CPU核心数量直接比较
  • 认为所有GPU都固定以32线程为一个执行组
  • 认为线程越多或占用率越高,程序一定越快
  • 认为GPU天然适合所有AI、科学计算或串行控制任务

工程深入

12 条结论

吞吐型并行处理器

定义

GPU以大量相似工作项的吞吐为主要优化目标

GPU把许多执行通道和线程状态组织成可扩展计算单元,使大量像素、顶点、数组元素或其他工作项并行推进,而不是只缩短单个复杂控制线程的响应时间。12

成立条件 GPU也包含串行控制与固定功能单元;产品可偏图形、计算、AI或混合用途

线程层次与硬件映射

机制

网格、工作组和线程最终映射到计算单元

编程模型把工作组织为线程和块/工作组,调度器把工作组分配给SM或CU,再把线程编成warp或wavefront在SIMD执行通道上运行。13

成立条件 软件层次和物理执行宽度不是同一个量;块内共享和同步范围受编程模型限制

定义

SIMT以线程语义表达、以线程组共同发射

SIMT允许软件为每个线程描述寄存器状态和控制流,硬件则把多个线程组成一个执行组共享指令发射,从而在规则并行任务中复用控制成本。13

成立条件 SIMT与显式向量SIMD相关但不完全等同;线程独立语义不保证每个线程在同一时刻独立发射

边界

warp或wavefront宽度不是GPU通用常数

NVIDIA CUDA以32线程warp为当前执行组,AMD产品可使用32或64工作项wavefront;算法不应把某一厂商宽度当成GPU定义。13

成立条件 宽度与细节应绑定架构和编程模型版本;软件正确性不应依赖未规定的锁步行为

发散、同步与延迟隐藏

机制

同组线程分支发散会降低通道利用率

若一个warp或wave中的线程选择不同路径,硬件需按活动掩码执行各条实际路径,未参与当前路径的通道不做有用工作。13

成立条件 不同执行组可独立走不同路径;现代架构可能具有更灵活的线程调度,但发散成本仍需测量

机制

多执行组驻留用切换隐藏长延迟

计算单元保存多个warp或wave的上下文,当一组等待数据时调度其他就绪组,可在无需保存到外存的情况下隐藏部分存储或执行延迟。13

成立条件 寄存器、共享存储和块上限限制驻留组数;没有足够独立工作时延迟仍会暴露

存储层次与带宽效率

机制

寄存器、共享存储和全局显存承担不同复用范围

线程私有寄存器保存局部状态,工作组共享存储/LDS支持块内协作,全局显存提供容量并跨工作组可见;缓存和只读空间再按架构优化访问。13

成立条件 一致性、生命周期和同步规则随空间不同;本地或私有变量也可能因资源不足溢出到较慢存储

边界

高峰值带宽仍可能被零散访问浪费

相邻线程若访问可合并的连续对齐区域,较少物理事务可服务更多有用字节;跨度、未对齐或局部存储银行冲突会增加事务和串行化。13

成立条件 具体合并粒度和银行映射依架构;缓存命中可改变观察到的外部流量

公式

有效带宽必须按实际有用数据和时间计算

将算法确实需要传输的字节数除以执行时间得到有效带宽,可与测得物理流量和峰值规格对照,识别无效事务、缓存与搬运开销。13

Beff = useful bytes / execution time

Beff
有效有用数据带宽,单位 B/s

成立条件 必须声明读写字节是否重复计数;主机—设备传输与核内显存流量需分开

资源占用与性能判据

公式

占用率描述驻留能力而不是应用性能

占用率可用计算单元实际驻留的warp或wave数量除以硬件允许最大值表示;它有助于隐藏延迟,但不能说明指令、同步或带宽是否高效。13

occupancy = resident warps(or waves) / maximum supported

occupancy
执行组驻留比例

成立条件 最大驻留量由架构、寄存器、共享存储和块形状共同决定;较低占用率也可能因高数据复用获得高性能

异构系统与适用边界

边界

主机—设备搬运和启动会侵蚀小任务收益

离散GPU常与CPU拥有不同内存空间,数据复制、内核启动和同步都需时间;并行工作过小或复用不足时,这些固定成本可超过计算节省。12

成立条件 统一内存或集成GPU会改变但不消除数据位置与一致性成本;必须测量端到端路径而非只测内核

CPU 对比:异构系统由CPU承担控制并向GPU派发并行工作。
边界

峰值算力不等于工作负载可实现性能

算法并行度、控制发散、数据类型、访存合并、局部复用、同步、资源占用和传输共同决定实现性能,不能用执行单元数量或理论峰值直接推算。13

成立条件 比较必须固定精度与数值容差;持续性能还受功耗、温度与互连约束

出处

4 份资料 · 4 处引用
  1. 1

    CUDA Programming Guide

    查看这个来源 →
  2. 2

    CMOS超大规模集成电路设计(第4版)

    查看这个来源 →
  3. 3
  4. 4

    数字集成电路:电路、系统与设计(第2版)

    • 第 5 章 §5.5,第 359–404 页 用于本页概述
    查看这个来源 →