diff --git a/BMM/BMM算子优化分析_Release/ASW_Basic分支分析_v1.7.html b/BMM/BMM算子优化分析_Release/ASW_Basic分支分析_v1.7.html index 8b4d041..7047218 100644 --- a/BMM/BMM算子优化分析_Release/ASW_Basic分支分析_v1.7.html +++ b/BMM/BMM算子优化分析_Release/ASW_Basic分支分析_v1.7.html @@ -44,7 +44,7 @@ MathJax = {
目标芯片:昇腾 950PR(DAV_3510)。本文为 ASW_Basic 分支的独立分析(v1.7 新增 §5.10 尾轮处理的第二种策略——整轮均匀重切:与尾轮差异化重切的 Bound 分类对比与适用条件判定),自包含完整推导链。历史:v1.6 新增 §7 程序实现流程图;v1.5 扩充 §6 源码对比、修正 dValue 定义与尾轮重切约束。
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 解析模型与平台自适应值得理论吸收。**
单边无 batch 且该侧矩阵小($M \le 256$、$MK\cdot\text{dtype}\cdot 2 \le L1$、对侧每核循环 ≥4 轮)时小侧整个常驻 L1、只搬一次(L1 全载)。
tiling 时 usedCoreNum = ⌈P⌉(不强制 C),SingleCoreM/N 在 L0C 容量内取最大($\text{singleCoreM} \times \text{singleCoreN} \times 4\text{B} \le L0C$),每核按标准核内流水(L1→L0→Cube→L0C→Fixpipe)处理自己的输出块;核间无共享无依赖,无需 swizzle 与 L2 切分。降核后 GM 并发搬移核数若 < minCoreNum,带宽利用率上限被压低——这正是降核区 case 时延的瓶颈所在,也是"时延绝对值小、不再继续优化"的定量注脚。
§5.3 的尾轮重切是差异化策略:主轮块保持最少切分原则下的大 tile,只把尾轮 $r$ 个块再切 $s^*$ 份。本节分析另一种均匀化策略——不做尾轮与主轮的差异化,而是先把总块数向上取整到 C 的整数倍,再按新块数全局重切 SingleCoreM/N,使每轮每核恰好一个同样大小的块。两种策略孰优,取决于算子是计算 Bound 还是访存 Bound。
-问题:给定 B、M、N、K、dtype,首轮按 §5.2 最优切分出 $N_{blk} = B \cdot mCnt \cdot nCnt$ 个块后,若 $r = N_{blk} \bmod C \neq 0$,尾轮只有 $r$ 核工作。策略 A(§5.3)在尾轮内部差异化重切;策略 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?
-建模:块几何对三类时延的缩放律
-记块数放大倍数 $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、M、K、N、dtype,按 §5.1/§5.2 确定 BaseM/BaseN/SingleCoreM/SingleCoreN 后,总块数 $N_{blk} = B \cdot mCnt \cdot nCnt$ 一般不是 C 的整数倍,尾轮只有 $r = N_{blk} \bmod C$ 个核工作。对尾轮有三种处理策略:
+| 策略 | 做法 | 块大小 |
|---|---|---|
| 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 使每轮每核恰好一个同样大小的块 | 全部块同大小 |
本节在计算 Bound / 访存 Bound 两类场景下,分别对 A0 vs A1、A0 vs B、A1 vs B 三组对比做完整推导,给出适用条件分界。
+统一建模
+符号:$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 的块数放大倍数。
+*块几何对三类时延的缩放律*(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$(总量与切分无关) |
搬移时延随周长缩放是关键:重切使计算缩 $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}$,结论相反,见本节末的边界说明。)
-两策略总时延(通用式):
+搬移随周长缩放是关键:切分越多,计算缩 $g$ 倍而搬移只缩 $\sqrt{g}$ 倍——"切分越多重复读越多"(§5.2)在每块粒度上的体现。
+*带宽模型声明*:昇腾 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_{block} = \max(T_{MMAD}, T_{MTE2}, T_{FIX})$(单块主导项),$s^*$ 为 §5.3 的尾轮重切因子。
+其中 $T_{tail}(s^*)$ 为 A1 尾轮小块主导项时延,$T_{block}'$ 为 B 重切后小块主导项时延。
**情形一:计算 Bound($T_{MMAD} > T_{MTE2}$,即 $K \ge K^*$)**
-代入缩放律 $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$:
与策略 A 比较:
+(1)A0 vs A1
由于 $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**。收益分档:
-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**。即:
适用前提(两条校验):
+(2)A0 vs B
+$r < C$(有尾轮)时 **$\Delta > 0$ 恒成立——计算 Bound 下 B 恒优于 A0**(只要可行)。收益随 $r$ 减小而增大:尾轮越空,A0 浪费越多。可行性校验两条:
计算 Bound 余量($T_{MMAD}/T_{MTE2}$)越大,可承受的块数放大越多。$n_{wave}=2$ 时 $g < 2$,$\sqrt{g} < 1.42$,校验通常自动通过;
**数值实例(计算 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 ✓)。
+(3)A1 vs B
+由 $s^* \le \lfloor C/r \rfloor \le C/r$ 知 $\Delta \ge 0$ 恒成立,B 恒不劣于 A1。分界:
+注意 $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 ✓)。
收益 23.4%——这就是 $r > C/2$ 场景下整轮重切的价值:策略 A 的差异化重切在 $r > C/2$ 时完全失效,整轮重切把尾轮的 $C-r=15$ 个空转核次利用起来。
+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$ 完美:
+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^*$)**
-代入缩放律 $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^*$ 缩小**——这是差异化重切的结构性弱点),方形下:
策略 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}$(近方形缩放)。
+(1)A0 vs A1
访存 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,小块搬移效率不能降):
$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 对齐。
-数值实例(访存 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 ✓)。
+BF16、sN=256 时 dValue 项给出 $s^* \le 2$——即使 $r$ 很小($\lfloor C/r \rfloor$ 大),尾轮最多切 2 份,收益上限 $T_{load}/4$。分界:
+(2)A0 vs B
+B 恒优于 A0(dValue 可行时)。物理解释:尾轮 $r$ 核聚合带宽仅 $r \cdot BW_{pc}$,搬移不加速;B 让所有轮次满核满带宽,总搬移量虽增 $\sqrt{g}$ 倍(周长缩放),但轮次不变、每轮时延缩 $\sqrt{g}$ 倍,净收益为正。dValue 硬约束(不可放宽):
+sN=256、BF16 时 $g \le 4$;sN=128 时 $g \le 1$,B 不可行。
+(3)A1 vs B
+(访存 Bound 下 A1 与 B 都受 dValue 约束,但作用点不同:A1 的 $s^*$ 受限于尾轮小块的 dValue,B 的 $g$ 受限于全局小块的 dValue。)分界:
+趋势:$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 ✓)。
收益 6.2%(非方形分解使实际收益略低于 $1-1/\sqrt{g}=8.2\%$ 的理论值)。
+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$。
+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$。
+B 省 6.2%(非方形分解使实际收益略低于 $1-1/\sqrt{g} = 8.2\%$ 的理论值)。
Bound 判据与分档决策
-计算/访存 Bound 的分界由单块时延等式 $T_{MMAD} = T_{MTE2}$ 解出:
-$K \ge K^*$ 为计算 Bound,否则访存 Bound(例:sM=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}$):
-| 条件 | 结论 | 收益 |
|---|---|---|
| $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})$ |
| 访存 Bound,dValue 或搬移量不满足 | 策略 A(不可重切) | — |
| $B \nmid N_{blk}'$ | 按 batch 分组切分,部分 batch 多一块;收益略降,判定不变 | — |
边界说明(带宽模型敏感性):上述访存 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 后跳过尾轮差异化重切。
+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。
+| 场景 | 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 |
| 访存 Bound,dValue 不满足($g > (sN \cdot dtype/256\text{B})^2$) | — | B 不可行 | — | A1 或 A0 |
| 写出 Bound($K$ 小使 $T_{FIX}$ 主导) | 同计算 Bound(缩放律同为面积) | 同计算 Bound | 同计算 Bound | 按计算 Bound 判定 |
整体结论:
+边界说明(带宽模型敏感性):访存 Bound 结论依赖"每核 MTE2 带宽上限 $BW_{pc}$"假设。若 HBM 为全局共享池(尾轮 $r$ 核可吃满 $W_{GM}$),则 A0 尾轮搬移时延已是 $r/C \cdot T_{load}$ 接近理想,B 的 $\sqrt{g}$ 倍搬移增量无带宽补偿,A0 vs B 结论反转。昇腾 950PR 的 MTE2 为每核独立 DMA 引擎、带宽按核数配平,采用固定份额结论;临界 case 建议实测复核。
+与流程图的衔接:三策略决策嵌入 §7.2 理论流程图阶段 4——先算 $r$、$g$、$s^*$,按 Bound 类型查决策总表;选 B 时回到阶段 2 的枚举算法(约束 1 改为等式 $B \cdot mCnt' \cdot nCnt' = N_{blk}'$)重出 SingleCoreM/N,选 A1 时按 §5.3 计算 $s^*$ 与尾轮 tiling 变体。