Add BMM_Theory: docs/02_分支理论/07_尾轮处理策略.md

This commit is contained in:
2026-09-03 09:25:51 +00:00
parent 47064c22de
commit 416362dec4

View File

@@ -0,0 +1,97 @@
# 尾轮处理策略完整推导(参考文档)
> 本文是《BMM尾轮处理策略对比分析 v1.5》的推导细节存档,供深入参考.
> **工程结论已内化进 [06_ASW_Basic分支.md](06_ASW_Basic分支.md) §6**——尾轮是 ASW_Basic 最优实现的必要环节, 不是独立方案.
> 对应软件实现: `bmm_theory/branches/asw_basic.py` 中的尾轮决策.
## 1. 单块时延三项与主导项判定
单个输出块 [sM, sN]K 维全量累加)的三段时延:
$$T_{MMAD} = \frac{2\cdot sM\cdot sN\cdot K}{Q_{16}},\qquad T_{MTE2} = \frac{K(sM+sN)\cdot dt}{BW_{eff}},\qquad T_{FIX} = \frac{sM\cdot sN\cdot outB}{BW_{pc}}$$
**关键修正v1.3**T_MTE2 分子是全量 K 而非 k_L1——稳态流水下 k_L1 约掉(单块搬入总量 K(sM+sN)dt 与分次粒度无关k_L1 只通过 dValue/min_TileSize 约束影响有效带宽,不进时延分子。
**三维主导项判定**(取代单一 K 判据):
| 对比 | 判据 | 决定因素 |
|---|---|---|
| MMAD vs MTE2 | `sM·sN/(sM+sN)``dt·Q16/(2·BW_eff)` | **tile 尺寸**K 约掉) |
| MMAD vs FIX | `K``outB·Q16/(2·BW_pc)` ≈ 304 | **K** |
**缩放类型二分**MMAD 与 FIX 都 ∝ 面积 sM·sNMTE2 ∝ 周长 (sM+sN)。
- **面积型主导**MMAD 或 FIX 最大tile 大sM·sN/(sM+sN)≥93.5L2 命中K≥304 时 MMAD、K<304 FIX)——**主流 prefill/decode case 均属此类**
- **周长型主导**MTE2 最大tile <93.5L2 命中或工作集超 L2 GM 直读<304)——边角 case
## 2. 四种策略定义
| 策略 | 做法 | 块大小 | tile 套数 |
|---|---|---|---|
| **A0 不重切** | 尾轮 r 核各处理 1 整块Cr 核空转 | 主尾同大小 | 1 |
| **A1a 尾轮整数倍切分** | 尾轮每块沿 N M s* r·s* 小块分给 C | 主整块 + 1/s* 小块 | 2 |
| **A1b 尾轮 tile 重选凑满核** | 尾轮 r 个原块区域用更小 tile 重切凑满 C | 主整块 + 尾小 tile | 2 |
| **方案 B 整轮均匀重切** | 总块数向上取整到 n_wave·C全局重新枚举 tile 使每轮每核恰好一同大小块 | 全部同大小 | 1 |
通用时延式`T_A0 = n_wave·T_block``T_A1 = (n_wave1)·T_block + T_tail``T_B = n_wave·T_block'`
**A1b 的 tile 确定**理想 tile `s_t* = s·√(r/C)`sM=sN 16 对齐调整使重切块数 C允许非方形枚举。**A1a A1b 的真子集**A1a 的尾轮 tile (sM, sN/s*) 恰为 A1b 枚举空间特定组合 **A1b 恒不劣于 A1a**
## 3. 面积型主导(主流场景)
**A0 永不最优**r>0 时 A1 或方案 B 严格优):
- `Δ_{A0→A1b} = T_block(1 r/C) > 0`
- `Δ_{A0→B} = T_block·(Cr)/C > 0`
**A1b 与方案 B 理论时延严格相等**(总量守恒):面积型主导项下时延 ∝ 块面积,所有块面积之和 = 总输出 B·M·N 与切分方式无关,轮轮满载时 `T = c·B·M·N/C`
$$T_{A1b} = cA(n_{wave}-1+\rho) = T_B,\qquad \rho = r/C$$
结构性差异在**搬入总量**(周长和 SA1b 主轮整块 + 尾轮小 tile周长和 `S_A1b = 2sC(n_wave1+√ρ)`;方案 B 全局均匀 tile `S_B = 2sC√(n_wave(n_wave1+ρ))`。均值不等式:
$$\big(n_{wave}-1+\sqrt{\rho}\big)^2 \le n_{wave}(n_{wave}-1+\rho) \iff (\sqrt{\rho}-1)^2 \ge 0\ \checkmark$$
**A1b 周长和恒 ≤ 方案 B**搬入总量少、L2 重复读少、掩盖余量大)。离散 16 对齐后时延互有胜负(<3%数值依赖无系统性方向)。
**尾轮翻出修正**(§7.2.4面积型主导但 r ρ < (187/s)²) A1b 尾轮 tile 缩得太小周长/面积比上升使主导项翻转为周长型搬入翻出方案 B 的全局 tile 缩得温和1/√g > √ρ 恒成立)不翻出——**r 小的面积型 case 方案 B 可微优 ~6%**。
## 4. 周长型主导(边角场景)
- **A1 恒优于 A0**dValue 允许时):`Δ_{A0→A1b} = T_load(1ρ) > 0`
- **方案 B 恒优于 A0**`Δ_{A0→B} = n_wave·T_load(11/√g) > 0`
- **A1b vs 方案 B**ρρ_dv 时 **A1b 恒优**(均值不等式);ρ < ρ_dvA1b dValue 卡死ρ_dv = (256B/(sN·dt))²)且方案 B 可行时**方案 B 严格优当且仅当** `√ρ_dv > n_wave/√g (n_wave1)`——方案 B 反超的唯一通道是 dValueA1b 尾轮 tile 缩放 ρ 恒狠于方案 B 1/√g卡死更深时方案 B 胜出)。
**v1.5 广义方案 B**去掉"整除满载"强约束允许尾轮核利用率 80%、所有分块统一重切广义方案 B 修正首轮枚举 min w×T_block。**A1b 恒不劣于广义方案 B**枚举空间包含尾轮凑满方案 B 真实损失 3.7%~11.1%价值在工程简洁
## 5. 决策流程(闭式,无需逐项仿真)
五步前置计算 + 查表
1. 首轮切分搬入时延最小化枚举 mCnt, nCnt, sM, sN
2. N_blk, n_wave=⌈N_blk/C⌉, r=N_blk mod C, ρ=r/C
3. 三维主导项判定得 T_block = max(T_MMAD, T_MTE2, T_FIX)
4. dValue 可行性 ρ_dv = (256B/(sN·dt))²g = n_wave·C/N_blk
5. 查决策表
| # | 条件 | 最优策略 | 端到端时延 |
|---|---|---|---|
| 1 | r = 0 | A0 | n_wave·T_block |
| 2 | 面积型0<rC/2无翻出 | A1as*=⌊C/r | T_block(n_wave1+1/s*) |
| 3 | 面积型r>C/2无翻出 | A1b 或方案 B严格打平 | T_block(n_wave1+ρ) |
| 4 | 面积型,ρ<(187/s)²(翻出) | 方案 B | T_block·n_wave/g |
| 5 | 周长型ρρ_dvB 可行 | A1b | T_load(n_wave1+√ρ) |
| 6 | 周长型,ρ<ρ_dv 且分界成立且 B 可行 | 方案 B | T_load·n_wave/√g |
| 7 | 周长型广义 B 损失>0 | A1b恒不劣 | 广义枚举 min w×T_block |
## 6. 工程建议(主流场景)
1. **B1无脑整数轮满核切在主流场景安全**:面积型主导下与 A1b 严格相等零损失prefill 大 M/N 场景 r=0 居多;
2. **decode 小 M / 大 Batch 超 L2 场景**:广义方案 B 退回原切分dValue 边界块数不可减A1b 恒不劣;
3. 方案 B 损失 <12% 换实现简化一套 tile无尾轮分支是合理工程权衡
## 7. 边界说明
- **带宽模型敏感性**结论依赖"每核 MTE2 带宽上限 BW_pc"假设950PR MTE2 为每核独立 DMA 引擎带宽按核数配平)。 HBM 为全局共享池A0 尾轮搬移已接近理想结论反转——临界 case 建议实测复核
- **A1b 工程代价**需两套 tile 参数 + 尾轮区域边界处理r 个原块一般为 L 按矩形分解重切不改变时延结论但影响实现成本
- 16 对齐是 Cube 计算粒度16×16×16的硬件要求四种策略的 tile 无论重切前后都必须是 16 的倍数