v1.5: 同步HTML

This commit is contained in:
2026-08-28 03:07:34 +00:00
parent 0337ada40c
commit b77786e156

View File

@@ -287,14 +287,50 @@ $$</div>
<p>*SingleCoreM/N 的具体确定过程*host 端枚举,与尾轮处理联动):</p>
<ol class="tight">
<li>计算最少切分 $P = \lceil C/B \rceil$</li>
<li><b>若 P = 1</b>$mCnt = nCnt = 1$$\text{singleCoreM} = M$、$\text{singleCoreN} = N$检查约束 2L1 容量)与约束 3dValue满足则确定不满足则 K 分块($k_{L1} = \lfloor L1/(2(M{+}N) \cdot dtype) \rfloor_{16}$$k_{L1} \cdot dtype \ge 256\text{B}$,仍不满足则进入步骤 3</li>
<li><b>若 P &gt; 1</b>枚举 $(mCnt, nCnt)$$mCnt \cdot nCnt \ge P$,从 $\sqrt{PM/N}$ 附近的整数开始(方形优先),检查约束 2/3/4L1 容量、搬移效率、BaseM/N 整数倍)</li>
<li>计算尾波占比:$r = B \cdot mCnt \cdot nCnt \bmod C$,优先选 $r = 0$ 或 $r$ 大的组合</li>
<li>若 $n_{wave} = \lceil B \cdot mCnt \cdot nCnt / C \rceil \le 3$ 且 $r &gt; 0$,计算尾轮重切参数 $s^*$ 并评估重切后收益</li>
<li>选总时延最短的组合:$T_{total} = (n_{wave} - 1) \cdot T_{block} + T_{tail}$,其中 $T_{tail} = T_{block}/s^*$(重切)或 $T_{block}$(不重切)</li>
<li><b>若 P = 1B ≥ C</b>先试不切分 $mCnt = nCnt = 1$$\text{singleCoreM} = M$、$\text{singleCoreN} = N$约束 2$k_{L1} = \min(K,\; \lfloor L1/(2(M{+}N) \cdot dtype) \rfloor_{16})$检查约束 3$k_{L1} \cdot dtype \ge 256\text{B}$满足则确定。不满足L1 放不下且 $k_{L1}$ 降无可降)则进入步骤 3 强制切分</li>
<li><b>若 P &gt; 1(必须切分)——完整枚举</b>枚举不是随意挑几个组合试,而是<b>遍历整个可行空间、每个候选计算搬入时延、取最优</b></li>
</ol>
<p>*与源码的差异*:源码用 cubeBound 模型 + balanceRate ≥ 0.9 剪枝,不解耦 SingleCoreM/N 与 BaseM/NbaseM=256 已是 SingleCore 级参数L0 tile 由 stepM/stepN 二次切分。理论的两层分离使约束链更清晰——SingleCoreM/N 由 L1 + 并行度 + 搬移效率决定BaseM/N 由 L0C 决定,各司其职。</p>
<p>*例*B=8、M=N=2048、K=1024、BF16$\lceil C/B \rceil = 4$,取 $mCnt = nCnt = 2$ → singleCoreM = singleCoreN = 1024。BaseM = BaseN = $\lfloor\sqrt{32768}\rfloor_{16} = 176$。SingleCoreM/BaseM = 1024/176 ≈ 5.8 → 取 5整数倍→ singleCoreM = 880。约束 2$k_{L1} \le 512\text{KB}/(2 \times 1760 \times 2\text{B}) = 74$ → 取 6416 对齐)= 128B ✓。</p>
<p> <b>a. 枚举空间(有界)</b>:由约束 4 给出上界 $mCnt \le \lceil M/\text{BaseM} \rceil$、$nCnt \le \lceil N/\text{BaseN} \rceil$SingleCore 不能小于 Base约束 1 给出 $B \cdot mCnt \cdot nCnt \ge C$。候选数最多 $\lceil M/\text{BaseM} \rceil \times \lceil N/\text{BaseN} \rceil$(如 M=N=4096、Base=256 时 256 个host 端遍历开销可忽略</p>
<p> <b>b. 每个候选的评估流水线</b>$(mCnt, nCnt) \to$ 对齐 $\to$ 约束过滤 $\to$ 目标值):</p>
<div class="math"> $$
\text{singleCoreM} = \text{Align}_{16}\Big(\Big\lceil \frac{M}{mCnt} \Big\rceil\Big),\qquad \text{singleCoreN} = \text{Align}_{16}\Big(\Big\lceil \frac{N}{nCnt} \Big\rceil\Big)
$$</div>
<p> *约束 4 过滤*singleCoreM/singleCoreN 是 BaseM/BaseN 的整数倍;*约束 2 求 $k_{L1}$*</p>
<div class="math"> $$
k_{L1} = \min\Big(K,\; \Big\lfloor \frac{L1}{2 \cdot (\text{singleCoreM} + \text{singleCoreN}) \cdot dtype} \Big\rfloor_{16}\Big)
$$</div>
<p> *约束 3 过滤*$k_{L1} \cdot dtype \ge 256\text{B}$ 且 $\text{singleCoreM} \cdot k_{L1} \cdot dtype \ge min\_TileSize$ 且 $k_{L1} \cdot \text{singleCoreN} \cdot dtype \ge min\_TileSize$</p>
<p> *目标值§3 时延模型的搬移项)*</p>
<div class="math"> $$
T_{MTE2} = \frac{MN}{C/B} \cdot \Big(\frac{1}{\text{singleCoreM}} + \frac{1}{\text{singleCoreN}}\Big) \cdot \frac{k_{L1} \cdot dtype}{BW_{pc}}
$$</div>
<p> **c. 为什么目标函数是 $T_{MTE2}$**$T_{MMAD} = 2BMNK/(C \cdot Q_{16})$ 与 $T_{FIX} = B \cdot MN \cdot outB/(C \cdot W_{pc})$ 只依赖全量 B/M/N/K<b>与切分无关</b>——候选之间的唯一差异在搬入时延§3。约束 2/3/4 只是可行性过滤,<b>不足以选最优</b>:多个可行解的 $T_{MTE2}$ 可差 2 倍§6.3 源码过度切分示例)</p>
<p> <b>d. 最优选取</b>:通过全部约束的候选中取 $T_{MTE2}$ 最小者;并列时取尾轮块数 $r = B \cdot mCnt \cdot nCnt \bmod C$ 最大者尾轮块越多§5.3 重切的 $s^*$ 越小、越省)</p>
<ol class="tight">
<li><b>尾轮修正</b>$n_{wave} = \lceil B \cdot mCnt \cdot nCnt / C \rceil \le 3$ 且 $r &gt; 0$ 时,按 §5.3 计算重切因子 $s^*$,尾轮时延 $T_{tail} = T_{block}/s^*$;否则 $T_{tail} = T_{block}$r=0 时为 0</li>
</ol>
<ol class="tight">
<li><b>端到端校验</b>$T = \max(T_{MTE2},\; T_{MMAD},\; T_{FIX}) + T_{tail}$。若选出的候选 $T_{MTE2} &lt; T_{MMAD}$(搬移被计算掩盖),候选间差异失效,此时以尾轮最优者为准</li>
</ol>
<p>*完整实例*B=8、M=N=2048、K=1024、BF16BaseM=BaseN=256、$min\_TileSize$=16KB</p>
<ul class="tight">
<li>$P = \lceil 32/8 \rceil = 4$,进入步骤 3。枚举空间 $mCnt, nCnt \le \lceil 2048/256 \rceil = 8$$8 \cdot mCnt \cdot nCnt \ge 32$</li>
<li>枚举与评估:</li>
</ul>
<table><tr><th>(mCnt, nCnt)</th><th>sM × sN</th><th>$k_{L1}$(约束 2 上限16 对齐)</th><th>约束 3 过滤</th><th>$T_{MTE2} \propto (1/sM + 1/sN) \cdot k_{L1}$</th></tr>
<tr><td>(2, 2)</td><td>1024 × 1024</td><td>64128B</td><td>✗ dValue &lt; 256B</td><td></td></tr>
<tr><td>(4, 2)</td><td>512 × 1024</td><td>80160B</td><td></td><td></td></tr>
<tr><td>(4, 4)</td><td>512 × 512</td><td>128256B</td><td>512×128×2 = 128KB ≥ 16KB</td><td>0.500</td></tr>
<tr><td>(8, 4)</td><td>256 × 512</td><td>160320B</td><td></td><td>0.938</td></tr>
<tr><td>(4, 8)</td><td>512 × 256</td><td>160</td><td></td><td>0.938</td></tr>
<tr><td>(8, 8)</td><td>256 × 256</td><td>256512B</td><td></td><td>2.000</td></tr></table>
<p> $k_{L1}$ 上限公式:$\lfloor 131072/(sM{+}sN) \rfloor$131072 = L1/(2·dtype) = 512KB/4B。评估过程展示三个要点</p>
<ol class="tight">
<li><b>最少切分 (2,2) 不可行</b>$k_{L1} \le 64$ 元素 = 128B违反 dValue ≥ 256B——若只做约束 1并行度检查会在 (2,2) 上误判达标,必须连同约束 2/3 一起过滤;</li>
<li><b>多个候选通过约束</b>(4,4)、(8,4)、(4,8)、(8,8) 都满足约束 2/3/4——<b>约束检查不足以选最优</b>,必须计算目标函数;</li>
<li>**目标函数 $T_{MTE2}$ 定最优**:拉格朗日方形点 (4,4) 的搬入时延 0.500 最小(比 (8,4) 省 47%、比 (8,8) 省 75%)。注意此处 $k_{L1}$ 是变量K=1024 未截断、由 L1 容量决定),故 $T_{MTE2} \propto (1/sM + 1/sN) \cdot k_{L1}$ 而非 §5.2 的简化式 $(1/sM + 1/sN)$。最终 (4,4):总块数 $8 \times 16 = 128$$r = 128 \bmod 32 = 0$ 完美整除、无尾轮</li>
</ol>
<p>*与源码的差异*:源码用 cubeBound 模型 + balanceRate ≥ 0.9 剪枝,不解耦 SingleCoreM/N 与 BaseM/NbaseM=256 已是 SingleCore 级参数L0 tile 由 stepM/stepN 二次切分),且枚举目标为"算存比/负载均衡帕累托"而非"搬入时延最小"。理论的两层分离使约束链更清晰、目标函数($T_{MTE2}$有闭式表达——SingleCoreM/N 由 L1 + 并行度 + 搬移效率决定BaseM/N 由 L0C 决定,各司其职。</p>
<h3>5.3 mCnt / nCnt 与核间分配(含尾轮处理)</h3>
<div class="math">$$
mCnt = \Big\lceil \frac{M}{\text{singleCoreM}} \Big\rceil,\qquad nCnt = \Big\lceil \frac{N}{\text{singleCoreN}} \Big\rceil