Files
matmul-analysis/BMM/BMM算子优化分析_Release/ASW_Basic分支分析/BMM尾轮处理策略对比分析_v1.4.md

53 KiB
Raw Blame History

BMM 尾轮处理策略对比分析:不重切 / 尾轮重切 / 整轮均匀重切

目标芯片:昇腾 950PRDAV_3510。本文自包含——不依赖其他分析文档全部推导在文内完成仅引用外部公开资料昇腾白皮书、CANN 文档、开源算子源码仓)。 版本v1.42026-08-31§7.2.3 重写:方案 B 的"不可行"改述为整除冗余代价——给出方案 B 最优可达性能的定义(整除可行分解枚举 min $T_B$)与 gcd(Batch,C) 分层定量g=C 零代价、g=4 约 7%、g=2/1 约 90%§5.4 例 3/例 4 补充方案 B 最优分解与损失推导) 历史v1.1 新增 §七 B1 无脑版门限与损失分析v1.0 首版(三策略两两对比与 Batch/M/K/N 判定流程) 历史v1.0 首版(三策略两两对比与 Batch/M/K/N 判定流程)


摘要

BMMBatchMatMul算子在核间切分 M/N 后,总输出块数 N_{blk} = \text{Batch} \cdot mCnt \cdot nCnt 一般不是核数 C 的整数倍,尾轮只有 r = N_{blk} \bmod C 个核工作、其余核空转。本文对四种尾轮处理策略做严格的两两对比:A0不重切、A1a尾轮整数倍切分、A1b尾轮 tile 重选凑满核、B整轮均匀重切,在计算 Bound 与访存 Bound 两类场景下给出完整的时延公式与适用条件分界。

核心结论:

  1. A0 从来不是最优r > 0 时 A1 或方案 B 严格优);
  2. A1a 是 A1b 的真子集枚举空间包含关系A1b 恒不劣于 A1a
  3. 计算 BoundA1b 与方案 B 理论时延严格相等(总计算量/C 守恒A1b 搬移周长和恒 ≤ 方案 B均值不等式——时延打平、按工程权衡选择
  4. 访存 Bound$\rho \ge \rho_{dv}$(尾轮占比 ≥ dValue 平方阈值)时 A1b 严格优;\rho < \rho_{dv} 时 A1b 被 dValue 卡死,方案 B 严格优当且仅当 $\sqrt{\rho_{dv}} > n_{wave}/\sqrt{g} - (n_{wave}-1)$——方案 B 反超的唯一通道是 dValueA1b 的尾轮 tile 缩放 \sqrt{\rho} 恒狠于方案 B 的 $1/\sqrt{g}$\rho < 1/g 恒成立),卡死更深时方案 B 胜出,该区间窄且临界实测打平;
  5. 给出基于 Batch/M/K/N/dtype 的闭式判定流程:五步前置计算 + 决策表,无需逐项仿真;
  6. v1.1 新增 §七:方案 B 的简化形态 B1(无脑版:满足门限就直接整数轮满核切,门限闭式 $r>0 \land (K \ge K^* \lor g \le (sN \cdot dtype/256\text{B})^2)$)与 B0/B1 相对 A1b 的损失分析
  7. v1.2 重写 §7.2:损失公式逐步推导链与主流场景分析;
  8. v1.3 修正时延模型T_{MTE2} 分子 $k_{L1} \to K$(稳态流水下 k_{L1} 约掉的完整证明——单块搬入总量 K(sM+sN)dtype 与分次粒度无关);三维主导项判定取代单一 K^* 判据MMAD vs MTE2 由 tile 决定、K 约掉MMAD vs FIX 由 K 决定,临界 304主导项缩放类型重新分类面积型MMAD/FIX ∝ 面积周长型MTE2 ∝ 周长)——主流 prefill/decode case 恒为面积型 → B1 与 A1b 时延严格相等(零损失)decode 小 M 场景方案 B 因分解自由度不足常不可行 → A1b 是唯一可行重切方案§2.5 方形结论严格证明(均值不等式,更正"L1 主导形状自由"的伪结论——那是 k_{L1} 误置时延分子的建模残余v1.2 的"~30% 极端例损失"是 k_{L1} 错误模型产物,修正后该例打平(<1%
  9. v1.4 重写 §7.2.3:方案 B 的"不可行"改述为整除冗余代价——方案 B 最优可达性能定义为整除可行分解枚举的 $\min T_B$;整除冗余按 \gcd(\text{Batch}, C) 分层定量Batch 为 C 倍数时零代价gcd=4 时约 7%decode 例:方案 B 75.6μs vs A1b 70.8μsgcd=2/互素时约 90%(方案 B 713μs / 477μs vs A1b 377.5μs / 251.7μs——互素时 mCnt' \cdot nCnt' 须为 32 倍数tile 被迫切小致周长和爆炸。

一、问题背景与执行模型

1.1 BMM 的核间切分与数据流

BatchMatMulV3 在昇腾 NPU 上的兜底分支ASW_Basic按输出块并行。适用范围说明ASW_Basic 是兜底分支——能进入更靠前特殊分支K=0、转 Matmul/Mul、StreamK、MergeBatch、IterBatch、AL1/BL1 全载等)的 case 会被优先截胡、不会进入 ASW_Basic因此本文只讨论 ASW_Basic 场景(核间切 M/N的尾轮处理那些在特殊分支下被承接的 case 不在本文对比范围。输出平面 M \times N 被切为 mCnt \times nCnt 个块,乘上 batch 维共 N_{blk} = \text{Batch} \cdot mCnt \cdot nCnt 个独立输出块,按序分配到 C 个 AIC 核。每个核内执行标准 Cube 数据流:

GM ──MTE2──> L1 ──MTE1──> L0A/L0B ──MMAD──> L0C ──Fixpipe──> GM
     ↑_____________ L2 Cache读 5.2TB/s_____________↑

核间不切 KsingleCoreK = K每个输出块独立累加完成后经 Fixpipe 写出 GM。块与块之间无依赖——这是尾轮可以独立重切的前提。

1.2 尾轮问题

块按序分配:核 i 处理块 $i, i+C, i+2C, \ldots$。总块数 N_{blk} 不能被 C 整除时,最后一轮(尾轮)只有 r = N_{blk} \bmod C 个核有块可算,C - r 个核空转一个整块时间。

问题:给定 Batch、M、K、N、dtype 与首轮切分singleCoreM/N如何处理尾轮使端到端时延最小

1.3 硬件规格与符号定义

昇腾 950PR 关键规格(昇腾 950 NPU 架构白皮书

符号 含义 取值
C AIC 核数 32
Q_{16} 单核 Cube BF16 峰值算力 486/32 ≈ 15.2 TFLOPS
W_{GM} GMHBM总带宽 1.6 TB/s
BW_{pc} 单核 GM 带宽份额 W_{GM}/C = 50 GB/s
L1 L1 容量/核 512 KB
L0C L0C 容量/核 256 KB
dtype / outB 输入/输出元素字节数 BF16 → 2B

Tiling 符号sM, sN = 单核输出 tile 的 M/N 维度singleCoreM/N 的简写);k_{L1} = GM→L1 的 K 向粒度;$mCnt = \lceil M/sM \rceil$、$nCnt = \lceil N/sN \rceil$。

尾轮符号$N_{blk} = \text{Batch} \cdot mCnt \cdot nCnt$(总块数);$n_{wave} = \lceil N_{blk}/C \rceil$(总轮次);$r = N_{blk} \bmod C$(尾轮块数);$\rho = r/C$(尾轮占比)。


二、基础模型

2.1 单块时延三项

单个输出块 $[sM, sN]$K 维全量累加)的三段时延。先推导搬入项——这是本文的修正重点。

搬入时延的推导(为什么分子是 K 而不是 $k_{L1}$:块 [sM, sN] 的输入为 A 行带 [sM, K] 与 B 列带 $[K, sN]$,总搬入量


S_{blk} = K \cdot (sM + sN) \cdot dtype

GM→L1 按 k_{L1} 的 K 向粒度分 K/k_{L1} 次搬入,每次搬 $k_{L1}(sM+sN) \cdot dtype$,与 MMAD 流水。稳态下总搬入时延 = 次数 × 单次时延:


T_{MTE2} = \frac{K}{k_{L1}} \cdot \frac{k_{L1}(sM+sN) \cdot dtype}{BW_{eff}} = \frac{K(sM+sN) \cdot dtype}{BW_{eff}}

k_{L1} 在稳态流水中约掉——搬入总时延只取决于总数据量与有效带宽,与分次粒度无关。k_{L1} 的真实角色是搬移效率约束§2.3$k_{L1} \cdot dtype \ge 256$BdValue 下限)与单次搬移量 ≥ 16KB 决定是否触发带宽打折,不满足时体现为 BW_{eff} 下降,而不是出现在时延分子中。

有效带宽 BW_{eff} 的分层:尾轮分析执行时,主轮已把输入工作集读入 L2——工作集 ≤ L2128MB时尾轮小块的搬入全部 L2 命中,BW_{eff} = BW_{L2}/C = 5.2\text{TB/s}/32 \approx 162.5 GB/s工作集超 L2 时部分回 GMBW_{eff} 介于 BW_{pc} = 50 GB/sGM 直读下界)与 162.5 GB/s 之间。

三段时延汇总


T_{MMAD} = \frac{2 \cdot sM \cdot sN \cdot K}{Q_{16}},\qquad T_{MTE2} = \frac{K(sM+sN) \cdot dtype}{BW_{eff}},\qquad T_{FIX} = \frac{sM \cdot sN \cdot outB}{BW_{pc}}

单块时延取主导项:$T_{block} = \max(T_{MMAD}, T_{MTE2}, T_{FIX})$。

三维主导项判定(两两比值,取代此前单以 K 判定的不完整做法):

对比 比值 判据 决定因素
MMAD vs MTE2 \dfrac{2 sM \cdot sN \cdot BW_{eff}}{(sM+sN) \cdot dtype \cdot Q_{16}} \dfrac{sM \cdot sN}{sM+sN} \gtrless \dfrac{dtype \cdot Q_{16}}{2 BW_{eff}} tile 尺寸K 约掉)
MMAD vs FIX \dfrac{2K \cdot BW_{pc}}{outB \cdot Q_{16}} K \gtrless \dfrac{outB \cdot Q_{16}}{2 BW_{pc}} KBF16 输出临界 ≈304
MTE2 vs FIX 由前两条推出

