v1.2: 重切约束补推导链——两级阈值(min_TileSize/256B)+对齐约束+退化条件

This commit is contained in:
2026-08-27 06:53:54 +00:00
parent d443f7d7e5
commit 9583588f8a

View File

@@ -205,21 +205,33 @@ $$
$n_{wave} = 2$、$s = C/r$ $r=16$ 收益 25%$r=8$ 收益 37.5%。$n_{wave} = 3$ $r=16$ 16.7%$r=8$ 25%。**$n_{wave} \le 3$ 时收益显著应重切。** $n_{wave} = 2$、$s = C/r$ $r=16$ 收益 25%$r=8$ 收益 37.5%。$n_{wave} = 3$ $r=16$ 16.7%$r=8$ 25%。**$n_{wave} \le 3$ 时收益显著应重切。**
*重切约束*小块仍须满足搬移效率和对齐 *重切约束的推导*沿 N $s$ 份后小块的 N 维度变为 $\text{singleCoreN}_{tail} = \text{singleCoreN}/s$。小块仍须满足两类约束
1. **搬移效率**与主 tile 同一标准GML1 搬移 B 矩阵时dValue = $k_{L1} \cdot \text{singleCoreN}_{tail} \cdot \text{dtype}$。v0.98 §六约束 3 要求 dValue min_TileSize推荐 16KB带宽利用率保障硬件最低要求 dValue 256BDMA 突发下限)。两级阈值
$$ $$
s \le \frac{\text{singleCoreN} \cdot k_{L1} \cdot \text{dtype}}{256\text{B}} \quad (\text{沿 N }),\qquad s \le \frac{\text{singleCoreM}}{16} \quad (\text{16 对齐}) s \le \frac{k_{L1} \cdot \text{singleCoreN} \cdot \text{dtype}}{min\_TileSize} \quad (\text{推荐}),\qquad s \le \frac{k_{L1} \cdot \text{singleCoreN} \cdot \text{dtype}}{256\text{B}} \quad (\text{硬件底线})
$$ $$
*最优切分因子*在不违反约束的前提下尽量让 $r \cdot s$ 接近 $C$ 2. **对齐**$\text{singleCoreN}_{tail} \ge 16$Cube 基本块 N 向粒度
$$ $$
s^* = \min\Big(\Big\lfloor \frac{C}{r} \Big\rfloor,\; \frac{\text{singleCoreN} \cdot k_{L1} \cdot \text{dtype}}{256\text{B}},\; \frac{\text{singleCoreM}}{16}\Big) s \le \frac{\text{singleCoreN}}{16}
$$ $$
*例*C=32、$N_{blk}=40$、$n_{wave}=2$、$r=8$、singleCoreM=singleCoreN=256、$k_{L1}$=128、BF16$s^* = \min(4,\; 256,\; 16) = 4$。尾轮 8 块沿 N 4 32 个小块每块 [256, 64]32 核满载尾波时延从 $T_{block}$ 降至 $T_{block}/4$。总时延节省 37.5% 沿 M 切时对称singleCoreM 替换 singleCoreNdValue 约束作用于 A 矩阵的 $\text{singleCoreM}_{tail} \cdot k_{L1} \cdot \text{dtype}$
*切分方向选择*优先沿 N 保持 A 行带完整L2 A 数据不变 N 向约束不满足$s$ dValue 卡住改沿 M M/N 都不可行时退化为不重切 *最优切分因子*在不违反上述约束的前提下尽量让 $r \cdot s$ 接近 $C$。优先用推荐阈值min_TileSize $s$ 太小导致 $r \cdot s \ll C$重切收益不明显退而用硬件底线256B
$$
s^* = \min\Big(\Big\lfloor \frac{C}{r} \Big\rfloor,\; \frac{k_{L1} \cdot \text{singleCoreN} \cdot \text{dtype}}{min\_TileSize},\; \frac{\text{singleCoreN}}{16}\Big)
$$
$r \cdot s^* < C/2$重切后仍不满半改用硬件底线重算 $s^*$若仍 $< C/2$退化为不重切
*例*C=32、$N_{blk}=40$、$n_{wave}=2$、$r=8$、singleCoreM=singleCoreN=256、$k_{L1}$=128、BF16推荐阈值 $s \le 128 \times 256 \times 2 / 16384 = 4$;对齐 $s \le 256/16 = 16$$\lfloor C/r \rfloor = 4$。$s^* = \min(4, 4, 16) = 4$。尾轮 8 块沿 N 4 32 个小块每块 [256, 64]32 核满载尾波时延从 $T_{block}$ 降至 $T_{block}/4$。总时延节省 37.5%。
*切分方向选择*优先沿 N 保持 A 行带完整L2 A 数据不变 N 向约束不满足$s^*$ min_TileSize 或对齐卡住改沿 M M/N 都不可行时退化为不重切
**结论**$n_{wave} \le 3$ $r < C$ 时应重切尾轮——host 端零代价NPU 端收益 $T_{block}(1-1/s^*)$。$n_{wave} \ge 4$ 时收益 < 25%可不重切通过选择使尾波占比小的 mCnt/nCnt 组合来优化)。 **结论**$n_{wave} \le 3$ $r < C$ 时应重切尾轮——host 端零代价NPU 端收益 $T_{block}(1-1/s^*)$。$n_{wave} \ge 4$ 时收益 < 25%可不重切通过选择使尾波占比小的 mCnt/nCnt 组合来优化)。