v0.91: 补T_bd物理成因+MergeBatch优势总结表
This commit is contained in:
@@ -185,6 +185,25 @@ $$
|
||||
|
||||
条件 1($b_{core} \ge 2b_0$)是该分界在典型 $T_{bd}$ 下的保守近似。精确边界依赖 $T_{bd}$ 实测标定。
|
||||
|
||||
**$T_{bd}$ 的物理成因**(batch 边界处硬件必须完成的固定动作):
|
||||
|
||||
1. **Fixpipe 重配置**:每 batch 输出写往 GM 不同地址区域,fixpipe 需重配目标地址、步长等寄存器——每次排空的固定设置开销;
|
||||
2. **L0C 缓冲区切换握手**:L0C 双缓冲——Cube 往一半写、fixpipe 从另一半读。batch 边界处 Cube 须等 fixpipe 的 unitflag 确认已开始读当前半区,才能往另一半写新 batch 的部分和——同步握手有固定延迟;
|
||||
3. **Cube 流水线重建**:systolic array 在新 batch 首个 K 分块时需重新填充——fill 开销与 tile 尺寸无关,是固定成本。
|
||||
|
||||
这些开销**与 batch 的计算量无关**,是每次 batch 切换的固定成本。大 batch 时被大量计算分摊,占比可忽略;小 batch 时每个 batch 绝对时延短,边界开销占比显著。MergeBatch 把 $b_0$ 个 batch 并为一次大矩阵计算,边界数降 $b_0$ 倍——**这是 MergeBatch 的结构性收益来源**。
|
||||
|
||||
**MergeBatch vs IterBatch 优势总结**:
|
||||
|
||||
| 维度 | IterBatch | MergeBatch | 差异来源 |
|
||||
|---|---|---|---|
|
||||
| 稳态搬移吞吐 | 相同 | 相同 | 总搬移量、每块大小、总块数相同 |
|
||||
| batch 边界开销 | $b_{core} \cdot T_{bd}$ | $b_{core}/b_0 \cdot T_{bd}$ | **MergeBatch 少 $b_0$ 倍** ← 核心优势 |
|
||||
| drain 暴露 | $T_{comp} + T_{write}$ | $b_0(T_{comp} + T_{write})$ | IterBatch 少 $b_0$ 倍 ← 核心劣势 |
|
||||
| L0C 利用率 | $MN \cdot 4\text{B}$ | $b_0^2 MN \cdot 4\text{B}$ | 访存 Bound 下不影响时延 |
|
||||
|
||||
净收益 = 边界节省 - drain 惩罚 = $b_{core}(1-\frac{1}{b_0})T_{bd} - (b_0-1)(T_{comp}+T_{write})$。大 B($b_{core}$ 大)且小 MN($T_{comp}$ 小)时 MergeBatch 最优。
|
||||
|
||||
**L0C 利用率说明**:小 MN 时 IterBatch 的 L0C tile($MN \cdot 4\text{B}$)远小于 L0C 容量,MergeBatch 合并后更接近满载。但访存 Bound 下计算被搬移掩盖,L0C 利用率不影响总时延——**不构成 MergeBatch 的优势**。
|
||||
2. **L0C 容量**:合并 $b_0$ 个 batch 的输出块 $[b_0M, b_0N]$(FP32 累加、双缓冲两份)必须放得下 L0C;连最小合并都放不下,合并无从谈起。
|
||||
3. **单核搬移总量**:单核搬移数据总量低于 min_DatamountPerCore 时,GM 带宽利用率上不去(重要性第 2 位的经验约束)。
|
||||
|
||||
Reference in New Issue
Block a user