两个临界值BF16、L2 命中 $BW_{eff}$=162.5GB/stile 临界 $\dfrac{sM \cdot sN}{sM+sN} \approx 93.5$(方形 sM=sN 时 $s \approx 187$GM 直读 $BW_{eff}$=50GB/s 时临界 304、方形 $s \approx 608$K 临界 304。

关键推论(缩放类型二分):三项中 MMAD 与 FIX 都 \propto 面积 $sM \cdot sN$MTE2 \propto 周长 $(sM+sN)$。主导项的缩放类型决定尾轮分析的结构:

  • 面积型主导MMAD 或 FIX 最大tile 大(方形 $s \ge 187$)且(K \ge 304 时 MMAD、K < 304 时 FIX——主流 case 均属此类
  • 周长型主导MTE2 最大tile 小($s < 187$)或工作集超 L2GM 直读、$s < 608$)——边角 case。

注意:"K 大计算 Bound"的准确含义是"K 大使 MMAD 超过 FIX"(写出量与 K 无关MMAD 与 MTE2 的相对大小与 K 无关(两者都 $\propto K$)。此前版本以 K^* 单一判据分类的做法混淆了这两个维度,本版更正。

2.2 块几何缩放律(全文分析的枢纽)

把块数放大 g 倍(面积缩 g 倍、线性尺寸缩 \sqrt{g} 倍,近方形比例)时:

时延项 依赖 缩放律
T_{MMAD} \propto 面积 sM \cdot sN \propto g^{-1}
T_{MTE2} \propto 周长 (sM + sN) \propto g^{-1/2}
T_{FIX} \propto 面积 $\propto g^{-1}$(总量与切分无关)

搬移随周长缩放是关键:切分越多,计算缩 g 倍而搬移只缩 \sqrt{g} 倍——"切分越多重复读越多"在每块粒度上的体现输出是面积、输入搬运是周长A 行带 sM \times K + B 列带 $K \times sN$)。

2.3 搬移效率约束

GM→L1 搬移Nd2Nz DMA的两级效率阈值

  1. dValue ≥ 256BDMA 硬件突发下限dValue 是 ND 排布中连续维的字节数——B 矩阵非转置 [K, N] 时连续维为 NdValue = $sN \cdot dtype$B 转置 [N, K] 时连续维为 KdValue = $k_{L1} \cdot dtype$A 非转置 [M, K] 的 dValue = $k_{L1} \cdot dtype$A 的 dValue 由 K 向保证,不约束 $sM$B 非转置时 sN 有 256B 下限——约束非对称
  2. 单次搬移量 ≥ min_TileSize(推荐 16KB如 $k_{L1} \cdot sN \cdot dtype \ge 16$KB。

2.4 带宽模型声明

昇腾 950PR 每核 MTE2 为独立 DMA 引擎、带宽按核数配平,建模为每核带宽上限 = 聚合带宽/核数。该假设对 GM 与 L2 两层同构GM 层每核 BW_{pc} = W_{GM}/C = 50 GB/sL2 层每核 BW_{L2}/C = 5.2\text{TB/s}/32 \approx 162.5 GB/s§2.1 的 BW_{eff} 按工作集是否驻留 L2 在两层间取值)。尾轮 r 核的聚合带宽 = r \times 单核份额 < 满载聚合——尾轮搬移不加速,r 个整块用 r 核、每核 1 块,时延仍为一个整块搬移时间 $T_{load} = T_{MTE2}$。HBM 全局共享池模型的敏感性见 §八边界说明。

2.5 首轮切分基准(近方形的严格推导与证明)

首轮切分 (mCnt, nCnt, sM, sN) 的确定是尾轮分析的前提。本节给出完整推导链:问题 → 建模 → 证明 → 离散修正 → 结论

问题\text{Batch} < C 时须切分 M/N 填满 C 核。选什么样的 (sM, sN) 使端到端时延最小?

建模:由 §2.1主导项中唯一随切分变化的是搬入MMAD/FIX 只依赖全量 Batch/M/N/K。单核搬入总量 = 每核块数 × 单块搬入量:


T_{MTE2}^{core} = \frac{B \cdot mCnt \cdot nCnt}{C} \cdot K(sM+sN) \cdot dtype

代入 $mCnt = \lceil M/sM \rceil$、$nCnt = \lceil N/sN \rceil$(连续近似下取等号):


T_{MTE2}^{core} = \frac{B \cdot M \cdot N \cdot K \cdot dtype}{C} \cdot \Big(\frac{1}{sM} + \frac{1}{sN}\Big)

目标函数$\min; (1/sM + 1/sN)$\text{Batch}, M, N, K, dtype, C 均为常数)。约束:①并行度 $mCnt \cdot nCnt \ge \lceil C/\text{Batch} \rceil \triangleq P$②L1 容量 $2(sM+sN) k_{L1} \cdot dtype \le L1$③搬移效率dValue、min_TileSize§2.3);④sM, sN 为 16 倍数且为 BaseM/N 整数倍。

证明(两步)

第一步:块数最少原则。目标函数展开为 $\dfrac{B \cdot K \cdot dtype}{C} \cdot \big(mCnt \cdot N + nCnt \cdot M\big)$——块数越多(mCnt, nCnt 越大)搬入越多(重复读),故取最少块数 $mCnt \cdot nCnt = P$(并行度下界取等)。此时单块面积固定:


sM \cdot sN = \frac{M \cdot N}{P} \triangleq A_0 \quad \text{(常数)}

第二步:面积固定 → 方形严格最优。目标函数改写为周长形式:


\frac{1}{sM} + \frac{1}{sN} = \frac{sM + sN}{sM \cdot sN} = \frac{sM + sN}{A_0}

面积 A_0 固定时最小化周长 $sM + sN$。由均值不等式(或等周不等式——矩形面积固定时周长最小当且仅当方形):


sM + sN \ge 2\sqrt{sM \cdot sN} = 2\sqrt{A_0}, \qquad \text{等号} \iff sM = sN

严格成立——无任何近似。物理本质输出是面积、输入搬运是周长A 行带 sM \times K + B 列带 $K \times sN$),方形使"边界/面积比"最小,即单位输出的输入搬运最少。

