计算机体系结构 32:Roofline 与矩阵数据复用
计算机体系结构 32:Roofline 与矩阵数据复用
核心问题
分块矩阵乘法减少了某一层级的数据搬运,性能就一定提高吗?Roofline 先用运算强度把计算峰值和带宽上界放在同一坐标系中,但模型上界不是实测性能点;字节流量还必须注明针对 DRAM、缓存还是片上 scratchpad。
附件:32-roofline.json。
范围与证据等级
证据等级为手算。题设峰值为 128 GFLOP/s,带宽为 32 GB/s。两个模型点的运算强度分别是 0.25 和 8 FLOP/byte,均未在当前主机或加速器上测量。
Williams、Waterman 与 Patterson 的 Roofline 模型用下式表达可达到性能的上界:
1 | |
公式中的 peak 和 bandwidth 必须来自同一机器与相符的测量口径;operational intensity 的字节分母也要固定内存层级。
核心案例:同一计算量,不同数据复用
朴素模型点的运算强度为 0.25 FLOP/byte,带宽屋顶给出 32 × 0.25 = 8 GFLOP/s,低于 128 GFLOP/s 的计算屋顶。分块模型点把强度提高到 8 FLOP/byte,带宽乘积为 256 GFLOP/s,最终仍由 128 GFLOP/s 的计算屋顶截断。
这两个点只表达数据复用可能让瓶颈从带宽侧移向计算侧。真实实现还会受指令组合、并行度、缓存容量、对齐和调度开销影响,因此实测点通常落在屋顶线下。
模式:先固定层级,再算强度
1 | |
CPU cache blocking、GPU shared memory tiling 和矩阵加速器片上复用都能使用这个模式。层级变化时必须重新计算分母,不能沿用同一个强度值。
验收结果
本批脚本退出 0。两个模型点分别得到 8 与 128 GFLOP/s 的题设上界,输出中的 measured 均为 false。当前没有矩阵 kernel、硬件峰值校准或带宽实测点。
练习
带宽改为 16 GB/s 时,两个点的上界分别是多少?
同一 kernel 的 DRAM 运算强度和 L1 运算强度为什么可能不同?
模式速查
| 输入 | 在模型中的作用 | 常见误用 |
|---|---|---|
| 峰值计算能力 | 水平屋顶 | 当成应用实测性能 |
| 峰值带宽 | 斜线斜率 | 与别的机器参数混用 |
| 运算强度 | 决定模型位置 | 不注明字节流量层级 |






