v0.92: 修复公式渲染——$$独占一行

This commit is contained in:
2026-08-25 07:58:01 +00:00
parent 33ea441a3f
commit cf617a3a4f

View File

@@ -160,20 +160,28 @@ $$
*端到端时延模型*对每核执行过程建模稳态流水unitflag 交叠 batch drain/startup加上 batch 边界固定开销 $T_{bd}$每边界一次
$$T_{iter} = \underbrace{b_{core} \cdot n_K \cdot \max(T_{load},\, T_{comp})}_{\text{稳态流水}} + \underbrace{T_{comp} + T_{write}}_{\text{ batch drain}} + \underbrace{b_{core} \cdot T_{bd}}_{\text{边界开销}}$$
$$
T_{iter} = \underbrace{b_{core} \cdot n_K \cdot \max(T_{load},\, T_{comp})}_{\text{稳态流水}} + \underbrace{T_{comp} + T_{write}}_{\text{ batch drain}} + \underbrace{b_{core} \cdot T_{bd}}_{\text{边界开销}}
$$
$$T_{mb} = \underbrace{b_{core} \cdot n_K \cdot \max(T_{load},\, b_0 T_{comp})}_{\text{稳态流水}} + \underbrace{b_0(T_{comp} + T_{write})}_{\text{末合并 batch drain}} + \underbrace{\frac{b_{core}}{b_0} \cdot T_{bd}}_{\text{边界开销}}$$
$$
T_{mb} = \underbrace{b_{core} \cdot n_K \cdot \max(T_{load},\, b_0 T_{comp})}_{\text{稳态流水}} + \underbrace{b_0(T_{comp} + T_{write})}_{\text{末合并 batch drain}} + \underbrace{\frac{b_{core}}{b_0} \cdot T_{bd}}_{\text{边界开销}}
$$
其中 MergeBatch 合并后 $k_{L1}^m = \min(K,\; k_{L1}/b_0)$——L1 绑定$k_{L1}<K$ $k_{L1}^m = k_{L1}/b_0$K 截断$k_{L1}=K$ $k_{L1}^m = K$ 不减半 L1 绑定为例
条件 5 保证合并后仍访存 Bound$T_{load} > b_0 T_{comp}$),两式相减:
$$\Delta = T_{mb} - T_{iter} = \underbrace{(b_0-1)(T_{comp} + T_{write})}_{\text{drain 惩罚}} - \underbrace{b_{core}\Big(1-\frac{1}{b_0}\Big) T_{bd}}_{\text{边界节省}}$$
$$
\Delta = T_{mb} - T_{iter} = \underbrace{(b_0-1)(T_{comp} + T_{write})}_{\text{drain 惩罚}} - \underbrace{b_{core}\Big(1-\frac{1}{b_0}\Big) T_{bd}}_{\text{边界节省}}
$$
**分界条件**MergeBatch 优于 IterBatch 当且仅当 $\Delta < 0$
$$b_{core} > \frac{b_0 \cdot \text{penalty}}{T_{bd}},\qquad
\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}$$
$$
b_{core} > \frac{b_0 \cdot \text{penalty}}{T_{bd}},\qquad
\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}
$$
penalty 两种情形的含义drain 暴露 = 末合并batch 最后一个 K 分块的计算时延 + 输出写回时延——这部分没有下一块搬移可交叠,是流水线的 drain 尾部。
- **L1 绑定**$k_{L1} < K$L1 容量限制了 K 分块粒度MergeBatch 合并后 tile 更大 $k_{L1}$ 减半 每分块计算量 $b_0$ drain 惩罚 $= (b_0-1)(T_{comp}+T_{write})$