测验:GPU 与并行处理
哪项最准确地说明了 GPU 与 CPU 的设计理念差异?
- GPU 的时钟频率高得多,所以更快
- GPU 没有缓存,因此内存访问更快
- CPU 只能做整数运算,GPU 只能做浮点运算
- CPU 把资源用于降低单线程延迟,GPU 则用大量线程隐藏延迟
同一个 warp 内的条件分支出现分歧时,会发生什么?
- 硬件把 warp 拆成两个并行执行
- 产生编译错误
- 依次执行两条路径,并停用不属于当前路径的线程,因此耗时是两条路径之和
- 只执行较慢的路径
合并内存访问(coalescing)为什么对性能很重要?
- 一个 warp 的线程读取连续地址时,可用少量内存事务完成
- 合并访问可以绕过缓存
- 连续地址可以省略错误检查
- 合并访问会把 warp 大小增加到 64
为什么 LLM 推理的解码阶段受内存限制?
- 因为每次生成一个 token,完全没有并行性
- 读取大量权重与小输入相乘后丢弃,每移动一个字节所做的运算很少
- KV 缓存存储在磁盘上
- GPU 的运算单元数量不足
共享内存(shared memory)与 CPU 缓存有什么不同?
- 程序员显式管理要放入什么数据
- 容量大得多
- 断电后内容仍可保留
- 硬件会自动维护一致性
关于占用率(occupancy),哪项说法正确?
- 它是 SM 同时驻留的 warp 比例;过低时,没有足够线程隐藏内存等待
- 占用率越高,内核总是完成得越快
- 占用率是 GPU 全局内存的使用比例
- 占用率是内核实际占用的 SM 数量比例
脉动阵列架构的加速器相对通用 GPU 有什么优势?
- 分支预测更准确
- 不再有内存容量限制
- 在所有工作负载上都比 GPU 快
- 让数据在网格间流动并复用,大幅提高每次内存访问完成的运算量