离散修正(连续最优 → 工程可行):

  1. 整数与对齐sM = sN = \sqrt{A_0} 一般非 16 倍数,且 mCnt = M/sM 须整数——在连续方形附近枚举满足约束 ④ 的整除组合,取目标函数最小者(枚举才是最终裁决者,方形是其连续极限的解析刻画);
  2. dValue 非对称B 非转置时 $sN \cdot dtype \ge 256$B 卡 sN 下限A 的 dValue 由 k_{L1} 保证、不卡 $sM$)——极端长宽比时方形可能违反,取满足 dValue 的最近组合;
  3. $\text{Batch} \ge C$P=1退化:不切分,$sM = M, sN = N$——tile 跟随 M/N此时"方形"无意义,零重复读优先)。

对前一版本表述的更正v1.2 及之前版本曾以"K 全载 regime 方形最优、L1 主导 regime 仅面积相关、形状自由"描述方形结论的适用范围——该说法源自把 k_{L1} 误置时延分子的建模((1/sM+1/sN) \cdot k_{L1}k_{L1} = L1/(2(sM{+}sN)dtype) 恰好抵消周长。§2.1 已证 k_{L1} 在稳态流水中约掉,正确目标函数为 $(1/sM+1/sN) \cdot K$——形状敏感性在两个 regime 下统一存在,方形恒为连续最优k_{L1} 只通过 dValue/min_TileSize 约束§2.3)影响可行性,不影响目标函数的排序。

小结

  1. 首轮切分目标:$\min (1/sM + 1/sN)$(搬入时延最小化,唯一随切分变化的主导项);
  2. 最少块数原则:$mCnt \cdot nCnt = P = \lceil C/\text{Batch} \rceil$\text{Batch} \ge C 时不切分);
  3. 方形严格最优(均值不等式,面积固定时周长最小)——离散修正仅来自 16 对齐/整数分解/dValue 非对称,由枚举裁决;
  4. 方形结论不依赖任何 regime 假设——K 作为公共因子不进排序。

三、四种策略定义与实现方式

3.1 策略定义

策略 做法 块大小
A0不重切 尾轮 r 核各处理 1 个整块,C-r 核空转 主轮尾轮同大小
A1a尾轮整数倍切分 尾轮每块沿 N或 Ms^* 份,r \cdot s^* 个小块分给 C 核 主轮整块 + 尾轮 1/s^* 小块
A1b尾轮 tile 重选凑满核 尾轮 r 个原块覆盖的区域(面积 $r \cdot sM \cdot sN$)用更小 tile (sM_t, sN_t) 重新切分,凑满 C 核 主轮整块 + 尾轮小 tile
方案 B整轮均匀重切 总块数向上取整到 $N_{blk}' = n_{wave} \cdot C$,全局重新枚举 tile 使每轮每核恰好一个同样大小的块 全部块同大小

实现方式对比

策略 host 侧 tiling kernel 侧执行 tile 参数套数
A0 一套参数 线性映射 index = blockIdx + round × usedCoreNum,尾轮不满载核跳过 1
A1a 主参数 + 尾轮切分参数($s^*$ 最后一轮切换小块尺寸 2
A1b 主参数 + 尾轮 tile$sM_t, sN_t$ 尾轮区域独立子网格映射 2
方案 B 一套重切后参数 全程统一 tile无尾轮分支 1

对齐约束的平等性16 对齐是 Cube 计算粒度16×16×16 基本块)的硬件要求,四种策略的 tile——无论重切前后——都必须是 16 的倍数无一例外。差异只在枚举空间A1b 对尾轮子区域、方案 B 对全局)与 tile 套数。

3.2 A1b 的 tile 确定与 A1a ⊆ A1b 证明

A1b 的理想 tile方形同步缩小


s_t^* = sM \cdot \sqrt{\frac{r}{C}} \quad (sM = sN \text{ 时})

再按 16 对齐调整,使重切块数 $\lceil r \cdot sM \cdot sN / (sM_t \cdot sN_t) \rceil \le C$;也允许非方形枚举((sM_t, sN_t) 独立按 16 步进)选最贴合的组合。

A1a 是 A1b 的真子集A1a 的尾轮 tile 为 (sM, sN/s^*) 或 $(sM/s^*, sN)$s^* \in \{2, \ldots, \lfloor C/r \rfloor\} 整数),恰为 A1b 枚举空间中 $sM_t = sM$、sN_t = sN/s^* 的特定组合——其 16 对齐、dValue、块数约束在 A1b 枚举中同样检查。记 A1b 枚举空间为 $\Omega_{A1b}$A1a 解空间 $\Omega_{A1a} \subseteq \Omega_{A1b}$,枚举取最优:


T_{A1b} = \min_{\Omega_{A1b}} T \;\le\; \min_{\Omega_{A1a} \subseteq \Omega_{A1b}} T = T_{A1a}

A1b 恒不劣于 A1a且通常严格优A1a 受"s^* 整数"与"每块切同样份数"双重限制(r > C/2s^* = \lfloor C/r \rfloor = 1 完全失效A1b 允许非整数比例与凑满 C 核(无 r \le C/2 限制)。下文 A1 一律指 A1bA1a 视为退化形态)。

3.3 三策略通用时延式


T_{A0} = n_{wave} \cdot T_{block},\qquad T_{A1} = (n_{wave}-1) \cdot T_{block} + T_{tail},\qquad T_B = n_{wave} \cdot T_{block}'

A1a 时 $T_{tail} = T_{block}/s^*$(计算 BoundA1b 凑满 C 核时尾轮小块面积为 $\rho \cdot sM \cdot sN$,计算 Bound 下 $T_{tail}^{A1b} = \rho \cdot T_{block}$。


四、面积型主导完整推导(T_{MMAD}T_{FIX} 最大)

本章适用条件:主导项为面积型($\propto sM \cdot sN$——MMAD 主导(K \ge 304 且 tile 判据满足§2.1)或 FIX 主导($K < 304$)。两子型缩放律相同(都 \propto 面积),推导中以 T_{MMAD} 为记号FIX 主导时将 T_{MMAD} 替换为 T_{FIX} 结论不变。主流 prefill/decode case 均属本章范畴

4.1 A0 vs A1

A1a 可行时($r \le C/2$$\Delta_{A0 \to A1a} = T_{MMAD}(1 - 1/s^*)$。r > C/2 时 A1a 失效,但 A1b 不退化:


\Delta_{A0 \to A1b}^{calc} = T_{MMAD}\Big(1 - \frac{r}{C}\Big)

A1 恒优于 A0$r > 0$A0 在计算 Bound 下永不最优。

4.2 A0 vs B

代入 T_{block}' = T_{MMAD}/g 与 $n_{wave}/g = N_{blk}/C = n_{wave}-1+\rho$


\Delta_{A0 \to B}^{calc} = n_{wave} T_{MMAD} - T_{MMAD}\Big(n_{wave} - 1 + \frac{r}{C}\Big) = T_{MMAD} \cdot \frac{C - r}{C} > 0

方案 B 恒优于 A0(可行性校验:搬移掩盖 $\sqrt{g} \le T_{MMAD}/T_{MTE2}$;分解对齐)。

4.3 A1 vs B

A1b 凑满核时 $T_{A1b} = T_{MMAD}(n_{wave} - 1 + \rho)$,与 T_B = T_{MMAD}(n_{wave} - 1 + r/C) 理论时延严格相等——两者都是"总计算量/C"(面积型主导项下时延与切分方式无关,只要轮轮满载)。

结构性差异在搬入总量。先交代符号v1.3 补充,避免误读):

  • $s$首轮方形 tile 的边长sM = sN = s 的基准,不是 $sM + sN$
  • 周长和 $S \triangleq \sum_{\text{块}} (sM_{blk} + sN_{blk})$——所有块的周长之和。由 §2.1,单块搬入量 $= K(sM+sN) \cdot dtype$,故总搬入量 $= K \cdot dtype \cdot S$。同一 case 下 K, dtype 是公共常数,比较周长和 S 即比较搬入总量K 作为公共因子约掉,故 S 的表达式中不含 $K$——不是没有 $K$,而是 K 被提出约掉了)。

两策略的周长和:

A1b:主轮 (n_{wave}-1)C 块保持大 tile周长 $2s$+ 尾轮 C 块小 tile边长 $s\sqrt{\rho}$,周长 $2s\sqrt{\rho}$


S_{A1b} = 2sC\big(n_{wave} - 1\big) + 2s\sqrt{\rho} \cdot C = 2sC\big(n_{wave} - 1 + \sqrt{\rho}\big)

方案 Bn_{wave} C 块均匀 tile边长 $s_B = s\sqrt{N_{blk}/(n_{wave}C)}$(总面积守恒 $n_{wave} C \cdot s_B^2 = N_{blk} \cdot s^2$


S_B = n_{wave} C \cdot 2s_B = 2sC\sqrt{n_{wave}\Big(n_{wave} - 1 + \rho\Big)}

比较(两边约去 $2sC$


\big(n_{wave}-1+\sqrt{\rho}\big)^2 \le n_{wave}(n_{wave}-1+\rho) \iff 2\sqrt{\rho} \le 1 + \rho \iff (\sqrt{\rho}-1)^2 \ge 0 \quad \checkmark

均值不等式A1b 周长和恒 ≤ 方案 B(等号当 \rho = 1 即无尾轮)。搬入总量少意味着 L2 重复读少、周长型项的掩盖余量更大。

结论(面积型主导)A1b 与方案 B 理论时延严格相等;离散 16 对齐后互有胜负数值依赖、无系统性优劣——对齐约束对两者平等A1b 搬入总量恒 ≤ 方案 B结构性工程简洁选方案 B一套 tile追求搬移下限选 A1b。

4.4 数值实例

例 1MMAD 主导,$r > C/2$Batch=1、M=N=1792、K=4096、BF16、C=32。首轮 $mCnt=nCnt=7$$sM=sN=256$$N_{blk}=49$、$n_{wave}=2$、$r=17$、$\rho=0.53$。单块 $T_{MMAD}=35.3\mu s$、$T_{MTE2}^{L2}=25.8\mu s$、$T_{FIX}=2.6\mu s$——MMAD 面积型主导 ✓。

  • A0$70.6\mu s$A1as^* = \lfloor 32/17 \rfloor = 1 失效;
  • A1b 非方形枚举 $(sM_t, sN_t) = (224, 160)$:尾轮 32 块恰好凑满,$T_{A1b} = 35.3 + 19.3 = 54.6\mu s$
  • 方案 B$N_{blk}'=64=8\times8$、$sM'=sN'=224$$T_B = 54.1\mu s$。

A1b 与方案 B 打平54.6 vs 54.1,差 <1%,纯离散对齐的数值依赖)。相对 A0 均省约 23%

例 2MMAD 主导,r \mid C 完美点)M=1536、N=2048、K=4096、BF16。$N_{blk}=48$、$r=16$。A1as^* = 2 = C/r 完美,$T_{A1a} = 53.0\mu s$;方案 B$T_B = 53.0\mu s$。A1a = 方案 B$1/s^* = r/C$),选 A1a搬移增量小

