v1.3 修订:B 符号规范化——方案 B 与 Batch 明确区分(B 矩阵保留)
This commit is contained in:
@@ -41,31 +41,31 @@ MathJax = {
|
||||
<body>
|
||||
<div class="page">
|
||||
<h1>BMM 尾轮处理策略对比分析:不重切 / 尾轮重切 / 整轮均匀重切</h1>
|
||||
<blockquote>目标芯片:昇腾 950PR(DAV_3510)。本文自包含——不依赖其他分析文档,全部推导在文内完成;仅引用外部公开资料(昇腾白皮书、CANN 文档、开源算子源码仓)。<br>版本:v1.3,2026-08-31(修正 $T_{MTE2}$ 模型:分子 kL1→K(稳态流水约掉证明);三维主导项判定取代单一 K* 判据;面积型/周长型缩放分类;§2.5 方形结论严格证明;§4.3 符号交代;§7.2 按修正模型全面刷新——主流场景 B1 零损失)<br>历史:v1.1 新增 §七 B1 无脑版门限与损失分析;v1.0 首版(三策略两两对比与 B/M/K/N 判定流程)<br>历史:v1.0 首版(三策略两两对比与 B/M/K/N 判定流程)</blockquote>
|
||||
<blockquote>目标芯片:昇腾 950PR(DAV_3510)。本文自包含——不依赖其他分析文档,全部推导在文内完成;仅引用外部公开资料(昇腾白皮书、CANN 文档、开源算子源码仓)。<br>版本:v1.3,2026-08-31(修正 $T_{MTE2}$ 模型:分子 kL1→K(稳态流水约掉证明);三维主导项判定取代单一 K* 判据;面积型/周长型缩放分类;§2.5 方形结论严格证明;§4.3 符号交代;§7.2 按修正模型全面刷新——主流场景 B1 零损失)<br>历史:v1.1 新增 §七 B1 无脑版门限与损失分析;v1.0 首版(三策略两两对比与 Batch/M/K/N 判定流程)<br>历史:v1.0 首版(三策略两两对比与 Batch/M/K/N 判定流程)</blockquote>
|
||||
<hr>
|
||||
<h2>摘要</h2>
|
||||
<p>BMM(BatchMatMul)算子在核间切分 M/N 后,总输出块数 $N_{blk} = B \cdot mCnt \cdot nCnt$ 一般不是核数 C 的整数倍,尾轮只有 $r = N_{blk} \bmod C$ 个核工作、其余核空转。本文对四种尾轮处理策略做严格的两两对比:<b>A0(不重切)、A1a(尾轮整数倍切分)、A1b(尾轮 tile 重选凑满核)、B(整轮均匀重切)</b>,在计算 Bound 与访存 Bound 两类场景下给出完整的时延公式与适用条件分界。</p>
|
||||
<p>BMM(BatchMatMul)算子在核间切分 M/N 后,总输出块数 $N_{blk} = \text{Batch} \cdot mCnt \cdot nCnt$ 一般不是核数 C 的整数倍,尾轮只有 $r = N_{blk} \bmod C$ 个核工作、其余核空转。本文对四种尾轮处理策略做严格的两两对比:<b>A0(不重切)、A1a(尾轮整数倍切分)、A1b(尾轮 tile 重选凑满核)、B(整轮均匀重切)</b>,在计算 Bound 与访存 Bound 两类场景下给出完整的时延公式与适用条件分界。</p>
|
||||
<p>核心结论:</p>
|
||||
<ol class="tight">
|
||||
<li><b>A0 从来不是最优</b>($r > 0$ 时 A1 或 B 严格优);</li>
|
||||
<li><b>A0 从来不是最优</b>($r > 0$ 时 A1 或方案 B 严格优);</li>
|
||||
<li><b>A1a 是 A1b 的真子集</b>(枚举空间包含关系),A1b 恒不劣于 A1a;</li>
|
||||
<li><b>计算 Bound</b>:A1b 与 B 理论时延严格相等(总计算量/C 守恒),A1b 搬移周长和恒 ≤ B(均值不等式)——时延打平、按工程权衡选择;</li>
|
||||
<li><b>访存 Bound</b>:$\rho \ge \rho_{dv}$(尾轮占比 ≥ dValue 平方阈值)时 A1b 严格优;$\rho < \rho_{dv}$ 时 A1b 被 dValue 卡死,B 严格优当且仅当 $\sqrt{\rho_{dv}} > n_{wave}/\sqrt{g} - (n_{wave}-1)$——<b>B 反超的唯一通道是 dValue</b>:A1b 的尾轮 tile 缩放 $\sqrt{\rho}$ 恒狠于 B 的 $1/\sqrt{g}$($\rho < 1/g$ 恒成立),卡死更深时 B 胜出,该区间窄且临界实测打平;</li>
|
||||
<li>给出<b>基于 B/M/K/N/dtype 的闭式判定流程</b>:五步前置计算 + 决策表,无需逐项仿真;</li>
|
||||
<li><b>v1.1 新增 §七</b>:B 的简化形态 <b>B1</b>(无脑版:满足门限就直接整数轮满核切,门限闭式 $r>0 \land (K \ge K^* \lor g \le (sN \cdot dtype/256\text{B})^2)$)与 <b>B0/B1 相对 A1b 的损失分析</b>;</li>
|
||||
<li><b>计算 Bound</b>:A1b 与方案 B 理论时延严格相等(总计算量/C 守恒),A1b 搬移周长和恒 ≤ 方案 B(均值不等式)——时延打平、按工程权衡选择;</li>
|
||||
<li><b>访存 Bound</b>:$\rho \ge \rho_{dv}$(尾轮占比 ≥ dValue 平方阈值)时 A1b 严格优;$\rho < \rho_{dv}$ 时 A1b 被 dValue 卡死,方案 B 严格优当且仅当 $\sqrt{\rho_{dv}} > n_{wave}/\sqrt{g} - (n_{wave}-1)$——<b>方案 B 反超的唯一通道是 dValue</b>:A1b 的尾轮 tile 缩放 $\sqrt{\rho}$ 恒狠于方案 B 的 $1/\sqrt{g}$($\rho < 1/g$ 恒成立),卡死更深时方案 B 胜出,该区间窄且临界实测打平;</li>
|
||||
<li>给出<b>基于 Batch/M/K/N/dtype 的闭式判定流程</b>:五步前置计算 + 决策表,无需逐项仿真;</li>
|
||||
<li><b>v1.1 新增 §七</b>:方案 B 的简化形态 <b>B1</b>(无脑版:满足门限就直接整数轮满核切,门限闭式 $r>0 \land (K \ge K^* \lor g \le (sN \cdot dtype/256\text{B})^2)$)与 <b>B0/B1 相对 A1b 的损失分析</b>;</li>
|
||||
<li><b>v1.2 重写 §7.2</b>:损失公式逐步推导链与主流场景分析;</li>
|
||||
<li><b>v1.3 修正时延模型</b>:$T_{MTE2}$ 分子 $k_{L1} \to K$(稳态流水下 $k_{L1}$ 约掉的完整证明——单块搬入总量 $K(sM+sN)dtype$ 与分次粒度无关);<b>三维主导项判定</b>取代单一 $K^*$ 判据(MMAD vs MTE2 由 tile 决定、K 约掉;MMAD vs FIX 由 K 决定,临界 304);按<b>主导项缩放类型</b>重新分类(面积型:MMAD/FIX ∝ 面积;周长型:MTE2 ∝ 周长)——<b>主流 prefill/decode case 恒为面积型 → B1 与 A1b 时延严格相等(零损失)</b>;decode 小 M 场景 B 因分解自由度不足常不可行 → A1b 是唯一可行重切方案;§2.5 方形结论严格证明(均值不等式,更正"L1 主导形状自由"的伪结论——那是 $k_{L1}$ 误置时延分子的建模残余);v1.2 的"~30% 极端例损失"是 $k_{L1}$ 错误模型产物,修正后该例打平(<1%)。</li>
|
||||
<li><b>v1.3 修正时延模型</b>:$T_{MTE2}$ 分子 $k_{L1} \to K$(稳态流水下 $k_{L1}$ 约掉的完整证明——单块搬入总量 $K(sM+sN)dtype$ 与分次粒度无关);<b>三维主导项判定</b>取代单一 $K^*$ 判据(MMAD vs MTE2 由 tile 决定、K 约掉;MMAD vs FIX 由 K 决定,临界 304);按<b>主导项缩放类型</b>重新分类(面积型:MMAD/FIX ∝ 面积;周长型:MTE2 ∝ 周长)——<b>主流 prefill/decode case 恒为面积型 → B1 与 A1b 时延严格相等(零损失)</b>;decode 小 M 场景方案 B 因分解自由度不足常不可行 → A1b 是唯一可行重切方案;§2.5 方形结论严格证明(均值不等式,更正"L1 主导形状自由"的伪结论——那是 $k_{L1}$ 误置时延分子的建模残余);v1.2 的"~30% 极端例损失"是 $k_{L1}$ 错误模型产物,修正后该例打平(<1%)。</li>
|
||||
</ol>
|
||||
<hr>
|
||||
<h2>一、问题背景与执行模型</h2>
|
||||
<h3>1.1 BMM 的核间切分与数据流</h3>
|
||||
<p>BatchMatMulV3 在昇腾 NPU 上的兜底分支(ASW_Basic)按输出块并行。<b>适用范围说明</b>: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} = B \cdot mCnt \cdot nCnt$ 个独立输出块,按序分配到 $C$ 个 AIC 核。每个核内执行标准 Cube 数据流:</p>
|
||||
<p>BatchMatMulV3 在昇腾 NPU 上的兜底分支(ASW_Basic)按输出块并行。<b>适用范围说明</b>: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 数据流:</p>
|
||||
<pre><code>GM ──MTE2──> L1 ──MTE1──> L0A/L0B ──MMAD──> L0C ──Fixpipe──> GM
|
||||
↑_____________ L2 Cache(读 5.2TB/s)_____________↑</code></pre>
|
||||
<p>核间不切 K(singleCoreK = K),每个输出块独立累加完成后经 Fixpipe 写出 GM。块与块之间无依赖——这是尾轮可以独立重切的前提。</p>
|
||||
<h3>1.2 尾轮问题</h3>
|
||||
<p>块按序分配:核 $i$ 处理块 $i, i+C, i+2C, \ldots$。总块数 $N_{blk}$ 不能被 $C$ 整除时,最后一轮(尾轮)只有 $r = N_{blk} \bmod C$ 个核有块可算,$C - r$ 个核空转一个整块时间。</p>
|
||||
<p><b>问题</b>:给定 B、M、K、N、dtype 与首轮切分(singleCoreM/N),如何处理尾轮使端到端时延最小?</p>
|
||||
<p><b>问题</b>:给定 Batch、M、K、N、dtype 与首轮切分(singleCoreM/N),如何处理尾轮使端到端时延最小?</p>
|
||||
<h3>1.3 硬件规格与符号定义</h3>
|
||||
<p>昇腾 950PR 关键规格([昇腾 950 NPU 架构白皮书](https://public-download.obs.cn-east-2.myhuaweicloud.com/ascend/%E6%98%87%E8%85%BE950%20NPU%E6%9E%B6%E6%9E%84%E7%99%BD%E7%9A%AE%E4%B9%A6.pdf)):</p>
|
||||
<table><tr><th>符号</th><th>含义</th><th>取值</th></tr>
|
||||
@@ -77,7 +77,7 @@ MathJax = {
|
||||
<tr><td>$L0C$</td><td>L0C 容量/核</td><td>256 KB</td></tr>
|
||||
<tr><td>$dtype$ / $outB$</td><td>输入/输出元素字节数</td><td>BF16 → 2B</td></tr></table>
|
||||
<p>*Tiling 符号*:$sM, sN$ = 单核输出 tile 的 M/N 维度(singleCoreM/N 的简写);$k_{L1}$ = GM→L1 的 K 向粒度;$mCnt = \lceil M/sM \rceil$、$nCnt = \lceil N/sN \rceil$。</p>
|
||||
<p>*尾轮符号*:$N_{blk} = B \cdot mCnt \cdot nCnt$(总块数);$n_{wave} = \lceil N_{blk}/C \rceil$(总轮次);$r = N_{blk} \bmod C$(尾轮块数);$\rho = r/C$(尾轮占比)。</p>
|
||||
<p>*尾轮符号*:$N_{blk} = \text{Batch} \cdot mCnt \cdot nCnt$(总块数);$n_{wave} = \lceil N_{blk}/C \rceil$(总轮次);$r = N_{blk} \bmod C$(尾轮块数);$\rho = r/C$(尾轮占比)。</p>
|
||||
<hr>
|
||||
<h2>二、基础模型</h2>
|
||||
<h3>2.1 单块时延三项</h3>
|
||||
@@ -126,8 +126,8 @@ $$</div>
|
||||
<p>昇腾 950PR 每核 MTE2 为独立 DMA 引擎、带宽按核数配平,建模为<b>每核带宽上限 = 聚合带宽/核数</b>。该假设对 GM 与 L2 两层同构:GM 层每核 $BW_{pc} = W_{GM}/C = 50$ GB/s;L2 层每核 $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 全局共享池模型的敏感性见 §八边界说明。</p>
|
||||
<h3>2.5 首轮切分基准(近方形的严格推导与证明)</h3>
|
||||
<p>首轮切分 $(mCnt, nCnt, sM, sN)$ 的确定是尾轮分析的前提。本节给出完整推导链:<b>问题 → 建模 → 证明 → 离散修正 → 结论</b>。</p>
|
||||
<p><b>问题</b>:$B < C$ 时须切分 M/N 填满 C 核。选什么样的 $(sM, sN)$ 使端到端时延最小?</p>
|
||||
<p><b>建模</b>:由 §2.1,主导项中唯一随切分变化的是搬入(MMAD/FIX 只依赖全量 B/M/N/K)。单核搬入总量 = 每核块数 × 单块搬入量:</p>
|
||||
<p><b>问题</b>:$\text{Batch} < C$ 时须切分 M/N 填满 C 核。选什么样的 $(sM, sN)$ 使端到端时延最小?</p>
|
||||
<p><b>建模</b>:由 §2.1,主导项中唯一随切分变化的是搬入(MMAD/FIX 只依赖全量 Batch/M/N/K)。单核搬入总量 = 每核块数 × 单块搬入量:</p>
|
||||
<div class="math">$$
|
||||
T_{MTE2}^{core} = \frac{B \cdot mCnt \cdot nCnt}{C} \cdot K(sM+sN) \cdot dtype
|
||||
$$</div>
|
||||
@@ -135,7 +135,7 @@ $$</div>
|
||||
<div class="math">$$
|
||||
T_{MTE2}^{core} = \frac{B \cdot M \cdot N \cdot K \cdot dtype}{C} \cdot \Big(\frac{1}{sM} + \frac{1}{sN}\Big)
|
||||
$$</div>
|
||||
<p><b>目标函数</b>:$\min\; (1/sM + 1/sN)$($B, M, N, K, dtype, C$ 均为常数)。约束:①并行度 $mCnt \cdot nCnt \ge \lceil C/B \rceil \triangleq P$;②L1 容量 $2(sM+sN) k_{L1} \cdot dtype \le L1$;③搬移效率(dValue、min_TileSize,§2.3);④$sM, sN$ 为 16 倍数且为 BaseM/N 整数倍。</p>
|
||||
<p><b>目标函数</b>:$\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 整数倍。</p>
|
||||
<p><b>证明(两步)</b>:</p>
|
||||
<p>*第一步:块数最少原则*。目标函数展开为 $\dfrac{B \cdot K \cdot dtype}{C} \cdot \big(mCnt \cdot N + nCnt \cdot M\big)$——块数越多($mCnt, nCnt$ 越大)搬入越多(重复读),故取<b>最少块数</b> $mCnt \cdot nCnt = P$(并行度下界取等)。此时单块面积固定:</p>
|
||||
<div class="math">$$
|
||||
@@ -154,13 +154,13 @@ $$</div>
|
||||
<ol class="tight">
|
||||
<li><b>整数与对齐</b>:$sM = sN = \sqrt{A_0}$ 一般非 16 倍数,且 $mCnt = M/sM$ 须整数——在连续方形附近枚举满足约束 ④ 的整除组合,取目标函数最小者(枚举才是最终裁决者,方形是其连续极限的解析刻画);</li>
|
||||
<li><b>dValue 非对称</b>:B 非转置时 $sN \cdot dtype \ge 256$B 卡 $sN$ 下限(A 的 dValue 由 $k_{L1}$ 保证、不卡 $sM$)——极端长宽比时方形可能违反,取满足 dValue 的最近组合;</li>
|
||||
<li>**$B \ge C$(P=1)退化**:不切分,$sM = M, sN = N$——tile 跟随 M/N(此时"方形"无意义,零重复读优先)。</li>
|
||||
<li>**$\text{Batch} \ge C$(P=1)退化**:不切分,$sM = M, sN = N$——tile 跟随 M/N(此时"方形"无意义,零重复读优先)。</li>
|
||||
</ol>
|
||||
<p><b>对前一版本表述的更正</b>: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$——<b>形状敏感性在两个 regime 下统一存在,方形恒为连续最优</b>;$k_{L1}$ 只通过 dValue/min_TileSize 约束(§2.3)影响可行性,不影响目标函数的排序。</p>
|
||||
<p><b>小结</b>:</p>
|
||||
<ol class="tight">
|
||||
<li>首轮切分目标:$\min (1/sM + 1/sN)$(搬入时延最小化,唯一随切分变化的主导项);</li>
|
||||
<li>最少块数原则:$mCnt \cdot nCnt = P = \lceil C/B \rceil$($B \ge C$ 时不切分);</li>
|
||||
<li>最少块数原则:$mCnt \cdot nCnt = P = \lceil C/\text{Batch} \rceil$($\text{Batch} \ge C$ 时不切分);</li>
|
||||
<li><b>方形严格最优</b>(均值不等式,面积固定时周长最小)——离散修正仅来自 16 对齐/整数分解/dValue 非对称,由枚举裁决;</li>
|
||||
<li>方形结论不依赖任何 regime 假设——$K$ 作为公共因子不进排序。</li>
|
||||
</ol>
|
||||
@@ -171,14 +171,14 @@ $$</div>
|
||||
<tr><td><b>A0:不重切</b></td><td>尾轮 $r$ 核各处理 1 个整块,$C-r$ 核空转</td><td>主轮尾轮同大小</td></tr>
|
||||
<tr><td><b>A1a:尾轮整数倍切分</b></td><td>尾轮每块沿 N(或 M)切 $s^*$ 份,$r \cdot s^*$ 个小块分给 C 核</td><td>主轮整块 + 尾轮 $1/s^*$ 小块</td></tr>
|
||||
<tr><td><b>A1b:尾轮 tile 重选凑满核</b></td><td>尾轮 $r$ 个原块覆盖的区域(面积 $r \cdot sM \cdot sN$)用更小 tile $(sM_t, sN_t)$ 重新切分,凑满 C 核</td><td>主轮整块 + 尾轮小 tile</td></tr>
|
||||
<tr><td><b>B:整轮均匀重切</b></td><td>总块数向上取整到 $N_{blk}' = n_{wave} \cdot C$,全局重新枚举 tile 使每轮每核恰好一个同样大小的块</td><td>全部块同大小</td></tr></table>
|
||||
<tr><td><b>方案 B:整轮均匀重切</b></td><td>总块数向上取整到 $N_{blk}' = n_{wave} \cdot C$,全局重新枚举 tile 使每轮每核恰好一个同样大小的块</td><td>全部块同大小</td></tr></table>
|
||||
<p><b>实现方式对比</b>:</p>
|
||||
<table><tr><th>策略</th><th>host 侧 tiling</th><th>kernel 侧执行</th><th>tile 参数套数</th></tr>
|
||||
<tr><td>A0</td><td>一套参数</td><td>线性映射 <code>index = blockIdx + round × usedCoreNum</code>,尾轮不满载核跳过</td><td>1</td></tr>
|
||||
<tr><td>A1a</td><td>主参数 + 尾轮切分参数($s^*$)</td><td>最后一轮切换小块尺寸</td><td>2</td></tr>
|
||||
<tr><td>A1b</td><td>主参数 + 尾轮 tile($sM_t, sN_t$)</td><td>尾轮区域独立子网格映射</td><td>2</td></tr>
|
||||
<tr><td>B</td><td>一套重切后参数</td><td>全程统一 tile,无尾轮分支</td><td>1</td></tr></table>
|
||||
<p><b>对齐约束的平等性</b>:16 对齐是 Cube 计算粒度(16×16×16 基本块)的硬件要求,<b>四种策略的 tile——无论重切前后——都必须是 16 的倍数</b>,无一例外。差异只在枚举空间(A1b 对尾轮子区域、B 对全局)与 tile 套数。</p>
|
||||
<tr><td>方案 B</td><td>一套重切后参数</td><td>全程统一 tile,无尾轮分支</td><td>1</td></tr></table>
|
||||
<p><b>对齐约束的平等性</b>:16 对齐是 Cube 计算粒度(16×16×16 基本块)的硬件要求,<b>四种策略的 tile——无论重切前后——都必须是 16 的倍数</b>,无一例外。差异只在枚举空间(A1b 对尾轮子区域、方案 B 对全局)与 tile 套数。</p>
|
||||
<h3>3.2 A1b 的 tile 确定与 A1a ⊆ A1b 证明</h3>
|
||||
<p>A1b 的理想 tile(方形同步缩小):</p>
|
||||
<div class="math">$$
|
||||
@@ -209,7 +209,7 @@ $$</div>
|
||||
<div class="math">$$
|
||||
\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
|
||||
$$</div>
|
||||
<p><b>B 恒优于 A0</b>(可行性校验:搬移掩盖 $\sqrt{g} \le T_{MMAD}/T_{MTE2}$;分解对齐)。</p>
|
||||
<p><b>方案 B 恒优于 A0</b>(可行性校验:搬移掩盖 $\sqrt{g} \le T_{MMAD}/T_{MTE2}$;分解对齐)。</p>
|
||||
<h3>4.3 A1 vs B</h3>
|
||||
<p>A1b 凑满核时 $T_{A1b} = T_{MMAD}(n_{wave} - 1 + \rho)$,与 $T_B = T_{MMAD}(n_{wave} - 1 + r/C)$ <b>理论时延严格相等</b>——两者都是"总计算量/C"(面积型主导项下时延与切分方式无关,只要轮轮满载)。</p>
|
||||
<p>结构性差异在<b>搬入总量</b>。先交代符号(v1.3 补充,避免误读):</p>
|
||||
@@ -222,7 +222,7 @@ $$</div>
|
||||
<div class="math">$$
|
||||
S_{A1b} = 2sC\big(n_{wave} - 1\big) + 2s\sqrt{\rho} \cdot C = 2sC\big(n_{wave} - 1 + \sqrt{\rho}\big)
|
||||
$$</div>
|
||||
<p><b>B</b>:$n_{wave} C$ 块均匀 tile,边长 $s_B = s\sqrt{N_{blk}/(n_{wave}C)}$(总面积守恒 $n_{wave} C \cdot s_B^2 = N_{blk} \cdot s^2$):</p>
|
||||
<p><b>方案 B</b>:$n_{wave} C$ 块均匀 tile,边长 $s_B = s\sqrt{N_{blk}/(n_{wave}C)}$(总面积守恒 $n_{wave} C \cdot s_B^2 = N_{blk} \cdot s^2$):</p>
|
||||
<div class="math">$$
|
||||
S_B = n_{wave} C \cdot 2s_B = 2sC\sqrt{n_{wave}\Big(n_{wave} - 1 + \rho\Big)}
|
||||
$$</div>
|
||||
@@ -230,31 +230,31 @@ $$</div>
|
||||
<div class="math">$$
|
||||
\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
|
||||
$$</div>
|
||||
<p><b>均值不等式:A1b 周长和恒 ≤ B</b>(等号当 $\rho = 1$ 即无尾轮)。搬入总量少意味着 L2 重复读少、周长型项的掩盖余量更大。</p>
|
||||
<p><b>结论(面积型主导)</b>:A1b 与 B 理论时延严格相等;离散 16 对齐后互有胜负(数值依赖、无系统性优劣——对齐约束对两者平等);A1b 搬入总量恒 ≤ B(结构性)。<b>工程简洁选 B(一套 tile);追求搬移下限选 A1b。</b></p>
|
||||
<p><b>均值不等式:A1b 周长和恒 ≤ 方案 B</b>(等号当 $\rho = 1$ 即无尾轮)。搬入总量少意味着 L2 重复读少、周长型项的掩盖余量更大。</p>
|
||||
<p><b>结论(面积型主导)</b>:A1b 与方案 B 理论时延严格相等;离散 16 对齐后互有胜负(数值依赖、无系统性优劣——对齐约束对两者平等);A1b 搬入总量恒 ≤ 方案 B(结构性)。<b>工程简洁选方案 B(一套 tile);追求搬移下限选 A1b。</b></p>
|
||||
<h3>4.4 数值实例</h3>
|
||||
<p>*例 1(MMAD 主导,$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$、$\rho=0.53$。单块 $T_{MMAD}=35.3\mu s$、$T_{MTE2}^{L2}=25.8\mu s$、$T_{FIX}=2.6\mu s$——MMAD 面积型主导 ✓。</p>
|
||||
<p>*例 1(MMAD 主导,$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 面积型主导 ✓。</p>
|
||||
<ul class="tight">
|
||||
<li>A0:$70.6\mu s$;A1a:$s^* = \lfloor 32/17 \rfloor = 1$ 失效;</li>
|
||||
<li>A1b 非方形枚举 $(sM_t, sN_t) = (224, 160)$:尾轮 32 块恰好凑满,$T_{A1b} = 35.3 + 19.3 = 54.6\mu s$;</li>
|
||||
<li>B:$N_{blk}'=64=8\times8$、$sM'=sN'=224$,$T_B = 54.1\mu s$。</li>
|
||||
<li>方案 B:$N_{blk}'=64=8\times8$、$sM'=sN'=224$,$T_B = 54.1\mu s$。</li>
|
||||
</ul>
|
||||
<p>A1b 与 B 打平(54.6 vs 54.1,差 <1%,纯离散对齐的数值依赖)。<b>相对 A0 均省约 23%</b>。</p>
|
||||
<p>*例 2(MMAD 主导,$r \mid C$ 完美点)*:M=1536、N=2048、K=4096、BF16。$N_{blk}=48$、$r=16$。A1a:$s^* = 2 = C/r$ 完美,$T_{A1a} = 53.0\mu s$;B:$T_B = 53.0\mu s$。<b>A1a = B</b>($1/s^* = r/C$),选 A1a(搬移增量小)。</p>
|
||||
<p>A1b 与方案 B 打平(54.6 vs 54.1,差 <1%,纯离散对齐的数值依赖)。<b>相对 A0 均省约 23%</b>。</p>
|
||||
<p>*例 2(MMAD 主导,$r \mid C$ 完美点)*:M=1536、N=2048、K=4096、BF16。$N_{blk}=48$、$r=16$。A1a:$s^* = 2 = C/r$ 完美,$T_{A1a} = 53.0\mu s$;方案 B:$T_B = 53.0\mu s$。<b>A1a = 方案 B</b>($1/s^* = r/C$),选 A1a(搬移增量小)。</p>
|
||||
<p>*例 3(FIX 主导,$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$——<b>FIX 面积型主导</b>($K=256 < 304$)。</p>
|
||||
<ul class="tight">
|
||||
<li>A0:$5.24\mu s$;A1a:$s^* = \min(8, 2) = 2$(dValue),$T_{A1a} = 2.62 + 2.62/2 = 3.93\mu s$;</li>
|
||||
<li>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$ <b>翻出为尾轮主导项</b>($> T_{FIX,t} = 0.37\mu s$;tile 缩小使周长/面积比上升,见 §7.2.4),$T_{A1b} = 2.62 + 0.61 = 3.23\mu s$;</li>
|
||||
<li>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$。</li>
|
||||
<li>方案 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$。</li>
|
||||
</ul>
|
||||
<p><b>翻出效应下 B 微优 8.5%</b>——$r$ 小时 A1b 的尾轮 tile 缩得太小、搬入翻出,B 的全局 tile 缩得温和($1/\sqrt{g} = 0.75 > \sqrt{\rho} = 0.35$)不翻出。</p>
|
||||
<p><b>翻出效应下方案 B 微优 8.5%</b>——$r$ 小时 A1b 的尾轮 tile 缩得太小、搬入翻出,方案 B 的全局 tile 缩得温和($1/\sqrt{g} = 0.75 > \sqrt{\rho} = 0.35$)不翻出。</p>
|
||||
<p>*例 4(FIX 主导,$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$ 主导。</p>
|
||||
<ul class="tight">
|
||||
<li>A0:$7.86\mu s$;</li>
|
||||
<li>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$;</li>
|
||||
<li>B:$N_{blk}'=96$、分解 $(8,12)$($sM'=288, sN'=192$),$T_{FIX}' = 2.21\mu s$,$T_B = 6.64\mu s$。</li>
|
||||
<li>方案 B:$N_{blk}'=96$、分解 $(8,12)$($sM'=288, sN'=192$),$T_{FIX}' = 2.21\mu s$,$T_B = 6.64\mu s$。</li>
|
||||
</ul>
|
||||
<p><b>打平</b>(6.71 vs 6.64,差 1%,离散对齐的数值依赖)——面积型主导且尾轮不翻出时 A1b 与 B 时延相等(总量守恒)的实证。</p>
|
||||
<p><b>打平</b>(6.71 vs 6.64,差 1%,离散对齐的数值依赖)——面积型主导且尾轮不翻出时 A1b 与方案 B 时延相等(总量守恒)的实证。</p>
|
||||
<hr>
|
||||
<h2>五、周长型主导完整推导($T_{MTE2}$ 最大)</h2>
|
||||
<p><b>本章适用条件</b>:主导项为周长型 $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 三策略比较中为公共因子,可约掉)。</p>
|
||||
@@ -273,81 +273,81 @@ $$</div>
|
||||
<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 约束 $g \le (sN \cdot dtype/256\text{B})^2$ 满足时)。物理解释:尾轮 $r$ 核聚合带宽仅 $r \cdot BW_{pc}$,搬移不加速;B 让所有轮次满核满带宽。</p>
|
||||
<p><b>方案 B 恒优于 A0</b>(dValue 约束 $g \le (sN \cdot dtype/256\text{B})^2$ 满足时)。物理解释:尾轮 $r$ 核聚合带宽仅 $r \cdot BW_{pc}$,搬移不加速;方案 B 让所有轮次满核满带宽。</p>
|
||||
<h3>5.3 A1 vs B——完整分界推导</h3>
|
||||
<p>**(i)无约束 regime($\rho \ge \rho_{dv}$,A1b 可凑满)**:总时延正比于周长和(满载轮聚合带宽相同),由 §4.3 的均值不等式:</p>
|
||||
<div class="math">$$
|
||||
\frac{T_{A1b}^{mem}}{T_B^{mem}} = \frac{n_{wave} - 1 + \sqrt{\rho}}{\sqrt{n_{wave}(n_{wave}-1+\rho)}} \le 1
|
||||
$$</div>
|
||||
<p><b>A1b 恒不劣于 B</b>,$\rho$ 小时优势大($\rho=0.1$、$n_{wave}=2$ 时优 11%)。</p>
|
||||
<p><b>(ii)关键结构事实:A1b 的 dValue 约束恒比 B 更严</b>。A1b 的尾轮 tile 缩放因子为 $\sqrt{\rho}$,B 的全局 tile 缩放因子为 $1/\sqrt{g} = \sqrt{(n_{wave}-1+\rho)/n_{wave}}$:</p>
|
||||
<p><b>A1b 恒不劣于方案 B</b>,$\rho$ 小时优势大($\rho=0.1$、$n_{wave}=2$ 时优 11%)。</p>
|
||||
<p><b>(ii)关键结构事实:A1b 的 dValue 约束恒比方案 B 更严</b>。A1b 的尾轮 tile 缩放因子为 $\sqrt{\rho}$,方案 B 的全局 tile 缩放因子为 $1/\sqrt{g} = \sqrt{(n_{wave}-1+\rho)/n_{wave}}$:</p>
|
||||
<div class="math">$$
|
||||
\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{ 恒成立)}
|
||||
$$</div>
|
||||
<p><b>物理含义</b>:A1b 只缩尾轮 $r$ 块的区域去凑满 C 核,tile 必须缩得比 B 的全局缩放更狠——所以 A1b 的尾轮 tile 更早跌破 dValue 下限。<b>这是 B 可能反超的唯一通道</b>。</p>
|
||||
<p><b>物理含义</b>:A1b 只缩尾轮 $r$ 块的区域去凑满 C 核,tile 必须缩得比方案 B 的全局缩放更狠——所以 A1b 的尾轮 tile 更早跌破 dValue 下限。<b>这是方案 B 可能反超的唯一通道</b>。</p>
|
||||
<p><b>(iii)三区间判定</b>($\rho_{dv} = (256\text{B}/(sN \cdot dtype))^2$):</p>
|
||||
<table><tr><th>区间</th><th>条件</th><th>结论</th></tr>
|
||||
<tr><td>I</td><td>$\rho \ge \rho_{dv}$(A1b 凑满可行;此时 $1/g > \rho \ge \rho_{dv}$ 故 B 也可行)</td><td><b>A1b 恒优</b>(均值不等式)</td></tr>
|
||||
<tr><td>II</td><td>$\rho < \rho_{dv} \le 1/g$(A1b 卡死、B 可行)</td><td>分界公式判定(下)</td></tr>
|
||||
<tr><td>I</td><td>$\rho \ge \rho_{dv}$(A1b 凑满可行;此时 $1/g > \rho \ge \rho_{dv}$ 故方案 B 也可行)</td><td><b>A1b 恒优</b>(均值不等式)</td></tr>
|
||||
<tr><td>II</td><td>$\rho < \rho_{dv} \le 1/g$(A1b 卡死、方案 B 可行)</td><td>分界公式判定(下)</td></tr>
|
||||
<tr><td>III</td><td>$\rho_{dv} > 1/g > \rho$(都卡死)</td><td>A0/A1a 兜底</td></tr></table>
|
||||
<p>区间 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}}$ 缩放):</p>
|
||||
<div class="math">$$
|
||||
T_{A1b}^{dv} = T_{load}\big(n_{wave} - 1 + \sqrt{\rho_{dv}}\big),\qquad T_B = \frac{n_{wave}}{\sqrt{g}} \cdot T_{load}
|
||||
$$</div>
|
||||
<p><b>B 严格优当且仅当</b>:</p>
|
||||
<p><b>方案 B 严格优当且仅当</b>:</p>
|
||||
<div class="math">$$
|
||||
\sqrt{\rho_{dv}} > n_{wave} \cdot \sqrt{\frac{n_{wave} - 1 + \rho}{n_{wave}}} - (n_{wave} - 1)
|
||||
$$</div>
|
||||
<p>物理解读:A1b 卡死后尾轮时延被锁在 $\sqrt{\rho_{dv}} \cdot T_{load}$(dValue 下限决定),不再随 $\rho$ 减小;而 B 的 $n_{wave}/\sqrt{g}$ 随 $\rho$ 减小而降低(全局重切幅度减小)。$\rho$ 足够小(卡死足够深)时 B 反超。</p>
|
||||
<p>物理解读:A1b 卡死后尾轮时延被锁在 $\sqrt{\rho_{dv}} \cdot T_{load}$(dValue 下限决定),不再随 $\rho$ 减小;而方案 B 的 $n_{wave}/\sqrt{g}$ 随 $\rho$ 减小而降低(全局重切幅度减小)。$\rho$ 足够小(卡死足够深)时方案 B 反超。</p>
|
||||
<h3>5.4 数值实例</h3>
|
||||
<p><b>访存 Bound 数值实例(周长型主导,v1.3 重新构造)</b>:</p>
|
||||
<p>*例 3(工作集超 L2、GM 直读的周长型,B 不可行)*:B=34、M=N=1024、K=2048、BF16,tile $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$(<b>周长型主导</b> ✓: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$。</p>
|
||||
<p>*例 3(工作集超 L2、GM 直读的周长型,方案 B 不可行)*:Batch=34、M=N=1024、K=2048、BF16,tile $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$(<b>周长型主导</b> ✓: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$。</p>
|
||||
<ul class="tight">
|
||||
<li>A0:$5 \times 83.9 = 419.5\mu s$;</li>
|
||||
<li>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$;</li>
|
||||
<li>A1b:$s_t = 512\sqrt{0.25} = 256$(dValue $=512$B ✓),尾轮 8 块 $512^2$ 区域重切为 $8 \times 4 = 32$ 块 $256^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$(<b>省 10%</b>);</li>
|
||||
<li>B:$N_{blk}' = 160$ 要求 $mCnt' \cdot nCnt' \cdot 34 = 160$——34 不整除 160,<b>B 不可行</b>(即使 batch 对齐,$M=N=1024$、dValue 下限 128 使 $nCnt' \le 8$、$mCnt' \le 8$,$B \times 64 = 2176$ 的分解也无法凑出 $n_{wave} C = 160$ 的整数轮——<b>周长型场景 B 常因分解自由度不足而不可行</b>,见 §7.2.3)。</li>
|
||||
<li>方案 B:$N_{blk}' = 160$ 要求 $mCnt' \cdot nCnt' \cdot 34 = 160$——34 不整除 160,<b>方案 B 不可行</b>(即使 batch 对齐,$M=N=1024$、dValue 下限 128 使 $nCnt' \le 8$、$mCnt' \le 8$,$\text{Batch} \times 64 = 2176$ 的分解也无法凑出 $n_{wave} C = 160$ 的整数轮——<b>周长型场景方案 B 常因分解自由度不足而不可行</b>,见 §7.2.3)。</li>
|
||||
</ul>
|
||||
<p>*例 4(周长型、B 可行的打平区)*:B=8、M=N=2176、K=4096、BF16,tile $sM=sN=256$。输入 $8 \times 2 \times 2176 \times 4096 \times 2 = 285$MB 超 L2 → GM 直读周长型(tile 判据 $128 < 304$ ✓)。$T_{load} = 4096 \times 512 \times 2/50\text{G} = 83.9\mu s$。$N_{blk} = 8 \times 81 = 648$、$n_{wave}=21$、$r=8$、$\rho=0.038 < \rho_{dv}=0.25$(A1b 凑满卡死)。</p>
|
||||
<p>*例 4(周长型、方案 B 可行的打平区)*:Batch=8、M=N=2176、K=4096、BF16,tile $sM=sN=256$。输入 $8 \times 2 \times 2176 \times 4096 \times 2 = 285$MB 超 L2 → GM 直读周长型(tile 判据 $128 < 304$ ✓)。$T_{load} = 4096 \times 512 \times 2/50\text{G} = 83.9\mu s$。$N_{blk} = 8 \times 81 = 648$、$n_{wave}=21$、$r=8$、$\rho=0.038 < \rho_{dv}=0.25$(A1b 凑满卡死)。</p>
|
||||
<ul class="tight">
|
||||
<li>A1b:$s_t$ 下限 128(dValue),尾轮 8 块 $256^2$ 重切为 $8 \times 4 = 32$ 块 $128^2$ 恰好凑满,$T_{tail} = 4096 \times 256 \times 2/50\text{G} = 41.9\mu s$,$T_{A1b} = 20 \times 83.9 + 41.9 = 1720\mu s$;</li>
|
||||
<li>A0:$1762\mu s$;B:$N_{blk}'=672$ 要求 $mCnt'nCnt' = 84$ 且整除 $M=N=2176$(16 对齐)——$2176 = 16 \times 136$ 的因子分解受 dValue 约束后无可行组合,<b>B 不可行</b>,A1b 为最优(省 2.4%)。</li>
|
||||
<li>A0:$1762\mu s$;方案 B:$N_{blk}'=672$ 要求 $mCnt'nCnt' = 84$ 且整除 $M=N=2176$(16 对齐)——$2176 = 16 \times 136$ 的因子分解受 dValue 约束后无可行组合,<b>方案 B 不可行</b>,A1b 为最优(省 2.4%)。</li>
|
||||
</ul>
|
||||
<p><b>周长型场景的规律</b>:工作集超 L2 的 case 通常 $B$ 大或形状大 → $N_{blk}$ 大 → $n_{wave}$ 大 → 尾轮占比小($\rho$ 小或 $w$ 大),损失/收益天然被稀释;且 $B$ 的分解可行性($N_{blk}' = n_{wave} C$ 须分解为 $B \cdot mCnt' \cdot nCnt'$ 且 16 对齐 + dValue)在此类场景常不满足。<b>周长型场景的"收益/损失"更多是可行性问题而非时延百分比问题</b>。</p>
|
||||
<p><b>周长型场景的规律</b>:工作集超 L2 的 case 通常 Batch 大或形状大 → $N_{blk}$ 大 → $n_{wave}$ 大 → 尾轮占比小($\rho$ 小或 $w$ 大),损失/收益天然被稀释;且方案 B 的分解可行性($N_{blk}' = n_{wave} C$ 须分解为 $\text{Batch} \cdot mCnt' \cdot nCnt'$ 且 16 对齐 + dValue)在此类场景常不满足。<b>周长型场景的"收益/损失"更多是可行性问题而非时延百分比问题</b>。</p>
|
||||
<hr>
|
||||
<h2>六、决策总表与基于 B/M/K/N 的判定流程</h2>
|
||||
<h2>六、决策总表与基于 Batch/M/K/N 的判定流程</h2>
|
||||
<h3>6.1 决策总表</h3>
|
||||
<p>主导项判定(§2.1 三维判据):<b>面积型主导</b> = $T_{MMAD}$ 或 $T_{FIX}$ 最大(tile 判据 $\frac{sM \cdot sN}{sM+sN} \ge 93.5$(L2 命中)且 MMAD/FIX 间由 $K \gtrless 304$ 分);<b>周长型主导</b> = $T_{MTE2}$ 最大(小 tile 或工作集超 L2 的 GM 直读)。</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>面积型主导,$r \le C/2$ 且 $r \mid C$</td><td>A1a 优</td><td>B 优</td><td>A1a = B(选 A1a,搬移少)</td><td>A1a</td></tr>
|
||||
<tr><td>面积型主导,$r \le C/2$ 且 $r \nmid C$</td><td>A1a 优</td><td>B 优</td><td>B 略优(取整损失)</td><td>A1a/B 皆可</td></tr>
|
||||
<tr><td>面积型主导,$r > C/2$</td><td>A1b 优(不退化)</td><td>B 优</td><td><b>时延严格相等</b>(总量守恒),离散打平</td><td>A1b 或 B(工程简洁选 B,搬移下限选 A1b)</td></tr>
|
||||
<tr><td>面积型主导 + $r$ 小($\rho < (187/s)^2$,尾轮翻出)</td><td>A1b 优但尾轮翻出</td><td>B 优</td><td>B 微优(~6-8%,翻出效应 §7.2.4)</td><td>B</td></tr>
|
||||
<tr><td>周长型主导,$\rho \ge \rho_{dv}$ 且 B 可行</td><td>A1b 优</td><td>B 优</td><td><b>A1b 恒优</b>(均值不等式)</td><td>A1b</td></tr>
|
||||
<tr><td>周长型主导,$\rho < \rho_{dv}$ 且分界公式成立且 B 可行</td><td>A1b 部分凑满</td><td>B 优</td><td><b>B 严格优</b></td><td>B</td></tr>
|
||||
<tr><td>周长型主导,$\rho < \rho_{dv}$ 且分界公式不成立</td><td>A1b 部分凑满</td><td>B 优</td><td>打平</td><td>A1b/B 皆可</td></tr>
|
||||
<tr><td>周长型主导,B 不可行(分解自由度不足:decode 小 M、大 B 超 L2)</td><td>A1b 优</td><td>B 不可行</td><td>不可比(A1b 唯一)</td><td>A1b</td></tr>
|
||||
<tr><td>dValue 全面卡死(A1b 也不可凑满)</td><td>A1a($s^* \ge 2$)或 A0</td><td>B 不可行</td><td>—</td><td>A1a/A0</td></tr></table>
|
||||
<h3>6.2 基于 B/M/K/N/dtype 的直接判定流程</h3>
|
||||
<table><tr><th>场景</th><th>A0 vs A1</th><th>A0 vs 方案 B</th><th>A1 vs 方案 B</th><th>最优策略</th></tr>
|
||||
<tr><td>面积型主导,$r \le C/2$ 且 $r \mid C$</td><td>A1a 优</td><td>方案 B 优</td><td>A1a = 方案 B(选 A1a,搬移少)</td><td>A1a</td></tr>
|
||||
<tr><td>面积型主导,$r \le C/2$ 且 $r \nmid C$</td><td>A1a 优</td><td>方案 B 优</td><td>方案 B 略优(取整损失)</td><td>A1a/方案 B 皆可</td></tr>
|
||||
<tr><td>面积型主导,$r > C/2$</td><td>A1b 优(不退化)</td><td>方案 B 优</td><td><b>时延严格相等</b>(总量守恒),离散打平</td><td>A1b 或方案 B(工程简洁选方案 B,搬移下限选 A1b)</td></tr>
|
||||
<tr><td>面积型主导 + $r$ 小($\rho < (187/s)^2$,尾轮翻出)</td><td>A1b 优但尾轮翻出</td><td>方案 B 优</td><td>方案 B 微优(~6-8%,翻出效应 §7.2.4)</td><td>方案 B</td></tr>
|
||||
<tr><td>周长型主导,$\rho \ge \rho_{dv}$ 且方案 B 可行</td><td>A1b 优</td><td>方案 B 优</td><td><b>A1b 恒优</b>(均值不等式)</td><td>A1b</td></tr>
|
||||
<tr><td>周长型主导,$\rho < \rho_{dv}$ 且分界公式成立且方案 B 可行</td><td>A1b 部分凑满</td><td>方案 B 优</td><td><b>方案 B 严格优</b></td><td>方案 B</td></tr>
|
||||
<tr><td>周长型主导,$\rho < \rho_{dv}$ 且分界公式不成立</td><td>A1b 部分凑满</td><td>方案 B 优</td><td>打平</td><td>A1b/方案 B 皆可</td></tr>
|
||||
<tr><td>周长型主导,方案 B 不可行(分解自由度不足:decode 小 M、大 Batch 超 L2)</td><td>A1b 优</td><td>方案 B 不可行</td><td>不可比(A1b 唯一)</td><td>A1b</td></tr>
|
||||
<tr><td>dValue 全面卡死(A1b 也不可凑满)</td><td>A1a($s^* \ge 2$)或 A0</td><td>方案 B 不可行</td><td>—</td><td>A1a/A0</td></tr></table>
|
||||
<h3>6.2 基于 Batch/M/K/N/dtype 的直接判定流程</h3>
|
||||
<p>五步闭式前置计算后查表即得最优策略,无需逐项建模仿真:</p>
|
||||
<ol class="tight">
|
||||
<li><b>首轮切分</b>:按 §2.5 搬入时延最小化枚举得 $mCnt, nCnt, sM, sN, k_{L1}$;</li>
|
||||
<li><b>尾轮参数</b>:$N_{blk} = B \cdot mCnt \cdot nCnt$,$n_{wave} = \lceil N_{blk}/C \rceil$,$r = N_{blk} \bmod C$,$\rho = r/C$;</li>
|
||||
<li><b>尾轮参数</b>:$N_{blk} = \text{Batch} \cdot mCnt \cdot nCnt$,$n_{wave} = \lceil N_{blk}/C \rceil$,$r = N_{blk} \bmod C$,$\rho = r/C$;</li>
|
||||
<li><b>主导项判定</b>(§2.1 三维判据):算 $T_{MMAD}, T_{MTE2}, T_{FIX}$ 取最大;注意 $BW_{eff}$ 依工作集是否超 L2 取 162.5GB/s(命中)或 50GB/s(GM 直读);</li>
|
||||
<li><b>dValue 可行性</b>:$\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>B 分解可行性</b>:$N_{blk}' = n_{wave} C$ 可分解为 $B \cdot mCnt' \cdot nCnt'$ 且 16 对齐 + $sN' \cdot dtype \ge 256$B;</li>
|
||||
<li><b>dValue 可行性</b>:$\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>方案 B 分解可行性</b>:$N_{blk}' = n_{wave} C$ 可分解为 $\text{Batch} \cdot mCnt' \cdot nCnt'$ 且 16 对齐 + $sN' \cdot dtype \ge 256$B;</li>
|
||||
<li><b>单块主导项</b>:$T_{block} = \max(T_{MMAD}, T_{MTE2}, T_{FIX})$。</li>
|
||||
</ol>
|
||||
<p><b>决策表</b>:</p>
|
||||
<table><tr><th>#</th><th>条件</th><th>最优策略</th><th>端到端时延</th></tr>
|
||||
<tr><td>1</td><td>$r = 0$</td><td>A0(无尾轮)</td><td>$n_{wave} \cdot T_{block}$</td></tr>
|
||||
<tr><td>2</td><td>面积型主导,$0 < r \le C/2$,无翻出</td><td>A1a,$s^* = \lfloor C/r \rfloor$</td><td>$T_{block}(n_{wave} - 1 + 1/s^*)$</td></tr>
|
||||
<tr><td>3</td><td>面积型主导,$r > C/2$,无翻出</td><td>A1b 或 B——时延严格相等</td><td>$T_{block}(n_{wave} - 1 + \rho)$</td></tr>
|
||||
<tr><td>4</td><td>面积型主导,$\rho < (187/s)^2$(翻出)</td><td>B(翻出时 A1b 尾轮变周长型)</td><td>$T_{block} \cdot n_{wave}/g$(近似)</td></tr>
|
||||
<tr><td>5</td><td>周长型主导,$\rho \ge \rho_{dv}$,B 可行</td><td>A1b</td><td>$T_{load}(n_{wave} - 1 + \sqrt{\rho})$</td></tr>
|
||||
<tr><td>6</td><td>周长型主导,$\rho < \rho_{dv}$ 且 $\sqrt{\rho_{dv}} > n_{wave}/\sqrt{g} - (n_{wave}-1)$ 且 B 可行</td><td>B</td><td>$T_{load} \cdot n_{wave}/\sqrt{g}$</td></tr>
|
||||
<tr><td>7</td><td>周长型主导,B 不可行</td><td>A1b(凑不满则部分凑满)/ A1a / A0</td><td>按实际分解计算</td></tr></table>
|
||||
<tr><td>3</td><td>面积型主导,$r > C/2$,无翻出</td><td>A1b 或方案 B——时延严格相等</td><td>$T_{block}(n_{wave} - 1 + \rho)$</td></tr>
|
||||
<tr><td>4</td><td>面积型主导,$\rho < (187/s)^2$(翻出)</td><td>方案 B(翻出时 A1b 尾轮变周长型)</td><td>$T_{block} \cdot n_{wave}/g$(近似)</td></tr>
|
||||
<tr><td>5</td><td>周长型主导,$\rho \ge \rho_{dv}$,方案 B 可行</td><td>A1b</td><td>$T_{load}(n_{wave} - 1 + \sqrt{\rho})$</td></tr>
|
||||
<tr><td>6</td><td>周长型主导,$\rho < \rho_{dv}$ 且 $\sqrt{\rho_{dv}} > n_{wave}/\sqrt{g} - (n_{wave}-1)$ 且方案 B 可行</td><td>方案 B</td><td>$T_{load} \cdot n_{wave}/\sqrt{g}$</td></tr>
|
||||
<tr><td>7</td><td>周长型主导,方案 B 不可行</td><td>A1b(凑不满则部分凑满)/ A1a / A0</td><td>按实际分解计算</td></tr></table>
|
||||
<p><b>判定流程图</b>:</p>
|
||||
<pre><code>[B, M, K, N, dtype]
|
||||
<pre><code>[Batch, M, K, N, dtype]
|
||||
│
|
||||
▼
|
||||
<首轮枚举(§2.5)→ mCnt, nCnt, sM, sN>
|
||||
@@ -361,43 +361,43 @@ $$</div>
|
||||
│
|
||||
├─ 面积型(MMAD 或 FIX 最大)
|
||||
│ │
|
||||
│ ├─ ρ < (187/s)²(尾轮翻出)? ── 是 ─▶ B
|
||||
│ ├─ ρ < (187/s)²(尾轮翻出)? ── 是 ─▶ 方案 B
|
||||
│ │ 否 ── r ≤ C/2 ? ── 是 ─▶ A1a(s* = ⌊C/r⌋)
|
||||
│ │ 否 ─▶ A1b 或 B(时延严格相等)
|
||||
│ │ (工程简洁选 B)
|
||||
│ │ 否 ─▶ A1b 或方案 B(时延严格相等)
|
||||
│ │ (工程简洁选方案 B)
|
||||
│
|
||||
└─ 周长型(MTE2 最大)
|
||||
│
|
||||
├─ B 分解可行 ? ── 否 ─▶ A1b(唯一可行重切)/ A1a / A0
|
||||
├─ 方案 B 分解可行 ? ── 否 ─▶ A1b(唯一可行重切)/ A1a / A0
|
||||
│
|
||||
└─ 可行 ── ρ ≥ ρ_dv ? ── 是 ─▶ A1b(周长和恒 ≤ B)
|
||||
└─ 可行 ── ρ ≥ ρ_dv ? ── 是 ─▶ A1b(周长和恒 ≤ 方案 B)
|
||||
└─ 否 ─▶ 分界公式判定:
|
||||
√ρ_dv > n_wave/√g −(n_wave−1) ? ── 是 ─▶ B
|
||||
└─ 否 ─▶ A1b/B 打平</code></pre>
|
||||
√ρ_dv > n_wave/√g −(n_wave−1) ? ── 是 ─▶ 方案 B
|
||||
└─ 否 ─▶ A1b/方案 B 打平</code></pre>
|
||||
<hr>
|
||||
<h2>七、B 方案的简化形态 B1 与 B0/B1 相对 A1b 的损失分析</h2>
|
||||
<p>前文方案 B(整轮均匀重切)与 A1b 的分界判定需要逐 case 计算 $\rho$、$\rho_{dv}$、分界公式——本节回答两个工程问题:①能否给 B 一个<b>无脑版门限</b>(满足条件就直接整数轮满核切,不做 A1b/B 分界)?②若完全采用 B(无论无脑版 B1 还是完整版 B0),相对理论最优的 A1b 会损失多少、最大损失多少?</p>
|
||||
<h2>七、方案 B 的简化形态 B1 与 B0/B1 相对 A1b 的损失分析</h2>
|
||||
<p>前文方案 B(整轮均匀重切)与 A1b 的分界判定需要逐 case 计算 $\rho$、$\rho_{dv}$、分界公式——本节回答两个工程问题:①能否给方案 B 一个<b>无脑版门限</b>(满足条件就直接整数轮满核切,不做 A1b/方案 B 分界)?②若完全采用方案 B(无论无脑版 B1 还是完整版 B0),相对理论最优的 A1b 会损失多少、最大损失多少?</p>
|
||||
<h3>7.1 B0 与 B1 的定义</h3>
|
||||
<ul class="tight">
|
||||
<li><b>B0(完整版 B)</b>:§三~§五的方案 B——与 A1b 做分界判定后选择(访存 Bound 且 $\rho \ge \rho_{dv}$ 时应选 A1b 而非 B);</li>
|
||||
<li><b>B1(无脑版 B)</b>:不做 A1b/B 分界,只要门限满足就<b>直接按整数轮满核切</b>(无论计算 Bound 还是访存 Bound)。</li>
|
||||
<li><b>B0(完整版方案 B)</b>:§三~§五的方案 B——与 A1b 做分界判定后选择(访存 Bound 且 $\rho \ge \rho_{dv}$ 时应选 A1b 而非方案 B);</li>
|
||||
<li><b>B1(无脑版方案 B)</b>:不做 A1b/方案 B 分界,只要门限满足就<b>直接按整数轮满核切</b>(无论计算 Bound 还是访存 Bound)。</li>
|
||||
</ul>
|
||||
<p><b>B1 门限推导</b>:B1 要成立需两个条件——</p>
|
||||
<p>*条件 1(有尾轮)*:$r = N_{blk} \bmod C > 0$(否则无尾轮可处理);</p>
|
||||
<p>*条件 2(可行 + 值得)*:B0 恒优于 A0(§4.2/§5.2 已证),故"可行即值得"。可行性只在访存 Bound 下受 dValue 约束($g \le g_{dv}$);计算 Bound 下无条件(dValue 放宽为搬移掩盖,且 §4.3 已证 B 与 A1b 时延严格相等)。</p>
|
||||
<p>合起来,<b>B1 的判定门限(闭式,仅依赖 B/M/K/N/dtype)</b>:</p>
|
||||
<p>*条件 2(可行 + 值得)*:B0 恒优于 A0(§4.2/§5.2 已证),故"可行即值得"。可行性只在访存 Bound 下受 dValue 约束($g \le g_{dv}$);计算 Bound 下无条件(dValue 放宽为搬移掩盖,且 §4.3 已证方案 B 与 A1b 时延严格相等)。</p>
|
||||
<p>合起来,<b>B1 的判定门限(闭式,仅依赖 Batch/M/K/N/dtype)</b>:</p>
|
||||
<div class="math">$$
|
||||
\boxed{\; r > 0 \;\land\; \Big( K \ge K^* \;\lor\; g \le \Big(\frac{sN \cdot dtype}{256\text{B}}\Big)^2 \Big) \;}
|
||||
$$</div>
|
||||
<p>即:**计算 Bound 时无条件直接整数轮满核切;访存 Bound 时满足 dValue 门限($g \le g_{dv}$)就直接整数轮满核切**。门限的全部输入($r$、$g$、$K^*$、$sN$)都来自首轮切分结果,host 端一次计算即可。</p>
|
||||
<h3>7.2 B0/B1 相对 A1b 的损失分析(v1.3 按修正模型重写)</h3>
|
||||
<p>B0/B1 相对 A1b 的"损失"定义为 $T_B/T_{A1b} - 1$(B 更慢为正)。按 §2.1 的主导项缩放类型分两类讨论——**v1.3 修正模型($T_{MTE2}$ 用全量 K、三维主导项判定)下,结论与 v1.2 有实质差异**。</p>
|
||||
<p>B0/B1 相对 A1b 的"损失"定义为 $T_B/T_{A1b} - 1$(方案 B 更慢为正)。按 §2.1 的主导项缩放类型分两类讨论——**v1.3 修正模型($T_{MTE2}$ 用全量 K、三维主导项判定)下,结论与 v1.2 有实质差异**。</p>
|
||||
<h4>7.2.1 面积型主导:损失严格为 0(总量守恒)</h4>
|
||||
<p>面积型主导项(MMAD 或 FIX)的时延 $\propto$ 块面积。设主导项单块时延 $T_{block} = c \cdot sM \cdot sN$($c$ 为与 tile 无关的系数:MMAD 时 $c = 2K/Q_{16}$,FIX 时 $c = outB/BW_{pc}$)。总量守恒:所有块的面积之和 = 总输出 $B \cdot M \cdot N$,与切分方式无关。轮轮满载时:</p>
|
||||
<p>面积型主导项(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$,与切分方式无关。轮轮满载时:</p>
|
||||
<div class="math">$$
|
||||
T = \frac{\text{主导项总量}}{C} = \frac{c \cdot B \cdot M \cdot N}{C}
|
||||
T = \frac{\text{主导项总量}}{C} = \frac{c \cdot \text{Batch} \cdot M \cdot N}{C}
|
||||
$$</div>
|
||||
<p>A1b(主轮整块 + 尾轮凑满)与 B(全局均匀重切)都做到轮轮满载 → <b>时延严格相等,损失恒为 0</b>。</p>
|
||||
<p>A1b(主轮整块 + 尾轮凑满)与方案 B(全局均匀重切)都做到轮轮满载 → <b>时延严格相等,损失恒为 0</b>。</p>
|
||||
<p>*证明*:$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$)。<b>严格相等</b>。</p>
|
||||
<p>离散 16 对齐后互有胜负(<3%,数值依赖、无系统性方向)。<b>面积型主导下 B1 零损失</b>——这是 v1.3 相对 v1.2 最重要的修正(v1.2 用 $k_{L1}$ 版错误模型把大量面积型 case 误标为"访存 Bound"并算出 5.4%~30% 的虚假损失)。</p>
|
||||
<h4>7.2.2 周长型主导:损失公式的逐步推导</h4>
|
||||
@@ -406,7 +406,7 @@ $$</div>
|
||||
<div class="math">$$
|
||||
T_{A1b} = (n_{wave}-1) \cdot T_{load} + \sqrt{\rho} \cdot T_{load} = T_{load}\big(n_{wave} - 1 + \sqrt{\rho}\big)
|
||||
$$</div>
|
||||
<p>B:$N_{blk}' = n_{wave} C$ 块均匀重切、单块搬移缩 $\sqrt{g}$ 倍($g = n_{wave} C/N_{blk}$):</p>
|
||||
<p>方案 B:$N_{blk}' = n_{wave} C$ 块均匀重切、单块搬移缩 $\sqrt{g}$ 倍($g = n_{wave} C/N_{blk}$):</p>
|
||||
<div class="math">$$
|
||||
T_B = \frac{n_{wave}}{\sqrt{g}} \cdot T_{load}
|
||||
$$</div>
|
||||
@@ -423,72 +423,72 @@ $$</div>
|
||||
<tr><td>256</td><td>0.25(r=8)</td><td><b>5.4%</b></td></tr>
|
||||
<tr><td>512</td><td>0.0625(r=2)</td><td><b>16.6%</b></td></tr></table>
|
||||
<p>数值核验($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$ ✓。</p>
|
||||
<h4>7.2.3 理论公式的可靠性:三个近似与 B 的可行性约束</h4>
|
||||
<h4>7.2.3 理论公式的可靠性:三个近似与方案 B 的可行性约束</h4>
|
||||
<p>损失公式建立在三个近似上,逐一审视:</p>
|
||||
<p><b>(1)方形近似与非方形惩罚</b>。$N_{blk}'$ 的整数分解偏离方形比例时周长和上升,惩罚因子 $p(\lambda) = (\sqrt{\lambda} + 1/\sqrt{\lambda})/2 \ge 1$($\lambda$ 为分解长宽比)。修正后:</p>
|
||||
<div class="math">$$
|
||||
\frac{T_B}{T_{A1b}} = \frac{n_{wave} \cdot p_B / \sqrt{g}}{(n_{wave}-1) + \sqrt{\rho} \cdot p_t}
|
||||
$$</div>
|
||||
<p>非方形惩罚同时作用于 $p_B$(B 全局分解)与 $p_t$(A1b 尾轮分解)——<b>损失方向由均值不等式的结构保持</b>(两策略在同一基准形状上缩放),但<b>大小偏离理论值</b>:$p_B > p_t$ 时放大、$p_B < p_t$ 时缩小甚至反超。理论值应视为<b>损失下界</b>。</p>
|
||||
<p>非方形惩罚同时作用于 $p_B$(方案 B 全局分解)与 $p_t$(A1b 尾轮分解)——<b>损失方向由均值不等式的结构保持</b>(两策略在同一基准形状上缩放),但<b>大小偏离理论值</b>:$p_B > p_t$ 时放大、$p_B < p_t$ 时缩小甚至反超。理论值应视为<b>损失下界</b>。</p>
|
||||
<p>**(2)$k_{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}$ 版错误建模的残余,本版删除。</p>
|
||||
<p><b>(3)B 的可行性约束(周长型场景的决定性因素)</b>。B 要求 $N_{blk}' = n_{wave} C$ 分解为 $B \cdot mCnt' \cdot nCnt'$ 且 16 对齐 + dValue。三重约束叠加下,<b>周长型场景(工作集超 L2 的大 B 小形状、或 decode 小 M)中 B 常不可行</b>:</p>
|
||||
<p><b>(3)方案 B 的可行性约束(周长型场景的决定性因素)</b>。方案 B 要求 $N_{blk}' = n_{wave} C$ 分解为 $\text{Batch} \cdot mCnt' \cdot nCnt'$ 且 16 对齐 + dValue。三重约束叠加下,<b>周长型场景(工作集超 L2 的大 Batch 小形状、或 decode 小 M)中方案 B 常不可行</b>:</p>
|
||||
<ul class="tight">
|
||||
<li>decode $M$ 小($M \le 128$):$mCnt = 1$ 固定,B 只能沿 N 加密——$nCnt' = n_{wave} C / B$ 常使 $sN' = N/nCnt' < 16$ 或跌破 dValue 下限 → <b>B 不可行,A1b 是唯一可行的重切方案</b>(例:B=100、M=64、N=3328:$N_{blk}'=1312$ 要求 $sN'=2.5$,不可行);</li>
|
||||
<li>工作集超 L2 的大 B case:$N_{blk}'$ 大、$mCnt'nCnt'$ 分解受 dValue/整除约束 → 常不可行(§5.4 例 3/4)。</li>
|
||||
<li>decode $M$ 小($M \le 128$):$mCnt = 1$ 固定,方案 B 只能沿 N 加密——$nCnt' = n_{wave} C / \text{Batch}$ 常使 $sN' = N/nCnt' < 16$ 或跌破 dValue 下限 → <b>方案 B 不可行,A1b 是唯一可行的重切方案</b>(例:Batch=100、M=64、N=3328:$N_{blk}'=1312$ 要求 $sN'=2.5$,不可行);</li>
|
||||
<li>工作集超 L2 的大 Batch case:$N_{blk}'$ 大、$mCnt'nCnt'$ 分解受 dValue/整除约束 → 常不可行(§5.4 例 3/4)。</li>
|
||||
</ul>
|
||||
<p><b>此时"损失"问题转化为可行性问题——B 不可用,A1b/A1a/A0 承接。</b></p>
|
||||
<p><b>此时"损失"问题转化为可行性问题——方案 B 不可用,A1b/A1a/A0 承接。</b></p>
|
||||
<h4>7.2.4 尾轮小块的主导项翻转(面积型场景的边界修正)</h4>
|
||||
<p>面积型主导下 A1b 的尾轮 tile 缩到 $s_t = s\sqrt{\rho}$;tile 缩小使周长/面积比上升,$s_t$ 跌破搬入临界($s_t \lesssim 187$,L2 命中)时<b>尾轮小块的主导项从面积型翻转为周长型</b>(搬入翻出),尾轮时延高于面积型公式 $\rho \cdot T_{block}$。翻转条件:</p>
|
||||
<div class="math">$$
|
||||
s\sqrt{\rho} < 187 \iff \rho < \Big(\frac{187}{s}\Big)^2
|
||||
$$</div>
|
||||
<p>$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%)**。</p>
|
||||
<p>$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%)**。</p>
|
||||
<h4>7.2.5 主流 prefill/decode 场景的实际损失</h4>
|
||||
<p>大模型推理 BMM 典型形状:prefill B∈[2,128]、M∈[4k,128k]、K/N∈[128,10240];decode B∈[2,128]、M∈[1,128]、K/N∈[128,10240]。</p>
|
||||
<p>大模型推理 BMM 典型形状:prefill Batch∈[2,128]、M∈[4k,128k]、K/N∈[128,10240];decode Batch∈[2,128]、M∈[1,128]、K/N∈[128,10240]。</p>
|
||||
<p>**(1)prefill(M 大):面积型主导 + 大 $n_{wave}$ → 损失 0**</p>
|
||||
<ul class="tight">
|
||||
<li>$M, N$ 为 256 倍数(主流模型维度 4096/8192/14336 均是):$mCnt = M/256$、$nCnt = N/256$ 含充足 2 的幂因子,$N_{blk} = B \cdot mCnt \cdot nCnt$ 对 $B \ge 2$ 几乎恒为 32 倍数 → **$r=0$ 无尾轮,损失 0**;</li>
|
||||
<li>$M$ 奇异(seq_len 非 256 倍数,如 M=4224):$N_{blk}$ 大、$n_{wave} \ge 9$ → 即使触发尾轮,面积型主导下 A1b 与 B 严格打平 → <b>损失 0</b>;</li>
|
||||
<li>$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**;</li>
|
||||
<li>$M$ 奇异(seq_len 非 256 倍数,如 M=4224):$N_{blk}$ 大、$n_{wave} \ge 9$ → 即使触发尾轮,面积型主导下 A1b 与方案 B 严格打平 → <b>损失 0</b>;</li>
|
||||
<li>tile 判据:$sM=sN=256$、$sM \cdot sN/(sM+sN) = 128 > 93.5$(L2 命中临界)→ 搬入不主导;K 任意时 MMAD($K \ge 304$)或 FIX($K < 304$)主导——<b>恒面积型</b>。</li>
|
||||
</ul>
|
||||
<p><b>(2)decode(M ≤ 128 小):周长型主导但 B 常不可行 → A1b 主力</b></p>
|
||||
<p><b>(2)decode(M ≤ 128 小):周长型主导但方案 B 常不可行 → A1b 主力</b></p>
|
||||
<ul class="tight">
|
||||
<li>$M$ 小 → tile 面积小($sM = M$)→ tile 判据 $M \cdot sN/(M+sN)$ 小(如 M=64、sN=256:$51.2 < 93.5$)→ <b>周长型主导</b>;</li>
|
||||
<li>但 $mCnt=1$ 固定 → B 的全局重切只能沿 N 加密,$sN' = N/(n_{wave} C/B)$ 常跌破 16 或 dValue 下限 → <b>B 不可行</b>(§7.2.3(3));</li>
|
||||
<li>A1b 尾轮局部重切(tile $(M, sN_t)$ 只缩 N 向)可行 → <b>A1b 是唯一可行的重切方案,无损失可言(B 不在可选集)</b>;</li>
|
||||
<li>$w=1$($N_{blk} < C$,如 B=8、N=512):核填不满,属降核/并行度不足场景,不在尾轮讨论范围。</li>
|
||||
<li>但 $mCnt=1$ 固定 → 方案 B 的全局重切只能沿 N 加密,$sN' = N/(n_{wave} C/\text{Batch})$ 常跌破 16 或 dValue 下限 → <b>方案 B 不可行</b>(§7.2.3(3));</li>
|
||||
<li>A1b 尾轮局部重切(tile $(M, sN_t)$ 只缩 N 向)可行 → <b>A1b 是唯一可行的重切方案,无损失可言(方案 B 不在可选集)</b>;</li>
|
||||
<li>$w=1$($N_{blk} < C$,如 Batch=8、N=512):核填不满,属降核/并行度不足场景,不在尾轮讨论范围。</li>
|
||||
</ul>
|
||||
<p><b>(3)主流场景损失结论</b></p>
|
||||
<table><tr><th>场景</th><th>主导项类型</th><th>B 可行性</th><th>B0/B1 相对 A1b 损失</th></tr>
|
||||
<table><tr><th>场景</th><th>主导项类型</th><th>方案 B 可行性</th><th>B0/B1 相对 A1b 损失</th></tr>
|
||||
<tr><td>prefill,$M,N$ 为 256 倍数</td><td>—</td><td>—</td><td>**0($r=0$ 无尾轮)**</td></tr>
|
||||
<tr><td>prefill,$M$ 奇异</td><td>面积型</td><td>可行</td><td><b>0(严格打平;离散 <3% 互有胜负)</b></td></tr>
|
||||
<tr><td>decode,$M \le 128$</td><td>周长型</td><td><b>常不可行</b></td><td>不可比(A1b 唯一可行)</td></tr>
|
||||
<tr><td>工作集超 L2 的大 B case</td><td>周长型</td><td>常不可行</td><td>不可比 / A1b 优</td></tr>
|
||||
<tr><td>周长型 + B 可行 + $\rho \ge \rho_{dv}$ + $n_{wave}=2$</td><td>周长型</td><td>可行</td><td>≤ <b>5.4%</b>($sN=256$)/ 16.6%($sN=512$,理论下界)</td></tr>
|
||||
<tr><td>面积型 + $r$ 小($\rho < 0.53$)</td><td>面积型(尾轮翻出周长型)</td><td>可行</td><td>≤ 0(B 微优 ~6%,翻出效应)</td></tr></table>
|
||||
<p>**v1.2 的"~30% 极端例损失"是 $k_{L1}$ 错误模型的产物<b>——正确模型(K 版 + 三维主导项)下该例(M=16896、N=512、K=140)为 FIX 面积型主导,A1b 与 B 打平(差异 <1%)。</b>主流 prefill/decode case 中 B1 零损失或不可比(B 不可行时 A1b 承接)——B1 在主流场景是安全的工程选择。**</p>
|
||||
<tr><td>工作集超 L2 的大 Batch case</td><td>周长型</td><td>常不可行</td><td>不可比 / A1b 优</td></tr>
|
||||
<tr><td>周长型 + 方案 B 可行 + $\rho \ge \rho_{dv}$ + $n_{wave}=2$</td><td>周长型</td><td>可行</td><td>≤ <b>5.4%</b>($sN=256$)/ 16.6%($sN=512$,理论下界)</td></tr>
|
||||
<tr><td>面积型 + $r$ 小($\rho < 0.53$)</td><td>面积型(尾轮翻出周长型)</td><td>可行</td><td>≤ 0(方案 B 微优 ~6%,翻出效应)</td></tr></table>
|
||||
<p>**v1.2 的"~30% 极端例损失"是 $k_{L1}$ 错误模型的产物<b>——正确模型(K 版 + 三维主导项)下该例(M=16896、N=512、K=140)为 FIX 面积型主导,A1b 与方案 B 打平(差异 <1%)。</b>主流 prefill/decode case 中 B1 零损失或不可比(方案 B 不可行时 A1b 承接)——B1 在主流场景是安全的工程选择。**</p>
|
||||
<h3>7.3 损失汇总与工程建议</h3>
|
||||
<table><tr><th>场景(修正模型:K 版 $T_{MTE2}$ + 三维主导项)</th><th>B0/B1 相对 A1b 的损失</th><th>说明</th></tr>
|
||||
<tr><td>面积型主导(MMAD:$K \ge 304$;FIX:$K < 304$ 且 tile 大)</td><td><b>0</b>(严格打平,总量守恒)</td><td>主流 prefill/decode 均属此类;离散对齐 <3% 互有胜负</td></tr>
|
||||
<tr><td>面积型主导 + $r$ 小($\rho < (187/s)^2$,尾轮翻出)</td><td>≤ 0(B 微优 ~6-8%)</td><td>翻出效应(§7.2.4),A1b 尾轮 tile 太小</td></tr>
|
||||
<tr><td>周长型主导(MTE2),B 可行,$\rho \ge \rho_{dv}$,$n_{wave}=2$</td><td>≤ <b>5.4%</b>($sN=256$)/ 16.6%($sN=512$,理论下界)</td><td>$f(\rho)-1$ 公式;实际 case 罕见</td></tr>
|
||||
<tr><td>周长型主导,B 不可行(decode 小 M、大 B 超 L2)</td><td>不可比(A1b 唯一可行)</td><td>可行性问题而非损失问题</td></tr>
|
||||
<tr><td>周长型主导,$\rho < \rho_{dv}$(A1b dValue 卡死)且 B 可行</td><td>≤ 0(B 反超)或打平</td><td>分界公式 §5.3(iii)</td></tr>
|
||||
<tr><td>面积型主导 + $r$ 小($\rho < (187/s)^2$,尾轮翻出)</td><td>≤ 0(方案 B 微优 ~6-8%)</td><td>翻出效应(§7.2.4),A1b 尾轮 tile 太小</td></tr>
|
||||
<tr><td>周长型主导(MTE2),方案 B 可行,$\rho \ge \rho_{dv}$,$n_{wave}=2$</td><td>≤ <b>5.4%</b>($sN=256$)/ 16.6%($sN=512$,理论下界)</td><td>$f(\rho)-1$ 公式;实际 case 罕见</td></tr>
|
||||
<tr><td>周长型主导,方案 B 不可行(decode 小 M、大 Batch 超 L2)</td><td>不可比(A1b 唯一可行)</td><td>可行性问题而非损失问题</td></tr>
|
||||
<tr><td>周长型主导,$\rho < \rho_{dv}$(A1b dValue 卡死)且方案 B 可行</td><td>≤ 0(方案 B 反超)或打平</td><td>分界公式 §5.3(iii)</td></tr>
|
||||
<tr><td>主流 prefill/decode case</td><td><b>0 ~ 2.5%</b></td><td>§7.2.5</td></tr></table>
|
||||
<p><b>工程建议</b>(v1.3 刷新):</p>
|
||||
<ol class="tight">
|
||||
<li><b>B1(无脑整数轮满核切)在主流场景是安全的</b>:面积型主导下与 A1b 时延严格相等(零损失);prefill 大 M/N 场景 $r=0$ 居多(256 倍数);</li>
|
||||
<li><b>decode 小 M 场景 B 常不可行</b>($mCnt=1$、分解自由度不足)——A1b 是唯一可行的重切方案,B1 门限须包含分解可行性检查,不可行时回落 A1b;</li>
|
||||
<li>**周长型 + B 可行 + $n_{wave}=2$ + $\rho=\rho_{dv}$ 的边角 case**损失理论 5.4%~16.6%(下界),此类 case 应落到 A1b 或按 §5.3 分界公式精确判定(B0);</li>
|
||||
<li><b>decode 小 M 场景方案 B 常不可行</b>($mCnt=1$、分解自由度不足)——A1b 是唯一可行的重切方案,B1 门限须包含分解可行性检查,不可行时回落 A1b;</li>
|
||||
<li>**周长型 + 方案 B 可行 + $n_{wave}=2$ + $\rho=\rho_{dv}$ 的边角 case**损失理论 5.4%~16.6%(下界),此类 case 应落到 A1b 或按 §5.3 分界公式精确判定(B0);</li>
|
||||
<li>v1.2 的"~30% 极端例损失"是 $k_{L1}$ 错误模型产物,修正模型下该例打平(<1%)——<b>不存在 30% 量级的真实损失场景</b>;</li>
|
||||
<li>B1 门限闭式(§7.1),host 端零成本。</li>
|
||||
</ol>
|
||||
<h2>八、边界说明</h2>
|
||||
<ol class="tight">
|
||||
<li><b>带宽模型敏感性</b>:访存 Bound 结论依赖"每核 MTE2 带宽上限 $BW_{pc}$"假设。若 HBM 为全局共享池(尾轮 $r$ 核可吃满 $W_{GM}$),A0 尾轮搬移时延已是 $\rho \cdot T_{load}$ 接近理想,A1b/B 的搬移增量无带宽补偿,结论反转。昇腾 950PR 的 MTE2 为每核独立 DMA 引擎、带宽按核数配平,采用固定份额结论;临界 case 建议实测复核。</li>
|
||||
<li><b>带宽模型敏感性</b>:访存 Bound 结论依赖"每核 MTE2 带宽上限 $BW_{pc}$"假设。若 HBM 为全局共享池(尾轮 $r$ 核可吃满 $W_{GM}$),A0 尾轮搬移时延已是 $\rho \cdot T_{load}$ 接近理想,A1b/方案 B 的搬移增量无带宽补偿,结论反转。昇腾 950PR 的 MTE2 为每核独立 DMA 引擎、带宽按核数配平,采用固定份额结论;临界 case 建议实测复核。</li>
|
||||
<li><b>A1b 的工程代价</b>:需两套 tile 参数(主轮大 tile + 尾轮小 tile)与尾轮区域的边界处理($r$ 个原块的并一般为 L 形,按矩形分解重切);host 端多一次枚举,NPU 侧 kernel 需支持尾轮 tile 尺寸切换。这些复杂度不改变时延结论,但影响实现成本。</li>
|
||||
<li><b>方形基准的适用条件</b>:§2.5 已述——K 全载时方形严格最优、L1 主导时仅面积相关。非方形分解的实际收益由同一目标函数评估,例 5 的非方形惩罚即此体现。</li>
|
||||
<li>**B 不整除 $N_{blk}'$**:$B \nmid N_{blk}'$ 时按 batch 分组切分、部分 batch 多一块,收益略降,判定不变。</li>
|
||||
<li>**Batch 不整除 $N_{blk}'$**:$\text{Batch} \nmid N_{blk}'$ 时按 batch 分组切分、部分 batch 多一块,收益略降,判定不变。</li>
|
||||
</ol>
|
||||
<hr>
|
||||
<h2>参考文献</h2>
|
||||
|
||||
Reference in New Issue
Block a user