From 2795ad2062a3ec5bf14369c0cb7a938e24df1c76 Mon Sep 17 00:00:00 2001 From: admin Date: Tue, 25 Aug 2026 07:58:03 +0000 Subject: [PATCH] =?UTF-8?q?v0.92:=20=E5=90=8C=E6=AD=A5HTML?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BMM算子优化分析_v0.92.html | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/BMM算子优化分析_Release/BMM算子优化分析_v0.92.html b/BMM算子优化分析_Release/BMM算子优化分析_v0.92.html index cb94e08..14d4132 100644 --- a/BMM算子优化分析_Release/BMM算子优化分析_v0.92.html +++ b/BMM算子优化分析_Release/BMM算子优化分析_v0.92.html @@ -156,14 +156,22 @@ $$ $T_{bd}$batch 边界固定开销fixpipe 启动握手(详见下文物理成因) $BW_{pc}$单核 GM 带宽份额$W_{GM}/C$

*端到端时延模型*:对每核执行过程建模。稳态流水(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_{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_{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{边界开销}} + $$

其中 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 尾部。