例 3FIX 主导,r 小、尾轮小块搬入翻出)M=N=1536、K=256、BF16。$mCnt=nCnt=6$、$N_{blk}=36$、$n_{wave}=2$、$r=4$、$\rho=0.125$。单块 $T_{FIX} = 2.62\mu s$、$T_{MMAD}=2.21\mu s$、$T_{MTE2}^{L2}=1.61\mu s$——FIX 面积型主导$K=256 < 304$)。

  • A0$5.24\mu s$A1a$s^* = \min(8, 2) = 2$dValue$T_{A1a} = 2.62 + 2.62/2 = 3.93\mu s$
  • A1b$s_t = 256\sqrt{0.125} = 90.5 \to 96$16 对齐),尾轮 \lceil 4 \times 256^2/96^2 \rceil = 29 块凑 29 核——但小块 96^2 的搬入 T_{MTE2} = 256 \times 192 \times 2/162.5\text{G} = 0.61\mu s 翻出为尾轮主导项$> T_{FIX,t} = 0.37\mu s$tile 缩小使周长/面积比上升,见 §7.2.4$T_{A1b} = 2.62 + 0.61 = 3.23\mu s$
  • 方案 B$N_{blk}'=64=8\times8$、$sM'=sN'=192$T_{FIX}' = 1.47\mu s 仍主导($T_{MTE2}' = 1.21\mu s$$T_B = 2.95\mu s$。

翻出效应下方案 B 微优 8.5%——r 小时 A1b 的尾轮 tile 缩得太小、搬入翻出,方案 B 的全局 tile 缩得温和($1/\sqrt{g} = 0.75 > \sqrt{\rho} = 0.35$)不翻出。

例 4FIX 主导,r 大、不翻出,打平)M=N=2304、K=256、BF16。$mCnt=nCnt=9$、$N_{blk}=81$、$n_{wave}=3$、$r=17$、$\rho=0.53$。单块 T_{FIX}=2.62\mu s 主导。

  • A0$7.86\mu s$
  • A1b$s_t = 256\sqrt{0.53} = 186.6 \to 192$,尾轮 \lceil 17 \times 256^2/192^2 \rceil = 31 块,小块 T_{FIX,t} = 1.47\mu s 主导(T_{MTE2,t} = 1.21\mu s 不翻出),$T_{A1b} = 2 \times 2.62 + 1.47 = 6.71\mu s$
  • 方案 B$N_{blk}'=96$、分解 $(8,12)$$sM'=288, sN'=192$$T_{FIX}' = 2.21\mu s$$T_B = 6.64\mu s$。

打平6.71 vs 6.64,差 1%,离散对齐的数值依赖)——面积型主导且尾轮不翻出时 A1b 与方案 B 时延相等(总量守恒)的实证。


五、周长型主导完整推导(T_{MTE2} 最大)

本章适用条件:主导项为周长型 $T_{MTE2}$\propto 周长 $(sM+sN)$)——小 tile$sM \cdot sN/(sM+sN) < 93.5$L2 命中)或工作集超 L2 的 GM 直读($< 304$)场景。主导项 $T_{block} = T_{load} = K(sM + sN) \cdot dtype / BW_{eff}$§2.1 修正后的 K 版;K 在单 case 三策略比较中为公共因子,可约掉)。

5.1 A0 vs A1

A1a$r \le C/2$):尾轮沿 N 切 s^* 份,小块搬移 $(sM + sN/s^) k_{L1} dtype$A 行带 [sM, k_{L1}] 每个小块都要完整搬一次,不随 s^* 缩小——结构性弱点),方形下 $T_{tail} = T_{load}(1+1/s^)/2$


\Delta_{A0 \to A1a}^{mem} = \frac{T_{load}}{2}\Big(1 - \frac{1}{s^*}\Big)

受 dValue 硬约束 $s^* \le sN \cdot dtype/256\text{B}$BF16、sN=256 时 $s^* \le 2$)。

A1b任意 $r$):尾轮区域用 s_t = s\sqrt{\rho} tile 重切凑满 C 核,尾轮总搬移 $= C \cdot 2s\sqrt{\rho} \cdot k_{L1}$C 核满载聚合带宽 $C \cdot BW_{pc}$


T_{tail}^{A1b} = \sqrt{\rho} \cdot T_{load},\qquad \Delta_{A0 \to A1b}^{mem} = T_{load}\big(1 - \sqrt{\rho}\big) > 0

A1 恒优于 A0dValue 允许时)。

5.2 A0 vs B


\Delta_{A0 \to B}^{mem} = n_{wave} T_{load}\Big(1 - \frac{1}{\sqrt{g}}\Big) > 0 \quad (g > 1)

方案 B 恒优于 A0dValue 约束 g \le (sN \cdot dtype/256\text{B})^2 满足时)。物理解释:尾轮 r 核聚合带宽仅 $r \cdot BW_{pc}$,搬移不加速;方案 B 让所有轮次满核满带宽。

5.3 A1 vs B——完整分界推导

i无约束 regime$\rho \ge \rho_{dv}$A1b 可凑满):总时延正比于周长和(满载轮聚合带宽相同),由 §4.3 的均值不等式:


\frac{T_{A1b}^{mem}}{T_B^{mem}} = \frac{n_{wave} - 1 + \sqrt{\rho}}{\sqrt{n_{wave}(n_{wave}-1+\rho)}} \le 1

A1b 恒不劣于方案 B\rho 小时优势大($\rho=0.1$、n_{wave}=2 时优 11%)。

