v0.91: 同步HTML

This commit is contained in:
2026-08-25 03:47:14 +00:00
parent 8cf7dcf659
commit 88ae1a84cb

View File

@@ -169,6 +169,20 @@ $$</div>
\text{penalty} = \begin{cases} (b_0-1)(T_{comp} + T_{write}) & \text{L1 绑定(}k_{L1} \lt K\text{} \\ (b_0^2-1)T_{comp} + (b_0-1)T_{write} & \text{K 截断(}k_{L1} = K\text{} \end{cases}$$</div>
<p> K 截断时 MergeBatch 的 $k_{L1}$ 不减半 → 每分块计算量 $b_0^2$ 倍(而非 $b_0$ 倍)→ drain 惩罚更大。小 MN 时 $T_{comp}$ 小 → penalty 小 → MergeBatch 更容易赢;大 B 时 $b_{core}$ 大 → 边界节省多 → MergeBatch 更容易赢。</p>
<p> 条件 1$b_{core} \ge 2b_0$)是该分界在典型 $T_{bd}$ 下的保守近似。精确边界依赖 $T_{bd}$ 实测标定。</p>
<p> **$T_{bd}$ 的物理成因**batch 边界处硬件必须完成的固定动作):</p>
<ol class="tight">
<li><b>Fixpipe 重配置</b>:每 batch 输出写往 GM 不同地址区域fixpipe 需重配目标地址、步长等寄存器——每次排空的固定设置开销;</li>
<li><b>L0C 缓冲区切换握手</b>L0C 双缓冲——Cube 往一半写、fixpipe 从另一半读。batch 边界处 Cube 须等 fixpipe 的 unitflag 确认已开始读当前半区,才能往另一半写新 batch 的部分和——同步握手有固定延迟;</li>
<li><b>Cube 流水线重建</b>systolic array 在新 batch 首个 K 分块时需重新填充——fill 开销与 tile 尺寸无关,是固定成本。</li>
</ol>
<p> 这些开销<b>与 batch 的计算量无关</b>,是每次 batch 切换的固定成本。大 batch 时被大量计算分摊,占比可忽略;小 batch 时每个 batch 绝对时延短边界开销占比显著。MergeBatch 把 $b_0$ 个 batch 并为一次大矩阵计算,边界数降 $b_0$ 倍——<b>这是 MergeBatch 的结构性收益来源</b></p>
<p> <b>MergeBatch vs IterBatch 优势总结</b></p>
<table><tr><th>维度</th><th>IterBatch</th><th>MergeBatch</th><th>差异来源</th></tr>
<tr><td>稳态搬移吞吐</td><td>相同</td><td>相同</td><td>总搬移量、每块大小、总块数相同</td></tr>
<tr><td>batch 边界开销</td><td>$b_{core} \cdot T_{bd}$</td><td>$b_{core}/b_0 \cdot T_{bd}$</td><td>**MergeBatch 少 $b_0$ 倍** ← 核心优势</td></tr>
<tr><td>drain 暴露</td><td>$T_{comp} + T_{write}$</td><td>$b_0(T_{comp} + T_{write})$</td><td>IterBatch 少 $b_0$ 倍 ← 核心劣势</td></tr>
<tr><td>L0C 利用率</td><td>$MN \cdot 4\text{B}$</td><td>$b_0^2 MN \cdot 4\text{B}$</td><td>访存 Bound 下不影响时延</td></tr></table>
<p> 净收益 = 边界节省 - drain 惩罚 = $b_{core}(1-\frac{1}{b_0})T_{bd} - (b_0-1)(T_{comp}+T_{write})$。大 B$b_{core}$ 大)且小 MN$T_{comp}$ 小)时 MergeBatch 最优。</p>
<p> <b>L0C 利用率说明</b>:小 MN 时 IterBatch 的 L0C tile$MN \cdot 4\text{B}$)远小于 L0C 容量MergeBatch 合并后更接近满载。但访存 Bound 下计算被搬移掩盖L0C 利用率不影响总时延——<b>不构成 MergeBatch 的优势</b></p>
<ol class="tight">
<li><b>L0C 容量</b>:合并 $b_0$ 个 batch 的输出块 $[b_0M, b_0N]$FP32 累加、双缓冲两份)必须放得下 L0C连最小合并都放不下合并无从谈起。</li>