v1.7 修订同步HTML

This commit is contained in:
2026-08-29 08:28:58 +00:00
parent ea3f74ea73
commit 813c3ff49a

View File

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