ii关键结构事实A1b 的 dValue 约束恒比方案 B 更严。A1b 的尾轮 tile 缩放因子为 $\sqrt{\rho}$,方案 B 的全局 tile 缩放因子为 $1/\sqrt{g} = \sqrt{(n_{wave}-1+\rho)/n_{wave}}$


\rho < \frac{1}{g} \iff \rho \cdot n_{wave} < n_{wave} - 1 + \rho \iff \rho(n_{wave} - 1) < n_{wave} - 1 \iff \rho < 1 \quad \checkmark \text{} r < C \text{ 恒成立)}

物理含义A1b 只缩尾轮 r 块的区域去凑满 C 核tile 必须缩得比方案 B 的全局缩放更狠——所以 A1b 的尾轮 tile 更早跌破 dValue 下限。这是方案 B 可能反超的唯一通道

iii三区间判定$\rho_{dv} = (256\text{B}/(sN \cdot dtype))^2$

区间 条件 结论
I $\rho \ge \rho_{dv}$A1b 凑满可行;此时 1/g > \rho \ge \rho_{dv} 故方案 B 也可行) A1b 恒优(均值不等式)
II $\rho < \rho_{dv} \le 1/g$A1b 卡死、方案 B 可行) 分界公式判定(下)
III $\rho_{dv} > 1/g > \rho$(都卡死) A0/A1a 兜底

区间 II 中 A1b 退化为 $s_t = 256\text{B}/dtype$dValue 下限),尾轮块数 $= r/\rho_{dv} < C$(凑不满),尾轮时延 $= \sqrt{\rho_{dv}} \cdot T_{load}$(小块搬移按 s_t/sN = \sqrt{\rho_{dv}} 缩放):


T_{A1b}^{dv} = T_{load}\big(n_{wave} - 1 + \sqrt{\rho_{dv}}\big),\qquad T_B = \frac{n_{wave}}{\sqrt{g}} \cdot T_{load}

方案 B 严格优当且仅当


\sqrt{\rho_{dv}} > n_{wave} \cdot \sqrt{\frac{n_{wave} - 1 + \rho}{n_{wave}}} - (n_{wave} - 1)

物理解读A1b 卡死后尾轮时延被锁在 $\sqrt{\rho_{dv}} \cdot T_{load}$dValue 下限决定),不再随 \rho 减小;而方案 B 的 n_{wave}/\sqrt{g}\rho 减小而降低(全局重切幅度减小)。\rho 足够小(卡死足够深)时方案 B 反超。

5.4 数值实例

访存 Bound 数值实例周长型主导v1.3 重新构造)

例 3工作集超 L2、GM 直读的周长型gcd=2 的整除代价)Batch=34、M=N=1024、K=2048、BF16tile $sM=sN=512$。输入总量 $34 \times 2 \times 1024 \times 2048 \times 2 = 285$MB > L2 128MB——工作集超 L2搬入部分回 GM 直读($BW_{eff} \to BW_{pc}=50$GB/s。单块$T_{MMAD} = 70.7\mu s$、$T_{MTE2} = 2048 \times 1024 \times 2/50\text{G} = 83.9\mu s$周长型主导tile 判据 $512^2/1024 = 256 < 304$)、$T_{FIX} = 10.5\mu s$。$N_{blk} = 34 \times 4 = 136$、$n_{wave}=5$、$r=8$、$\rho=0.25 \ge \rho_{dv}=0.0625$。

  • A0$5 \times 83.9 = 419.5\mu s$
  • A1a$s^* = \min(\lfloor 32/8 \rfloor, 512 \times 2/256\text{B}) = \min(4, 4) = 4$$T_{A1a} = 4 \times 83.9 + 83.9 \times (1+1/4)/2 = 388\mu s$
  • A1b$s_t = 512\sqrt{0.25} = 256$dValue $=512$B ✓),尾轮 8 块 512^2 区域重切为 8 \times 4 = 32256^2 恰好凑满,$T_{tail} = 2048 \times 512 \times 2/50\text{G} = 41.9\mu s$$T_{A1b} = 4 \times 83.9 + 41.9 = 377.5\mu s$省 10%
  • 方案 Bv1.4 重写——给最优性能而非"不可行"g = \gcd(34, 32) = 2 → $mCnt' \cdot nCnt' \equiv 0 \pmod{16}$。首轮最优块数 4/batch$2 \times 2$)不整除,放大方向无更优((2,8) 周长和更大),只能切小到 $(4,4)$$sM'=sN'=256$、dValue=512B ✓、$N_{blk}' = 34 \times 16 = 544$、n_{wave}=17 整除):$T_B^* = 17 \times 41.9 = 713\mu s$。方案 B 最优 713μs相对 A1b377.5μs损失 88.9%,比 A0419.5μs还差 70%——gcd=2 使块数须 ×4周长和从 34 \times 4 \times 1024 = 139{,}264 增至 $34 \times 16 \times 512 = 278{,}528$×2整除代价远超尾轮收益。

例 4周长型、Batch 与 C 互素的极端整除代价)Batch=7、M=1280、N=256、K=8192、BF16tile $sM=sN=256$。输入总量 $7 \times (1280 \times 8192 + 8192 \times 256) \times 2 = 176$MB > L2 128MB → GM 直读周长型tile 判据 128 < 304 ✓)。$T_{load} = 8192 \times 512 \times 2/50\text{G} = 167.8\mu s$。首轮最优 $(mCnt, nCnt) = (5, 1)$$P = \lceil 32/7 \rceil = 5$dValue 边界满足),$N_{blk} = 7 \times 5 = 35$、$n_{wave}=2$、$r=3$、$\rho=0.094$。

  • A0$2 \times 167.8 = 335.6\mu s$
  • A1a$s^* = \min(\lfloor 32/3 \rfloor, 256 \times 2/256\text{B}) = 2$$T_{A1a} = 167.8 + 167.8 \times (1+1/2)/2 = 293.6\mu s$
  • A1bs_t 下限 128dValue尾轮 3 块 256^2 重切为 3 \times 4 = 12 块 $128^2$12 核半满载),$T_{tail} = 8192 \times 256 \times 2/50\text{G} = 83.9\mu s$$T_{A1b} = 167.8 + 83.9 = 251.7\mu s$
  • 方案 B$g = \gcd(7, 32) = 1$(互素)→ $mCnt' \cdot nCnt' \equiv 0 \pmod{32}$——最少 32 块/batch。可行分解 $(16, 2)$$sM'=80$、$sN'=128$、dValue=256B ✓、$N_{blk}' = 7 \times 32 = 224$、n_{wave}=7 整除):$T_B^* = 7 \times (8192 \times 208 \times 2/50\text{G}) = 477.1\mu s$。

方案 B 最优 477.1μs相对 A1b251.7μs损失 89.6%,比 A0335.6μs还差 42.2%——互素时 mCnt' \cdot nCnt' 须为 32 的倍数(首轮最优 5 → 32×6.4 倍块数),周长和从 7 \times (1280 + 5 \times 256) = 17{,}920 增至 $7 \times (2 \times 1280 + 16 \times 256) = 46{,}592$×2.6)。

周长型场景的规律:工作集超 L2 的 case 通常 Batch 大或形状大 → N_{blk} 大 → n_{wave} 大 → 尾轮占比小(\rho 小或 w 大),损失/收益天然被稀释;方案 B 的整除冗余代价按 \gcd(\text{Batch}, C) 分层§7.2.3——Batch 与 C 互素或近互素时代价可达 ~90%,此时 A1b/A1a 承接。方案 B 在这些场景并非"不可行",而是其最优可达性能显著劣于 A1b


六、决策总表与基于 Batch/M/K/N 的判定流程

6.1 决策总表

主导项判定§2.1 三维判据):面积型主导 = T_{MMAD}T_{FIX} 最大tile 判据 $\frac{sM \cdot sN}{sM+sN} \ge 93.5$L2 命中)且 MMAD/FIX 间由 K \gtrless 304 分);周长型主导 = T_{MTE2} 最大(小 tile 或工作集超 L2 的 GM 直读)。

