v0.9: MergeBatch vs IterBatch 一阶时延模型,条件1定位为二阶效应启发式

This commit is contained in:
2026-08-25 02:20:01 +00:00
parent 4af6eee0e3
commit 83d905fe7c

View File

@@ -140,7 +140,20 @@ $$
1. **batch 关系与每核份额**无广播才能逐 batch 对应合并每核至少分到 $2b_0$ batch——$b_0$ 是合并搬移有收益的最小合并数 22 组起步才能构成合并组间乒乓流水 $b_{core} \ge 4$)。
**为何不允许 $b_{core}=2$**合并后每核仅 1 个合并 batch此时与 IterBatch$b_{core}=2$形态 b/d对比——MergeBatch 合并后 $k_{L1}$ 减半$L1/((2M{+}2N)\cdot\text{dtype})$ vs $L1/((M{+}N)\cdot\text{dtype})$K 分块数翻倍IterBatch 2 batch每批 K 分块数不变两者总 K 分块数相同每块搬移量相同均填满 L1**总搬移时延相同**。访存 Bound 条件 5 保证MergeBatch 2× 冗余计算在稳态流水中被搬移掩盖 $i$ 块计算与第 $i{+}1$ 块搬移交叠总时延 IterBatch但流水 drain 阶段最后一个 K 分块无下一块搬移可交叠计算暴露MergeBatch 每分块计算量 = 2× IterBatch drain 暴露也是 2×。K 分块数越少暴露占比越大$\sim T_{comp}/(n \cdot T_{load})$$b_{core} \ge 2b_0$ 确保合并后仍有 2 个合并 batch batch 级乒乓 $b_{core}$ 越大 MergeBatch 相对 IterBatch dValue 优势越明显
**MergeBatch vs IterBatch 一阶时延模型** $n_K = K/k_{L1}$K 分块数每分块搬移 $T_{load} = k_{L1}(M{+}N)\cdot\text{dtype}/BW_{pc}$每分块计算 $T_{comp} = 2MN \cdot k_{L1}/Q_{16}$输出写回 $T_{write} = MN \cdot outB/W_{GM}$
IterBatch$b_{core}$ batch/unitflag 交叠 batch drain/startup
$$T_{iter} = b_{core} \cdot n_K \cdot \max(T_{load}, T_{comp}) + T_{comp} + T_{write}$$
MergeBatch合并后 $k_{L1}$ 减半 $n_K$ 翻倍每分块搬移量不变每分块计算量 ×b₀,合并 batch = $b_{core}/b_0$
$$T_{mb} = b_{core} \cdot n_K \cdot \max(T_{load},\; b_0 \cdot T_{comp}) + b_0(T_{comp} + T_{write})$$
条件 5 保证合并后仍访存 Bound$T_{load} > b_0 \cdot T_{comp}$),此时:
$$T_{mb} - T_{iter} = (b_0-1)(T_{comp} + T_{write}) > 0$$
**一阶模型下 MergeBatch 始终不优于 IterBatch**——稳态吞吐相同总搬移量、每块大小、总块数都相同MergeBatch 的 drain 暴露是 IterBatch 的 $b_0$ 倍。数值验证B=128, M=N=64, K=512$T_{mb}/T_{iter} = 1.08$MergeBatch 慢 8%drain 占比 9.6% vs 2.6%)。
**条件 1 的定位**:不能从条件 2~5 推导。一阶模型未捕捉的二阶效应GM 空间局部性、Cube 流水线填充效率、Fixpipe 大块写出效率)是 MergeBatch 的实际收益来源;$b_{core} \ge 2b_0$ 是确保二阶收益超过一阶惩罚 $(b_0{-}1)(T_{comp}{+}T_{write})$ 的保守启发式。
2. **L0C 容量**:合并 $b_0$ 个 batch 的输出块 $[b_0M, b_0N]$FP32 累加、双缓冲两份)必须放得下 L0C连最小合并都放不下合并无从谈起。
3. **单核搬移总量**:单核搬移数据总量低于 min_DatamountPerCore 时GM 带宽利用率上不去(重要性第 2 位的经验约束)。
4. **搬移 tile 大小**:单 batch 单矩阵的最大连续搬移块须达到 min_TileSize合并是在此之上进一步放大不是替代。