v1.7 修订:§5.10 重写为三策略(A0/A1/B)两两对比——计算/访存 Bound 下完整推导与适用分界

This commit is contained in:
2026-08-29 08:28:56 +00:00
parent da6e9b5aa9
commit ea3f74ea73

View File

@@ -6,7 +6,7 @@
ASW_Basic 是 BMM 的兜底分支——核间切 M/N或混合切不做 batch 合并或 K 维切分。本文给出完整的时延建模、核间分配策略分析(证明 B 优先分组在任何场景下都不优于线性映射)、实现方案的逐步推导(含尾轮重切的 Bound 类型分级策略),以及与源码实现的逐维度对比。
v1.7 新增 §5.10**尾轮处理的第二种策略——整轮均匀重切**(不做尾轮与主轮差异化,把总块数向上取整到 C 的整数倍后全局重切 SingleCoreM/N。按算力 Bound / 访存 Bound 分类给出与尾轮差异化重切的严格时延对比与适用条件:计算 Bound 下两策略在 $s^*=\lfloor C/r\rfloor$ 完美时等价,但 $r > C/2$(尾轮无法重切)时整轮重切收益达 $T_{block}(1-r/C)$(数值例 23.4%);访存 Bound 下(固定带宽份额模型)搬移时延与块周长成正比,整轮重切使单块搬移缩 $\sqrt{g}$ 倍,收益 $n_{wave}T_{load}(1-1/\sqrt{g})$ 恒正(数值例 6.2%),但受 dValue ≥ 256B 硬约束。v1.6 新增 §7 程序实现流程图:**从 case 输入B/M/K/N/dtype出发分别给出源码 ASW_Basic`BatchMatMulV3AswBasicTiling` 六阶段:进入判定 → ResetBase → cubeBound 枚举 → CalL1Tiling → 参数打包 → kernel 滑窗蛇形)与理论最优实现(八阶段:分支判定 → BaseM/N/K → SingleCoreM/N 有界枚举 → 核间分配 → 尾轮重切 → swizzle → L2 分组 → 端到端校验)两张完整流程图**每步标注计算公式与产出参数并给出两图差异对照。v1.5 扩充 §6 源码对比cubeBound 模型三项的物理推导(工作集超 L2 倾向更小 tile、K 大倾向更大 tile、**源码 singleCore = base 不分层导致过度切分**K 小时搬入时延可达理论 2 倍)、尾轮不实际重切。核心结论:**B 优先分组不优于线性映射;理论的最少切分原则 + SingleCore/Base 分层 + 尾轮重切是相对源码的三条实质改进;源码的 cubeBound 解析模型与平台自适应值得理论吸收。**
v1.7 新增 §5.10**尾轮处理三策略A0 不重切 / A1 仅尾轮差异化重切 / B 整轮均匀重切)的两两对比与适用分界**。计算 Bound 访存 Bound 下分别推导 A0 vs A1、A0 vs B、A1 vs B 的完整时延公式:计算 Bound 下 B 恒不劣于 A1$\Delta = T_{MMAD}(1/s^* - r/C)$$r \mid C$ 完美重切时等价$r > C/2$ 时 A1 失效 B 收益达 $T_{MMAD}(1-r/C)$(数值例 23.4%);访存 Bound 下搬移随块周长缩放($\sqrt{g}$A1 收益被 dValue 与 A 行带不缩小双重压缩A1 vs B 的分界为 $n_{wave}(1-1/\sqrt{g})$ vs $(1-1/s^*)/2$(数值例:$n_{wave}=2$ 时 B 省 14.3%、$n_{wave}=4$ 时临界打平、$r=17$ 时 B 省 6.2%)。**总体结论A0 从来不是最优;$r > C/2$ 时 B 唯一可重切;其余按分界公式判定。**v1.6 新增 §7 程序实现流程图:**从 case 输入B/M/K/N/dtype出发分别给出源码 ASW_Basic`BatchMatMulV3AswBasicTiling` 六阶段:进入判定 → ResetBase → cubeBound 枚举 → CalL1Tiling → 参数打包 → kernel 滑窗蛇形)与理论最优实现(八阶段:分支判定 → BaseM/N/K → SingleCoreM/N 有界枚举 → 核间分配 → 尾轮重切 → swizzle → L2 分组 → 端到端校验)两张完整流程图**每步标注计算公式与产出参数并给出两图差异对照。v1.5 扩充 §6 源码对比cubeBound 模型三项的物理推导(工作集超 L2 倾向更小 tile、K 大倾向更大 tile、**源码 singleCore = base 不分层导致过度切分**K 小时搬入时延可达理论 2 倍)、尾轮不实际重切。核心结论:**B 优先分组不优于线性映射;理论的最少切分原则 + SingleCore/Base 分层 + 尾轮重切是相对源码的三条实质改进;源码的 cubeBound 解析模型与平台自适应值得理论吸收。**
---
@@ -693,144 +693,231 @@ $\text{BaseM} \times \text{BaseN} \times 4\text{B} \times DB \le L0C$$\text{B
tiling `usedCoreNum = ⌈P⌉`不强制 CSingleCoreM/N L0C 容量内取最大$\text{singleCoreM} \times \text{singleCoreN} \times 4\text{B} \le L0C$每核按标准核内流水L1L0CubeL0CFixpipe处理自己的输出块核间无共享无依赖无需 swizzle L2 切分降核后 GM 并发搬移核数若 < minCoreNum带宽利用率上限被压低——这正是降核区 case 时延的瓶颈所在也是"时延绝对值小不再继续优化"的定量注脚
### 5.10 尾轮处理的第二种策略:整轮均匀重切
### 5.10 尾轮处理的种策略对比与适用分界
§5.3 的尾轮重切是**差异化策略**主轮块保持最少切分原则下的大 tile只把尾轮 $r$ 个块再切 $s^*$ 本节分析另一种**均匀化策略**——不做尾轮与主轮的差异化而是先把总块数向上取整到 C 的整数倍再按新块数全局重切 SingleCoreM/N使每轮每核恰好一个同样大小的块两种策略孰优取决于算子是计算 Bound 还是访存 Bound
给定 BMKNdtype §5.15.2 确定 BaseM/BaseN/SingleCoreM/SingleCoreN 总块数 $N_{blk} = B \cdot mCnt \cdot nCnt$ 一般不是 C 的整数倍尾轮只有 $r = N_{blk} \bmod C$ 个核工作对尾轮有三种处理策略
**问题**给定 BMNKdtype首轮按 §5.2 最优切分出 $N_{blk} = B \cdot mCnt \cdot nCnt$ 个块后 $r = N_{blk} \bmod C \neq 0$尾轮只有 $r$ 核工作策略 A(§5.3在尾轮内部差异化重切策略 B 直接令
| 策略 | 做法 | 块大小 |
|---|---|---|
| **A0不重切** | 尾轮 $r$ 核各处理 1 个整块$C-r$ 核空转 | 主轮尾轮同大小 |
| **A1仅尾轮差异化重切**(§5.3 | 尾轮 $r$ 块沿 N M再切 $s^*$ $r \cdot s^*$ 个小块分给 $C$ | 主轮整块 + 尾轮小块 |
| **B整轮均匀重切** | 总块数向上取整到 $N_{blk}' = n_{wave} \cdot C$全局重新枚举 SingleCoreM/N 使每轮每核恰好一个同样大小的块 | 全部块同大小 |
$$
N_{blk}' = \Big\lceil \frac{N_{blk}}{C} \Big\rceil \cdot C = n_{wave} \cdot C
$$
本节在计算 Bound / 访存 Bound 两类场景下分别对 A0 vs A1A0 vs BA1 vs B 三组对比做完整推导给出适用条件分界
重新枚举 $(mCnt', nCnt')$ 使 $B \cdot mCnt' \cdot nCnt' = N_{blk}'$目标函数仍是 $T_{MTE2}$ 最小即重复读最少优先搬移效率次优先——枚举算法复用 §5.2仅约束 1 $B \cdot mCnt \cdot nCnt \ge C$ 改为等式 $= N_{blk}'$)。**何时 B 优于 A**
**统一建模**
**建模:块几何对三类时延的缩放律**
符号$n_{wave} = \lceil N_{blk}/C \rceil$总轮次$r = N_{blk} \bmod C$尾轮块数$s^*$ A1 的尾轮重切因子(§5.3$g = N_{blk}'/N_{blk} = n_{wave}C/N_{blk} > 1$ 为 B 的块数放大倍数。
记块数放大倍数 $g = N_{blk}'/N_{blk}$$g > 1$,且 $g \le (N_{blk} + C - 1)/N_{blk}$$n_{wave}=2$ 时 $g < 2$)。重切后单块输出面积缩 $g$ 块的线性尺寸M/N 向边长 $\sqrt{g}$ 保持近方形比例
*块几何对三类时延的缩放律*B 重切后单块面积缩 $g$ 倍、线性尺寸缩 $\sqrt{g}$ 倍,保持近方形比例):
| 时延项 | 依赖 | 缩放律 |
|---|---|---|
| $T_{MMAD}$(单块 Cube 计算) | $\propto$ 面积 $sM \cdot sN$ | $T_{MMAD}' = T_{MMAD}/g$ |
| $T_{MTE2}$(单块 GM→L1 搬入) | $\propto$ 周长 $(sM + sN)$ | $T_{MTE2}' \approx T_{MTE2}/\sqrt{g}$ |
| $T_{FIX}$单块写出 | $\propto$ 面积 $sM \cdot sN \cdot outB$ | $T_{FIX}' = T_{FIX}/g$总量与切分无关 |
| $T_{FIX}$(单块写出 | $\propto$ 面积 | $T_{FIX}' = T_{FIX}/g$(总量与切分无关) |
**搬移时延随周长缩放是关键**重切使计算缩 $g$ 搬移只缩 $\sqrt{g}$ ——这正是"切分越多重复读越多"(§5.2在每块粒度上的体现
**搬移随周长缩放是关键**:切分越多,计算缩 $g$ 倍而搬移只缩 $\sqrt{g}$ 倍——"切分越多重复读越多"(§5.2在每块粒度上的体现
**带宽模型声明**昇腾 950PR 每核 MTE2 引擎带宽上限按 $BW_{pc} = W_{GM}/C = 50$ GB/s 建模(§1.3)。该假设下尾轮只有 $r$ 核工作时聚合带宽为 $r \cdot BW_{pc} < W_{GM}$尾轮搬移时延不随核数减少而缩短——尾轮 $r$ 个块用 $r$ 每核 1 时延仍为一个整块搬移时间 $T_{load}$。 HBM 为全局共享池单核 MTE2 无独立上限则尾轮可吃满 $W_{GM}$结论相反见本节末的边界说明。)
*带宽模型声明*:昇腾 950PR 每核 MTE2 带宽上限按 $BW_{pc} = W_{GM}/C = 50$ GB/s 建模§1.3)。该假设下尾轮 $r$ 核的聚合带宽仅 $r \cdot BW_{pc}$,尾轮搬移不加速——$r$ 个整块用 $r$ 核,每核 1 块,时延仍为一个整块搬移时间 $T_{load}$。HBM 全局共享池模型的边界说明见本节末。
**两策略总时延(通用式)**
*三策略通用时延式*$T_{block} = \max(T_{MMAD}, T_{MTE2}, T_{FIX})$ 为单块主导项):
$$
T_A = (n_{wave}-1) \cdot T_{block} + \frac{T_{block}}{s^*},\qquad T_B = n_{wave} \cdot T_{block}'
T_{A0} = n_{wave} \cdot T_{block}
$$
其中 $T_{block} = \max(T_{MMAD}, T_{MTE2}, T_{FIX})$单块主导项$s^*$ §5.3 的尾轮重切因子
$$
T_{A1} = (n_{wave}-1) \cdot T_{block} + T_{tail}(s^*)
$$
$$
T_B = n_{wave} \cdot T_{block}'
$$
其中 $T_{tail}(s^*)$ 为 A1 尾轮小块主导项时延,$T_{block}'$ 为 B 重切后小块主导项时延。
---
**情形一:计算 Bound$T_{MMAD} > T_{MTE2}$,即 $K \ge K^*$**
#### 情形一:计算 Bound$T_{MMAD} > T_{MTE2}$
代入缩放律 $T_{block}' = T_{MMAD}/g$并利用 $n_{wave}/g = n_{wave} \cdot N_{blk}/N_{blk}' = N_{blk}/C = n_{wave}-1+r/C$
主导项 $T_{block} = T_{MMAD} = 2 \cdot sM \cdot sN \cdot K / Q_{16}$。A1 尾轮沿 N 切 $s^*$ 份后小块面积缩 $s^*$ 倍:$T_{tail} = T_{MMAD}/s^*$。B 重切后 $T_{block}' = T_{MMAD}/g$,代入 $n_{wave}/g = N_{blk}/C = n_{wave}-1+r/C$
$$
T_B^{calc} = \frac{n_{wave}}{g} \cdot T_{MMAD} = T_{MMAD}\Big(n_{wave} - 1 + \frac{r}{C}\Big)
T_B^{calc} = T_{MMAD}\Big(n_{wave} - 1 + \frac{r}{C}\Big)
$$
与策略 A 比较
**1A0 vs A1**
$$
\Delta_{calc} = T_A^{calc} - T_B^{calc} = T_{MMAD}\Big(\frac{1}{s^*} - \frac{r}{C}\Big)
\Delta_{A0 \to A1}^{calc} = T_{A0} - T_{A1} = T_{MMAD}\Big(1 - \frac{1}{s^*}\Big) \ge 0
$$
由于 $s^* = \min(\lfloor C/r \rfloor,\; s_{max}) \le \lfloor C/r \rfloor \le C/r$ $1/s^* \ge r/C$**$\Delta_{calc} \ge 0$ 恒成立——计算 Bound 下策略 B 恒不劣于策略 A**。收益分档
1. **$r \le C/2$ $\lfloor C/r \rfloor$ $C/r$ 接近** $r \mid C$$r=16 \Rightarrow s^*=2=C/r$$1/s^* = r/C$$\Delta = 0$,两策略等价;此时策略 B 徒增搬移量$\sqrt{g}$ 与启动开销**不应重切**
2. **$r \le C/2$ $\lfloor C/r \rfloor$ 取整损失大** C=32、$r=10$$s^*=3$$1/3 - 10/32 \approx 0.021$策略 B 收益约 2% 每轮边际
3. **$r > C/2$**$\lfloor C/r \rfloor = 1$$s^* = 1$——**策略 A 完全无法重切尾轮**(切 1 份等于不切),尾轮 $r$ 核工作、$C-r$ 核空转一个整块时间。策略 B 收益:
A1 恒不劣于 A0分界在可行性计算 Bound 下重切约束放宽为对齐与搬移掩盖§5.3$s^* = \min(\lfloor C/r \rfloor,\; sN/16,\; sN/x_{min})$。$r \le C/2$ 时 $\lfloor C/r \rfloor \ge 2$A1 可用;**$r > C/2$ 时 $s^* = 1$A1 退化为 A0**。即:
$$
\Delta_{calc}\big|_{r>C/2} = T_{MMAD}\Big(1 - \frac{r}{C}\Big)
\text{A0 vs A1计算 Bound} \begin{cases} r \le C/2 \Rightarrow \text{A1 优,收益 } T_{MMAD}(1 - 1/s^*) \\ r > C/2 \Rightarrow \text{A1 不可行A0 = A1} \end{cases}
$$
**适用前提(两条校验)**
**2A0 vs B**
- **搬移掩盖校验**:重切后单块 $T_{MTE2}' = T_{MTE2}/\sqrt{g}$ 仍须被计算掩盖,即 $T_{MTE2}/\sqrt{g} \le T_{MMAD}/g$,化简得
$$
\Delta_{A0 \to B}^{calc} = T_{A0} - T_B = T_{MMAD}\Big(n_{wave} - \frac{N_{blk}}{C}\Big) = T_{MMAD} \cdot \frac{C - r}{C}
$$
$r < C$有尾轮 **$\Delta > 0$ 恒成立——计算 Bound 下 B 恒优于 A0**(只要可行)。收益随 $r$ 减小而增大尾轮越空A0 浪费越多。可行性校验两条:
- *搬移掩盖*:重切后单块搬移仍被计算掩盖,$T_{MTE2}/\sqrt{g} \le T_{MMAD}/g$,即
$$
\sqrt{g} \le \frac{T_{MMAD}}{T_{MTE2}}
$$
计算 Bound 余量($T_{MMAD}/T_{MTE2}$)越大,可承受的块数放大越多。$n_{wave}=2$ 时 $g < 2$$\sqrt{g} < 1.42$校验通常自动通过
- *分解可行*$N_{blk}'$ 可分解为 $B \cdot mCnt' \cdot nCnt'$$sM'/sN'$ 满足 16 对齐与 BaseM/N 整数倍。
- **可行性校验**$N_{blk}'$ 可分解为 $B \cdot mCnt' \cdot nCnt'$ $sM', sN'$ 满足 16 对齐与 BaseM/N 整数倍约束 4计算 Bound dValue 约束放宽为搬移掩盖条件(§5.3)。
**3A1 vs B**
**数值实例(计算 Bound$r > C/2$**B=1、M=N=1792、K=4096、BF16、C=32。首轮最优切分 $mCnt=nCnt=7$$sM=sN=256$$N_{blk}=49$$n_{wave}=2$$r=17$。单块 $T_{MMAD}=2 \times 256^2 \times 4096/15.2\text{T} = 35.3\mu s$$T_{MTE2}=5.2\mu s$$k_{L1}=288$计算 Bound ✓)。
$$
\Delta_{A1 \to B}^{calc} = T_{A1} - T_B = T_{MMAD}\Big(\frac{1}{s^*} - \frac{r}{C}\Big)
$$
- 策略 A$s^* = \lfloor 32/17 \rfloor = 1$,无法重切,$T_A = 2 \times 35.3 = 70.6\mu s$
- 策略 B$N_{blk}' = 64 = 8 \times 8$$sM'=sN'=224$$8 \times 224 = 1792$ 恰好整除$g=64/49=1.31$。校验:$\sqrt{g}=1.14 \le T_{MMAD}/T_{MTE2}=6.7$ ✓;$T_{MTE2}'=5.2\mu s < T_{MMAD}'=27.0\mu s$ ✓;dValue $= 224 \times 2 = 448$B 256B ✓。$T_B = 2 \times 27.0 = 54.1\mu s$。
由 $s^* \le \lfloor C/r \rfloor \le C/r$ 知 $\Delta \ge 0$ 恒成立,**B 恒不劣于 A1**。分界:
**收益 23.4%**——这就是 $r > C/2$ 场景下整轮重切的价值:策略 A 的差异化重切在 $r > C/2$ 时完全失效,整轮重切把尾轮的 $C-r=15$ 个空转核次利用起来。
$$
\text{A1 vs B计算 Bound} \begin{cases} s^* = C/r \text{} r \mid C \text{ 完美重切)} \Rightarrow \Delta = 0 \text{A1 = B} \\ s^* < C/r \Rightarrow \text{B 收益 } T_{MMAD}(1/s^* - r/C) \end{cases}
$$
注意 $s^* < C/r$ 有两类来源$\lfloor C/r \rfloor$ 取整损失$r \nmid C$以及 $r > C/2$ 时 $s^* = 1$ 的完全失效。
**计算 Bound 数值实例**
*例 1$r > C/2$A1 失效)*B=1、M=N=1792、K=4096、BF16、C=32。首轮 $mCnt=nCnt=7$$sM=sN=256$$N_{blk}=49$、$n_{wave}=2$、$r=17$。单块 $T_{MMAD} = 2 \times 256^2 \times 4096/15.2\text{T} = 35.3\mu s$$T_{MTE2}=5.2\mu s$,计算 Bound ✓)。
- A0$T_{A0} = 2 \times 35.3 = 70.6\mu s$
- A1$s^* = \lfloor 32/17 \rfloor = 1$,退化为 A0$T_{A1} = 70.6\mu s$
- B$N_{blk}' = 64 = 8 \times 8$$sM'=sN'=224$$8 \times 224 = 1792$ 整除),$g = 64/49 = 1.31$。掩盖校验 $\sqrt{g}=1.14 \le T_{MMAD}/T_{MTE2} = 6.7$ ✓dValue $= 448$B ≥ 256B ✓。$T_B = 2 \times 27.0 = 54.1\mu s$。
**B 相对 A0/A1 省 23.4%**;公式核验 $\Delta_{A1 \to B} = 35.3 \times (1 - 17/32) = 16.5\mu s$ ✓。
*例 2$r \mid C$ 完美重切A1 = B 等价点)*M=1536、N=2048、K=4096、BF16。$mCnt=6, nCnt=8$$sM=sN=256$$N_{blk}=48$、$n_{wave}=2$、$r=16$。$s^* = \min(2, 16) = 2 = C/r$ 完美:
- A0$70.6\mu s$
- A1$35.3 + 35.3/2 = 53.0\mu s$
- B$N_{blk}' = 64 = 8 \times 8$$sM'=192, sN'=256$$T_B = 2 \times 26.5 = 53.0\mu s$。
**A1 = B**$1/s^* = r/C = 1/2$$\Delta = 0$)✓。此时应选 A1——时延相同但 B 徒增搬移量($\sqrt{g} = 1.15$ 倍与块数48→64启动/排空开销增多),无补偿收益。
---
**情形二:访存 Bound$T_{MTE2} \ge T_{MMAD}$,即 $K < K^*$**
#### 情形二:访存 Bound$T_{MTE2} \ge T_{MMAD}$
代入缩放律 $T_{block}' = T_{MTE2}/\sqrt{g}$
主导项 $T_{block} = T_{load} = (sM + sN) \cdot k_{L1} \cdot dtype / BW_{pc}$。A1 尾轮沿 N 切 $s^*$ 份后小块搬移量为 $(sM + sN/s^*) \cdot k_{L1} \cdot dtype$**A 行带 $[sM, k_{L1}]$ 每个小块都要完整搬一次,不随 $s^*$ 缩小**——这是差异化重切的结构性弱点),方形下
$$
T_B^{mem} = \frac{n_{wave}}{\sqrt{g}} \cdot T_{load}
T_{tail}^{A1} = T_{load} \cdot \frac{1 + 1/s^*}{2}
$$
策略 A 在访存 Bound 下的尾轮重切受 dValue 硬约束§5.3$s \le sN \cdot dtype/256\text{B}$$s^*$ 通常很小;$r > C/2$ 时同样 $s^* = \lfloor C/r \rfloor = 1$。即使 $s^* \ge 2$$r \le C/2$),尾轮沿 N 切 $s^*$ 份后小块搬移量为 $(sM + sN/s^*) \cdot k_{L1}$,方形下时延为 $T_{load} \cdot (1 + 1/s^*)/2$,仍显著高于策略 B 的 $T_{load}/\sqrt{g}$。固定带宽份额模型下:
B 重切后单块 $T_{load}' \approx T_{load}/\sqrt{g}$(近方形缩放)。
**1A0 vs A1**
$$
\Delta_{mem} = T_A^{mem} - T_B^{mem} = n_{wave} \cdot T_{load}\Big(1 - \frac{1}{\sqrt{g}}\Big) > 0 \quad (g > 1)
\Delta_{A0 \to A1}^{mem} = T_{load} - T_{load}\frac{1 + 1/s^*}{2} = \frac{T_{load}}{2}\Big(1 - \frac{1}{s^*}\Big) \ge 0
$$
**访存 Bound 下策略 B 恒优于策略 A**。物理解释:尾轮 $r$ 核的聚合带宽只有 $r \cdot BW_{pc}$,搬移不加速;整轮重切让所有轮次满核满带宽,虽然总搬移量增 $\sqrt{g}$ 倍(周长缩放),但轮次不变、每轮时延缩 $\sqrt{g}$ 倍,净收益为正。
**dValue 硬约束**(访存 Bound 不可放宽B 非转置时 $sN' \cdot dtype \ge 256\text{B}$,方形缩放下
A1 恒不劣于 A0但访存 Bound 下 $s^*$ 受 dValue **硬约束**§5.3,小块搬移效率不能降):
$$
g \le \Big(\frac{sN \cdot dtype}{256\text{B}}\Big)^2
s^* = \min\Big(\Big\lfloor \frac{C}{r} \Big\rfloor,\; \frac{sN \cdot dtype}{256\text{B}},\; \frac{k_{L1} \cdot sN \cdot dtype}{min\_TileSize},\; \frac{sN}{16}\Big)
$$
$sN=256$、BF16 时 $g \le 4$——$n_{wave}=2$ 时 $g < 2$ 自动满足$sN$ 更小 128 $g \le 1$策略 B 不可行同时校验搬移量 $k_{L1} \cdot sN' \cdot dtype \ge min\_TileSize$ 16 对齐
BF16、sN=256 时 dValue 项给出 $s^* \le 2$——即使 $r$ 很小($\lfloor C/r \rfloor$ 大),尾轮最多切 2 份,收益上限 $T_{load}/4$。分界:
**数值实例(访存 Bound**B=1、M=N=2304、K=256、BF16、C=32。首轮 $mCnt=nCnt=9$$sM=sN=256$$N_{blk}=81$$n_{wave}=3$$r=17$。单块 $T_{load}=(256+256) \times 256 \times 2/50\text{G} = 5.24\mu s$$k_{L1}=256=K$$T_{MMAD}=2.21\mu s$访存 Bound ✓)。
$$
\text{A0 vs A1访存 Bound} \begin{cases} s^* \ge 2 \Rightarrow \text{A1 优,收益 } \frac{T_{load}}{2}(1 - 1/s^*) \\ s^* = 1 \Rightarrow \text{A1 = A0} \end{cases}
$$
- 策略 A$s^*=1$ 无法重切$T_A = 3 \times 5.24 = 15.7\mu s$
- 策略 B$N_{blk}' = 96$近方形分解 $(mCnt', nCnt') = (8, 12)$$sM'=288, sN'=192$$g=96/81=1.19$。校验dValue $= 192 \times 2 = 384$B 256B ✓;搬移量 $256 \times 192 \times 2 = 128$KB 16KB ✓。$T_{load}' = (288+192) \times 256 \times 2/50\text{G} = 4.92\mu s$$T_B = 3 \times 4.92 = 14.7\mu s$。
**2A0 vs B**
**收益 6.2%**非方形分解使实际收益略低于 $1-1/\sqrt{g}=8.2\%$ 的理论值)。
$$
\Delta_{A0 \to B}^{mem} = n_{wave} T_{load}\Big(1 - \frac{1}{\sqrt{g}}\Big) > 0 \quad (g > 1)
$$
**B 恒优于 A0**dValue 可行时)。物理解释:尾轮 $r$ 核聚合带宽仅 $r \cdot BW_{pc}$搬移不加速B 让所有轮次满核满带宽,总搬移量虽增 $\sqrt{g}$ 倍(周长缩放),但轮次不变、每轮时延缩 $\sqrt{g}$ 倍净收益为正。dValue 硬约束(不可放宽):
$$
g \le \Big(\frac{sN \cdot dtype}{256\text{B}}\Big)^2 \quad \text{(方形缩放)}
$$
sN=256、BF16 时 $g \le 4$sN=128 时 $g \le 1$B 不可行。
**3A1 vs B**
$$
\Delta_{A1 \to B}^{mem} = T_{A1} - T_B = T_{load}\Big(n_{wave}\Big(1 - \frac{1}{\sqrt{g}}\Big) - \frac{1}{2}\Big(1 - \frac{1}{s^*}\Big)\Big)
$$
(访存 Bound 下 A1 与 B 都受 dValue 约束但作用点不同A1 的 $s^*$ 受限于尾轮小块的 dValueB 的 $g$ 受限于全局小块的 dValue。分界
$$
\text{A1 vs B访存 Bound} \begin{cases} n_{wave}\big(1 - 1/\sqrt{g}\big) > \frac{1}{2}(1 - 1/s^*) \Rightarrow \text{B 优} \\ n_{wave}\big(1 - 1/\sqrt{g}\big) < \frac{1}{2}(1 - 1/s^*) \Rightarrow \text{A1 } \\ \text{相等} \Rightarrow \text{临界打平 A1搬移增量小} \end{cases}
$$
趋势$g$ $r/N_{blk}$ 占比大、$n_{wave}$ )→ B $g$ 接近 1$n_{wave}$ 尾轮占比小)→ A1 注意实际收益还受**非方形惩罚**$N_{blk}'$ 的整数分解 $(mCnt', nCnt')$ 偏离方形时$T_{load}'$ 高于 $T_{load}/\sqrt{g}$ 理论值B 的实际收益打折下面的例 4)。
**访存 Bound 数值实例**
*例 3$n_{wave}=2$、$g$ 大B 优)*B=1、M=N=1536、K=256、BF16、C=32。$mCnt=nCnt=6$$sM=sN=256$$N_{blk}=36$、$n_{wave}=2$、$r=4$。$T_{load} = 512 \times 256 \times 2/50\text{G} = 5.24\mu s$$k_{L1}=256=K$$T_{MMAD}=2.21\mu s$访存 Bound ✓)。
- A0$2 \times 5.24 = 10.5\mu s$
- A1$s^* = \min(8,\; 2,\; 16) = 2$dValue 卡死尾轮小块 $[256, 128]$ 搬移 $3.93\mu s$$T_{A1} = 5.24 + 3.93 = 9.2\mu s$
- B$N_{blk}' = 64 = 8 \times 8$$sM'=sN'=192$dValue $= 384$B ✓,$T_{load}' = 384 \times 256 \times 2/50\text{G} = 3.93\mu s$$T_B = 2 \times 3.93 = 7.9\mu s$。
**B 相对 A1 省 14.3%**分界公式核验$n_{wave}(1-1/\sqrt{g}) = 2 \times (1-0.75) = 0.50 > (1-1/s^*)/2 = 0.25$ → B 优,$\Delta = 5.24 \times (0.50-0.25) = 1.31\mu s$ ✓ 精确吻合。
*例 4$n_{wave}=4$、临界打平)*M=N=2560、K=256、BF16。$mCnt=nCnt=10$、$N_{blk}=100$、$n_{wave}=4$、$r=4$、$g=128/100=1.28$。
- A0$4 \times 5.24 = 21.0\mu s$
- A1$s^*=2$$T_{A1} = 3 \times 5.24 + 3.93 = 19.7\mu s$
- B$N_{blk}' = 128$,最方形分解 $(8, 16)$$sM'=320, sN'=160$$T_{load}' = 480 \times 256 \times 2/50\text{G} = 4.92\mu s$$T_B = 4 \times 4.92 = 19.7\mu s$。
**A1 = B 打平**B 的理论缩放 $1/\sqrt{g} = 0.884$ 被非方形惩罚(周长 480 vs 方形等效 452吃掉实际缩放仅 0.938$n_{wave}(1 - 0.938) = 0.25 = (1-1/s^*)/2$ 恰好临界。此时选 A1搬移增量小、块数少
*例 5$r > C/2$A1 退化)*M=N=2304、K=256、BF16。$mCnt=nCnt=9$、$N_{blk}=81$、$n_{wave}=3$、$r=17$。
- A0$3 \times 5.24 = 15.7\mu s$
- A1$s^* = \min(1, 2) = 1$,退化为 A0
- B$N_{blk}' = 96$$(mCnt', nCnt') = (8, 12)$$sM'=288, sN'=192$dValue $=384$B ✓,$T_{load}' = 4.92\mu s$$T_B = 3 \times 4.92 = 14.7\mu s$。
**B 省 6.2%**(非方形分解使实际收益略低于 $1-1/\sqrt{g} = 8.2\%$ 的理论值)。
---
**Bound 判据与分档决策**
#### 三策略决策总表
计算/访存 Bound 的分界由单块时延等式 $T_{MMAD} = T_{MTE2}$ 解出
Bound 判据:$K^* = \dfrac{k_{L1} \cdot dtype \cdot Q_{16}}{2 \cdot BW_{pc}}\Big(\dfrac{1}{sM} + \dfrac{1}{sN}\Big)$$K \ge K^*$ 为计算 Bound否则访存 Bound。
$$
K^* = \frac{k_{L1} \cdot dtype \cdot Q_{16}}{2 \cdot BW_{pc}}\Big(\frac{1}{sM} + \frac{1}{sN}\Big)
$$
| 场景 | A0 vs A1 | A0 vs B | A1 vs B | 最优策略 |
|---|---|---|---|---|
| 计算 Bound$r \le C/2$ 且 $r \mid C$ | A1 优 | B 优 | **A1 = B**(选 A1搬移少 | A1 |
| 计算 Bound$r \le C/2$ 且 $r \nmid C$ | A1 优 | B 优 | B 略优(取整损失) | A1/B 皆可B 略优 |
| 计算 Bound$r > C/2$ | A1 退化 | B 优 | **B 显著优** | B收益 $T_{MMAD}(1-r/C)$ |
| 访存 Bound$s^* = 1$$r > C/2$ 或 dValue 卡死) | A1 退化 | B 优 | B 优 | B若 $g$ 满足 dValue |
| 访存 Bound$n_{wave}(1-1/\sqrt{g}) > (1-1/s^*)/2$ | A1 优 | B 优 | **B 优** | B |
| 访存 Bound$n_{wave}(1-1/\sqrt{g}) \le (1-1/s^*)/2$ | A1 优 | B 优 | **A1 优/打平** | A1 |
| 访存 BounddValue 不满足($g > (sN \cdot dtype/256\text{B})^2$ | — | B 不可行 | — | A1 或 A0 |
| 写出 Bound$K$ 小使 $T_{FIX}$ 主导) | 同计算 Bound缩放律同为面积 | 同计算 Bound | 同计算 Bound | 按计算 Bound 判定 |
$K \ge K^*$ 为计算 Bound否则访存 BoundsM=sN=256、$k_{L1}=256$、BF16 $K^* \approx 608$$k_{L1}=128$ $K^* \approx 304$)。
**整体结论**
**决策表**$r = N_{blk} \bmod C$$g = n_{wave} C/N_{blk}$
1. **A0 从来不是最优**——任何有尾轮($r > 0$的场景A1 或 B 至少不劣于 A0A0 只是可行性兜底;
2. **计算 Bound**$r > C/2$ 是 A1/B 的硬分界A1 失效B 唯一可重切);$r \le C/2$ 且整除良好时 A1 与 B 等价,选 A1搬移增量小
3. **访存 Bound**A1 的收益被双重压缩dValue 限 $s^*$、A 行带不随 $s^*$ 缩小B 的收益随 $g$ 增大;分届公式 $n_{wave}(1-1/\sqrt{g})$ vs $(1-1/s^*)/2$ 给出精确判定,$n_{wave}$ 小、$g$ 大时 B 优,反之 A1 优;
4. B 的代价(相对 A1总搬移量增 $\sqrt{g}$ 倍(访存 Bound 下已被时延公式计入;计算 Bound 下须掩盖校验)、块数增多带来 MMAD 启动/排空与 L0C 切换开销(未建模,量级为 $(N_{blk}' - N_{blk}) \cdot t_0 / C$$t_0$ 为单块固定开销)。
| 条件 | 结论 | 收益 |
|---|---|---|
| $r = 0$ | 无尾轮两者皆不需要 | |
| 计算 Bound$r \le C/2$ $\lfloor C/r \rfloor \approx C/r$ | 策略 A(§5.3足够 | $\Delta \approx 0$B 徒增搬移 |
| 计算 Bound$r > C/2$,且 $\sqrt{g} \le T_{MMAD}/T_{MTE2}$,且 $N_{blk}'$ 可分解对齐 | **策略 B** | $T_{MMAD}(1-r/C)$$r \to C/2^+$ 时趋近 $T_{block}/2$ |
| 访存 Bound且 $g \le (sN \cdot dtype/256\text{B})^2$,搬移量/对齐满足 | **策略 B** | $n_{wave} T_{load}(1-1/\sqrt{g})$ |
| 访存 BounddValue 或搬移量不满足 | 策略 A不可重切 | — |
| $B \nmid N_{blk}'$ | 按 batch 分组切分,部分 batch 多一块;收益略降,判定不变 | — |
**边界说明(带宽模型敏感性)**:访存 Bound 结论依赖"每核 MTE2 带宽上限 $BW_{pc}$"假设。若 HBM 为全局共享池(尾轮 $r$ 核可吃满 $W_{GM}$),则 A0 尾轮搬移时延已是 $r/C \cdot T_{load}$ 接近理想B 的 $\sqrt{g}$ 倍搬移增量无带宽补偿A0 vs B 结论反转。昇腾 950PR 的 MTE2 为每核独立 DMA 引擎、带宽按核数配平,采用固定份额结论;临界 case 建议实测复核。
**边界说明(带宽模型敏感性)**:上述访存 Bound 结论依赖"每核 MTE2 带宽上限 $BW_{pc}$"假设。若硬件实际为 HBM 全局共享池(尾轮 $r$ 核可吃满 $W_{GM}$),则策略 A 尾轮搬移时延为 $r/C \cdot T_{load}$ 已接近理想,策略 B 的 $\sqrt{g}$ 倍搬移增量得不到带宽补偿,结论反转为策略 A 更优。昇腾 950PR 的 MTE2 为每核独立 DMA 引擎、带宽按核数配平($W_{GM}/C$),采用固定份额结论;临界 case 建议实测复核
**与流程图的衔接**:策略 B 嵌入 §7.2 理论流程图的阶段 4——尾轮判定处增加分支先算 $g$、按 Bound 类型查上表,命中策略 B 条件时回到阶段 2 的枚举算法(约束 1 改为等式 $B \cdot mCnt' \cdot nCnt' = N_{blk}'$),产出新的 SingleCoreM/N 后跳过尾轮差异化重切。
**与流程图的衔接**:三策略决策嵌入 §7.2 理论流程图阶段 4——先算 $r$、$g$、$s^*$,按 Bound 类型查决策总表;选 B 时回到阶段 2 的枚举算法(约束 1 改为等式 $B \cdot mCnt' \cdot nCnt' = N_{blk}'$)重出 SingleCoreM/N选 A1 时按 §5.3 计算 $s^*$ 与尾轮 tiling 变体
---