场景 A0 vs A1 A0 vs 方案 B A1 vs 方案 B 最优策略
面积型主导,r \le C/2r \mid C A1a 优 方案 B 优 A1a = 方案 B选 A1a搬移少 A1a
面积型主导,r \le C/2r \nmid C A1a 优 方案 B 优 方案 B 略优(取整损失) A1a/方案 B 皆可
面积型主导,r > C/2 A1b 优(不退化) 方案 B 优 时延严格相等(总量守恒),离散打平 A1b 或方案 B工程简洁选方案 B搬移下限选 A1b
面积型主导 + r 小($\rho < (187/s)^2$,尾轮翻出) A1b 优但尾轮翻出 方案 B 优 方案 B 微优(~6-8%,翻出效应 §7.2.4 方案 B
周长型主导,\rho \ge \rho_{dv} 且方案 B 可行 A1b 优 方案 B 优 A1b 恒优(均值不等式) A1b
周长型主导,\rho < \rho_{dv} 且分界公式成立且方案 B 可行 A1b 部分凑满 方案 B 优 方案 B 严格优 方案 B
周长型主导,\rho < \rho_{dv} 且分界公式不成立 A1b 部分凑满 方案 B 优 打平 A1b/方案 B 皆可
周长型主导,方案 B 整除冗余代价大gcd(Batch,C) 小decode 小 M、互素 Batch A1b 优 方案 B 最优性能损失 7%~90% A1b A1b
dValue 全面卡死A1b 也不可凑满) A1a$s^* \ge 2$)或 A0 方案 B 整除代价更大 A1a/A0

6.2 基于 Batch/M/K/N/dtype 的直接判定流程

五步闭式前置计算后查表即得最优策略,无需逐项建模仿真:

  1. 首轮切分:按 §2.5 搬入时延最小化枚举得 $mCnt, nCnt, sM, sN, k_{L1}$
  2. 尾轮参数$N_{blk} = \text{Batch} \cdot mCnt \cdot nCnt$$n_{wave} = \lceil N_{blk}/C \rceil$$r = N_{blk} \bmod C$$\rho = r/C$
  3. 主导项判定§2.1 三维判据):算 T_{MMAD}, T_{MTE2}, T_{FIX} 取最大;注意 BW_{eff} 依工作集是否超 L2 取 162.5GB/s命中或 50GB/sGM 直读);
  4. dValue 可行性$\rho_{dv} = (256\text{B}/(sN \cdot dtype))^2$$g = n_{wave}C/N_{blk}$$g_{dv} = (sN \cdot dtype/256\text{B})^2$方案 B 整除代价评估g = \gcd(\text{Batch}, C) → $mCnt' \cdot nCnt' \equiv 0 \pmod{C/g}$;枚举整除可行分解取 $\min T_B$g 小时代价大,直接比 A1b
  5. 单块主导项$T_{block} = \max(T_{MMAD}, T_{MTE2}, T_{FIX})$。

决策表

# 条件 最优策略 端到端时延
1 r = 0 A0无尾轮 n_{wave} \cdot T_{block}
2 面积型主导,$0 < r \le C/2$,无翻出 A1as^* = \lfloor C/r \rfloor T_{block}(n_{wave} - 1 + 1/s^*)
3 面积型主导,$r > C/2$,无翻出 A1b 或方案 B——时延严格相等 T_{block}(n_{wave} - 1 + \rho)
4 面积型主导,$\rho < (187/s)^2$(翻出) 方案 B翻出时 A1b 尾轮变周长型) $T_{block} \cdot n_{wave}/g$(近似)
5 周长型主导,$\rho \ge \rho_{dv}$,方案 B 可行 A1b T_{load}(n_{wave} - 1 + \sqrt{\rho})
6 周长型主导,\rho < \rho_{dv}\sqrt{\rho_{dv}} > n_{wave}/\sqrt{g} - (n_{wave}-1) 且方案 B 可行 方案 B T_{load} \cdot n_{wave}/\sqrt{g}
7 周长型主导,方案 B 整除冗余代价 > A1b 收益 A1b凑不满则部分凑满/ A1a / A0 方案 B 最优性能按 gcd 枚举计算

判定流程图

[Batch, M, K, N, dtype]
    │
    ▼
<首轮枚举§2.5)→ mCnt, nCnt, sM, sN>
    │
    ▼
<N_blk, n_wave, r, ρ = r/C>
    │
    ├─ r = 0 ────────────────────▶ A0无尾轮
    ▼
<三维主导项判定§2.1>
    │
    ├─ 面积型MMAD 或 FIX 最大)
    │    │
    │    ├─ ρ < (187/s)²(尾轮翻出)? ── 是 ─▶ 方案 B
    │    │                              否 ── r ≤ C/2 ? ── 是 ─▶ A1as* = ⌊C/r⌋
    │    │                                              否 ─▶ A1b 或方案 B时延严格相等
    │    │                                                   (工程简洁选方案 B
    │
    └─ 周长型MTE2 最大)
         │
         ├─ 方案 B 整除代价评估g=gcd(Batch,C)
         │    g 小(代价 > A1b 收益)─▶ A1b / A1a / A0
         │
         └─ 可行 ── ρρ_dv ? ── 是 ─▶ A1b周长和恒 ≤ 方案 B
                                └─ 否 ─▶ 分界公式判定:
                                     √ρ_dv > n_wave/√g (n_wave1) ? ── 是 ─▶ 方案 B
                                                                  └─ 否 ─▶ A1b/方案 B 打平

七、方案 B 的简化形态 B1 与 B0/B1 相对 A1b 的损失分析

前文方案 B整轮均匀重切与 A1b 的分界判定需要逐 case 计算 $\rho$、$\rho_{dv}$、分界公式——本节回答两个工程问题:①能否给方案 B 一个无脑版门限(满足条件就直接整数轮满核切,不做 A1b/方案 B 分界)?②若完全采用方案 B无论无脑版 B1 还是完整版 B0相对理论最优的 A1b 会损失多少、最大损失多少?

7.1 B0 与 B1 的定义

  • B0完整版方案 B:§三~§五的方案 B——与 A1b 做分界判定后选择(访存 Bound 且 \rho \ge \rho_{dv} 时应选 A1b 而非方案 B
  • B1无脑版方案 B:不做 A1b/方案 B 分界,只要门限满足就直接按整数轮满核切(无论计算 Bound 还是访存 Bound

B1 门限推导B1 要成立需两个条件——

条件 1有尾轮$r = N_{blk} \bmod C > 0$(否则无尾轮可处理);

条件 2可行 + 值得)B0 恒优于 A0§4.2/§5.2 已证),故"可行即值得"。可行性只在访存 Bound 下受 dValue 约束($g \le g_{dv}$);计算 Bound 下无条件dValue 放宽为搬移掩盖,且 §4.3 已证方案 B 与 A1b 时延严格相等)。

合起来,B1 的判定门限(闭式,仅依赖 Batch/M/K/N/dtype


\boxed{\; r > 0 \;\land\; \Big( K \ge K^* \;\lor\; g \le \Big(\frac{sN \cdot dtype}{256\text{B}}\Big)^2 \Big) \;}

即:计算 Bound 时无条件直接整数轮满核切;访存 Bound 时满足 dValue 门限($g \le g_{dv}$)就直接整数轮满核切。门限的全部输入($r$、$g$、$K^*$、$sN$都来自首轮切分结果host 端一次计算即可。

7.2 B0/B1 相对 A1b 的损失分析v1.3 按修正模型重写)

B0/B1 相对 A1b 的"损失"定义为 $T_B/T_{A1b} - 1$(方案 B 更慢为正)。按 §2.1 的主导项缩放类型分两类讨论——v1.3 修正模型(T_{MTE2} 用全量 K、三维主导项判定结论与 v1.2 有实质差异

7.2.1 面积型主导:损失严格为 0总量守恒

面积型主导项MMAD 或 FIX的时延 \propto 块面积。设主导项单块时延 $T_{block} = c \cdot sM \cdot sN$c 为与 tile 无关的系数MMAD 时 $c = 2K/Q_{16}$FIX 时 $c = outB/BW_{pc}$)。总量守恒:所有块的面积之和 = 总输出 $\text{Batch} \cdot M \cdot N$,与切分方式无关。轮轮满载时:


T = \frac{\text{主导项总量}}{C} = \frac{c \cdot \text{Batch} \cdot M \cdot N}{C}

A1b主轮整块 + 尾轮凑满)与方案 B全局均匀重切都做到轮轮满载 → 时延严格相等,损失恒为 0

