Files
matmul-analysis/BMM/BMM_Theory/docs/02_分支理论/07_尾轮处理策略.md

6.7 KiB
Raw Blame History

尾轮处理策略完整推导(参考文档)

本文是《BMM尾轮处理策略对比分析 v1.5》的推导细节存档,供深入参考. 工程结论已内化进 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.3T_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 KoutB·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_blockT_A1 = (n_wave1)·T_block + T_tailT_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 恒优于 A0dValue 允许时):Δ_{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<r≤C/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 的倍数。