证明$T_{A1b} = (n_{wave}-1) \cdot c \cdot A + \rho \cdot c \cdot A = cA(n_{wave}-1+\rho)$(尾轮凑满时尾轮小块面积 $= \rho A$、时延 $\rho \cdot cA$$T_B = n_{wave} \cdot c \cdot A/g = cA(n_{wave}-1+\rho)$$n_{wave}/g = N_{blk}/C = n_{wave}-1+\rho$)。严格相等

离散 16 对齐后互有胜负(<3%,数值依赖、无系统性方向)。面积型主导下 B1 零损失——这是 v1.3 相对 v1.2 最重要的修正v1.2 用 k_{L1} 版错误模型把大量面积型 case 误标为"访存 Bound"并算出 5.4%~30% 的虚假损失)。

7.2.2 周长型主导:损失公式的逐步推导

周长型主导MTE2 最大:小 tile 或工作集超 L2 的 GM 直读)时,时延 \propto 周长和。分四步:

第一步:两策略时延表达式。A1b 主轮整块 + 尾轮 tile 缩 \sqrt{\rho} 凑满 C 核:


T_{A1b} = (n_{wave}-1) \cdot T_{load} + \sqrt{\rho} \cdot T_{load} = T_{load}\big(n_{wave} - 1 + \sqrt{\rho}\big)

方案 BN_{blk}' = n_{wave} C 块均匀重切、单块搬移缩 \sqrt{g} 倍($g = n_{wave} C/N_{blk}$


T_B = \frac{n_{wave}}{\sqrt{g}} \cdot T_{load}

第二步:消元N_{blk}/C = n_{wave}-1+\rho 代入 $1/\sqrt{g} = \sqrt{N_{blk}/(n_{wave} C)}$


T_B = T_{load}\sqrt{n_{wave}\big(n_{wave} - 1 + \rho\big)}

第三步:作比


f(\rho, n_{wave}) \triangleq \frac{T_B}{T_{A1b}} = \frac{\sqrt{n_{wave}\big(n_{wave}-1+\rho\big)}}{n_{wave} - 1 + \sqrt{\rho}},\qquad \text{损失} = f - 1

第四步:最大值定位f\rho 单调减、对 n_{wave} 单调减(\rho \to 1n_{wave} \to \infty 时 $f \to 1$),最大损失在 $\rho = \rho_{min} = \max(1/C, \rho_{dv})$、n_{wave} = 2 处:

$sN$BF16 \rho_{dv} $f_{max}-1$(理论,方形近似)
256 0.25r=8 5.4%
512 0.0625r=2 16.6%

数值核验($sN=256$、$r=8$、$n_{wave}=2$、$N_{blk}=40$、$g=1.6$T_B = 2/\sqrt{1.6} = 1.581\,T_{load} vs T_{A1b} = (1+\sqrt{0.25})\,T_{load} = 1.5\,T_{load}f = 1.054 ✓。

7.2.3 理论公式的可靠性:三个近似与方案 B 的可行性约束

损失公式建立在三个近似上,逐一审视:

1方形近似与非方形惩罚N_{blk}' 的整数分解偏离方形比例时周长和上升,惩罚因子 $p(\lambda) = (\sqrt{\lambda} + 1/\sqrt{\lambda})/2 \ge 1$\lambda 为分解长宽比)。修正后:


\frac{T_B}{T_{A1b}} = \frac{n_{wave} \cdot p_B / \sqrt{g}}{(n_{wave}-1) + \sqrt{\rho} \cdot p_t}

非方形惩罚同时作用于 $p_B$(方案 B 全局分解)与 $p_t$A1b 尾轮分解)——损失方向由均值不等式的结构保持(两策略在同一基准形状上缩放),但大小偏离理论值p_B > p_t 时放大、p_B < p_t 时缩小甚至反超。理论值应视为损失下界

2k_{L1} 的角色更正v1.3 修正)。k_{L1} 不进时延分子§2.1 已证稳态约掉),其影响通过 dValue/min_TileSize 约束体现:重切使周长缩小 → k_{L1} 的 L1 容量上限放松,但 dValue 下限 $sN' \cdot dtype \ge 256$B 不变——约束检查的对象是 tile 尺寸本身,k_{L1} 不产生额外的时延放大。v1.2 中"k_{L1} 跨 regime 使搬移反升"的解释是 k_{L1} 版错误建模的残余,本版删除。

3方案 B 的整除冗余代价v1.4 重写——取代"方案 B 不可行"的说法)。方案 B 要求 N_{blk}' = n_{wave} \cdot C 分解为 \text{Batch} \cdot mCnt' \cdot nCnt' 且 16 对齐 + dValue——当整除约束迫使 tile 偏离首轮最优时,方案 B 并非"不可行",而是为整除付出冗余代价tile 被迫切小或形状扭曲,周长和增大)。正确做法是:给出方案 B 在该 case 的最优可达性能,再与 A1b 定量比较。

方案 B 最优性能的定义:在所有满足约束($mCnt' \mid M$、$nCnt' \mid N$、16 对齐、dValue、覆盖N_{blk}' = \text{Batch} \cdot mCnt' \cdot nCnt' \equiv 0 \pmod C 的分解中,取


T_B^* = \min_{(mCnt',\, nCnt')} \; \frac{N_{blk}'}{C} \cdot T_{block}'

整除冗余的定量分层:记 $g = \gcd(\text{Batch}, C)$,整除条件 \text{Batch} \cdot mCnt' \cdot nCnt' \equiv 0 \pmod C 等价于


mCnt' \cdot nCnt' \equiv 0 \pmod{C/g}
  • $g = C$Batch 是 C 的倍数):任意切分恒整除,零约束代价
  • g 中等(如 4~8mCnt' \cdot nCnt' 须为 C/g 的倍数,最优分解只需小幅偏离首轮最优,代价百分之几
  • g 小(如 1~2互素或近互素mCnt' \cdot nCnt' 须为 16~32 的倍数——若首轮最优块数dValue 边界的最少块数远小于此tile 被迫切小数倍,周长和增大,代价可达 ~90%

decode 小 M 实例的完整推导Batch=100、M=64、N=3328、K=512、BF16周长型主导——小 tile $64 \times 256/320 = 51 < 93.5$L2 命中 $BW_{eff}=162.5$GB/s

首轮最优§2.5dValue 边界最少块数):$nCnt'=4$、$sN'=832$$k_{L1}=288$、dValue=576B ✓;nCnt' \le 3k_{L1} 跌破 128 → dValue < 256B 不可行),$N_{blk} = 400$、$n_{wave}=13$、$r=16$。单块 $T_{load} = 512 \times 896 \times 2/162.5\text{G} = 5.65\mu s$。

  • A0$13 \times 5.65 = 73.4\mu s$
  • A1b主轮 12 轮 + 尾轮 16 块区域用 tile (64, 416) 重切凑满 32 核(16 \times 832/416 = 32 ✓),$T_{tail} = 512 \times 480 \times 2/162.5\text{G} = 3.02\mu s$$T_{A1b} = 12 \times 5.65 + 3.02 = 70.8\mu s$
  • 方案 Bg = \gcd(100, 32) = 4 → $nCnt' \equiv 0 \pmod 8$mCnt'=1 固定)。可行域 \{8, 16, \ldots\} 中最优 $nCnt'=8$$sN'=416$、dValue=832B ✓、$N_{blk}'=800$、n_{wave}=25 整除),$T_B^* = 25 \times 3.02 = 75.6\mu s$。

方案 B 最优性能 75.6μs相对 A1b70.8μs损失 6.8%,甚至比 A073.4μs还差 3.0%。代价来源:首轮最优块数 nCnt'=4 不整除($4 \not\equiv 0 \pmod 8$),方案 B 被迫 $nCnt'=8$——块数翻倍、tile 减半,周长和从 100 \times 4 \times 896 = 358{,}400 增至 $100 \times 8 \times 480 = 384{,}000$+7.1%整除消除的尾轮空转1 轮)抵不上周长和增量。

物理解释:方案 B 的整除冗余 = 周长和增量(整除迫使 tile 偏离 dValue 边界的最优块数A1b 的收益 = 尾轮空转消除1 个整块时间)。当周长和增量 > 尾轮空转收益时,方案 B 劣于 A0——这正是此前误称为"不可行"的场景的真实定量面貌。

7.2.4 尾轮小块的主导项翻转(面积型场景的边界修正)

面积型主导下 A1b 的尾轮 tile 缩到 $s_t = s\sqrt{\rho}$tile 缩小使周长/面积比上升,s_t 跌破搬入临界($s_t \lesssim 187$L2 命中)时尾轮小块的主导项从面积型翻转为周长型(搬入翻出),尾轮时延高于面积型公式 $\rho \cdot T_{block}$。翻转条件:


s\sqrt{\rho} < 187 \iff \rho < \Big(\frac{187}{s}\Big)^2

s=256 时 $\rho < 0.533$$r < 17$)即翻出。此时 A1b 尾轮时延按周长型计算($T_{tail} = T_{load}(s_t)$),方案 B 的全局 tile s/\sqrt{g} 缩得更温和(1/\sqrt{g} > \sqrt{\rho} 恒成立)更不易翻出——r 小的面积型 case 中方案 B 可微优M=N=1536、K=256 的 FIX 主导 case方案 B 微优约 6%

7.2.5 主流 prefill/decode 场景的实际损失

大模型推理 BMM 典型形状prefill Batch∈[2,128]、M∈[4k,128k]、K/N∈[128,10240]decode Batch∈[2,128]、M∈[1,128]、K/N∈[128,10240]。

1prefillM 大):面积型主导 + 大 n_{wave} → 损失 0

  • M, N 为 256 倍数(主流模型维度 4096/8192/14336 均是):$mCnt = M/256$、nCnt = N/256 含充足 2 的幂因子,N_{blk} = \text{Batch} \cdot mCnt \cdot nCnt\text{Batch} \ge 2 几乎恒为 32 倍数 → r=0 无尾轮,损失 0
  • M 奇异seq_len 非 256 倍数,如 M=4224N_{blk} 大、n_{wave} \ge 9 → 即使触发尾轮,面积型主导下 A1b 与方案 B 严格打平 → 损失 0
  • tile 判据:$sM=sN=256$、$sM \cdot sN/(sM+sN) = 128 > 93.5$L2 命中临界)→ 搬入不主导K 任意时 MMAD$K \ge 304$)或 FIX$K < 304$)主导——恒面积型

2decodeM ≤ 128 小):周长型主导,方案 B 整除冗余代价随 gcd(Batch,C) 而定

  • M 小 → tile 面积小($sM = M$)→ tile 判据 M \cdot sN/(M+sN) 小(如 M=64、sN=256$51.2 < 93.5$)→ 周长型主导
  • mCnt=1 固定 → 方案 B 只能沿 N 调整块数,整除条件 $nCnt' \equiv 0 \pmod{C/g}$$g=\gcd(\text{Batch},C)$限制可选块数——Batch 与 C 互素/近互素时可选块数远离首轮最优整除冗余代价大Batch=100、M=64、N=3328方案 B 最优 75.6μs vs A1b 70.8μs损失 6.8%§7.2.3 完整推导);
  • A1b 尾轮局部重切tile (M, sN_t) 只缩 N 向)不受整除约束 → decode 场景 A1b 为主力,方案 B 按其最优性能参与比较
  • $w=1$$N_{blk} < C$,如 Batch=8、N=512核填不满属降核/并行度不足场景,不在尾轮讨论范围。

3主流场景损失结论

场景 主导项类型 方案 B 可行性 B0/B1 相对 A1b 损失
prefillM,N 为 256 倍数 0r=0 无尾轮)
prefillM 奇异 面积型 可行 0严格打平离散 <3% 互有胜负)
decodeM \le 128 周长型 整除代价随 gcd 而定 gcd 小时方案 B 最优性能劣 A1b ~7%~90%
工作集超 L2 的大 Batch case 周长型 整除代价随 gcd 而定 互素时方案 B 最优性能劣 A1b ~90%
周长型 + 方案 B 可行 + \rho \ge \rho_{dv} + n_{wave}=2 周长型 可行 5.4%$sN=256$/ 16.6%$sN=512$,理论下界)
面积型 + r 小($\rho < 0.53$ 面积型(尾轮翻出周长型) 可行 ≤ 0方案 B 微优 ~6%,翻出效应)

v1.2 的"~30% 极端例损失"是 k_{L1} 错误模型的产物——正确模型K 版 + 三维主导项下该例M=16896、N=512、K=140为 FIX 面积型主导A1b 与方案 B 打平(差异 <1%)。主流 prefill/decode case 中 B1 零损失(面积型)或按 gcd 评估整除代价(周长型,代价大时 A1b 承接——B1 在主流场景是安全的工程选择。

7.3 损失汇总与工程建议

场景修正模型K 版 T_{MTE2} + 三维主导项) B0/B1 相对 A1b 的损失 说明
面积型主导MMAD$K \ge 304$FIXK < 304 且 tile 大) 0(严格打平,总量守恒) 主流 prefill/decode 均属此类;离散对齐 <3% 互有胜负
面积型主导 + r 小($\rho < (187/s)^2$,尾轮翻出) ≤ 0方案 B 微优 ~6-8% 翻出效应§7.2.4A1b 尾轮 tile 太小
周长型主导MTE2方案 B 可行,$\rho \ge \rho_{dv}$n_{wave}=2 5.4%$sN=256$/ 16.6%$sN=512$,理论下界) f(\rho)-1 公式;实际 case 罕见
周长型主导,方案 B 整除冗余代价大gcd(Batch,C) 小) 方案 B 最优性能劣 A1b 7%~90% gcd=4 约 7%、gcd≤2 约 90%
周长型主导,$\rho < \rho_{dv}$A1b dValue 卡死)且方案 B 可行 ≤ 0方案 B 反超)或打平 分界公式 §5.3(iii)
主流 prefill/decode case 0 ~ 2.5% §7.2.5

工程建议v1.3 刷新):

  1. B1无脑整数轮满核切在主流场景是安全的:面积型主导下与 A1b 时延严格相等零损失prefill 大 M/N 场景 r=0 居多256 倍数);
  2. decode 小 M / 互素 Batch 场景方案 B 整除冗余代价大mCnt=1\gcd(\text{Batch},C) 小)——按 §7.2.3 枚举方案 B 最优性能与 A1b 比较,代价 > 收益时回落 A1b
  3. 周长型 + 方案 B 可行 + n_{wave}=2 + \rho=\rho_{dv} 的边角 case损失理论 5.4%~16.6%(下界),此类 case 应落到 A1b 或按 §5.3 分界公式精确判定B0
  4. v1.2 的"~30% 极端例损失"是 k_{L1} 错误模型产物,修正模型下该例打平(<1%)——不存在 30% 量级的真实损失场景
  5. B1 门限闭式§7.1host 端零成本。

八、边界说明

  1. 带宽模型敏感性:访存 Bound 结论依赖"每核 MTE2 带宽上限 $BW_{pc}$"假设。若 HBM 为全局共享池(尾轮 r 核可吃满 $W_{GM}$A0 尾轮搬移时延已是 \rho \cdot T_{load} 接近理想A1b/方案 B 的搬移增量无带宽补偿,结论反转。昇腾 950PR 的 MTE2 为每核独立 DMA 引擎、带宽按核数配平,采用固定份额结论;临界 case 建议实测复核。
  2. A1b 的工程代价:需两套 tile 参数(主轮大 tile + 尾轮小 tile与尾轮区域的边界处理r 个原块的并一般为 L 形按矩形分解重切host 端多一次枚举NPU 侧 kernel 需支持尾轮 tile 尺寸切换。这些复杂度不改变时延结论,但影响实现成本。
  3. 方形基准的适用条件§2.5 已述——K 全载时方形严格最优、L1 主导时仅面积相关。非方形分解的实际收益由同一目标函数评估,例 5 的非方形惩罚即此体现。
  4. Batch 不整除 $N_{blk}'$\text{Batch} \nmid N_{blk}' 时按 batch 分组切分、部分 batch 多一块,收益略降,判定不变。

参考文献

  1. 昇腾 950 NPU 架构白皮书华为技术有限公司2026
  2. cann-ops-nn 源码仓BatchMatMulV3kernel 侧尾轮线性映射见 op_kernel/arch35/batch_mat_mul_v3_asw_block_advanced.hUpdateBasicIndexindex = newBlockIdx + roundIdx × usedCoreNumif (index < totalCnt) 跳过空转核——即本文的策略 A0