diff --git a/BMM算子优化分析_Release/BMM算子优化分析_v0.96.html b/BMM算子优化分析_Release/BMM算子优化分析_v0.96.html index 72a5148..80f4674 100644 --- a/BMM算子优化分析_Release/BMM算子优化分析_v0.96.html +++ b/BMM算子优化分析_Release/BMM算子优化分析_v0.96.html @@ -361,6 +361,30 @@ $$
max 取更严格的 8192。修正后的归约阈值(θ_c≈12,grid_K=32 时 K>396)远低于 8192,说明 8192 的绑定约束是 dValue(条件 2),不是归约代价(条件 3)。源码不动态计算 grid_K,用固定阈值同时覆盖条件 2 的最保守情形和条件 3,是两条条件的保守合并近似。
核间组织:先按 B/M/N 切出输出块,剩余核预算折成 K 向份数:
+mCnt、nCnt 收拢为 blocksPerBatch 的因子(避免碎核尾块);由条件 1 知 $mCnt \cdot nCnt \le blocksPerBatch/2$,故 $grid_K \ge 2$。归约组内核 c 负责 K 段 $[cK/grid_K,\; (c{+}1)K/grid_K)$。
+核内流水:对自己的 K 段做标准分块流水(MTE2→L1→L0→mmad),段内多轮在 L0C 原地累加;段完部分和经 Fixpipe 写出。
+归约:$grid_K$ 个核的部分和经归约(Fixpipe 模式或 AIV)求和为最终结果。
+ASW_Basic 是 BMM 的兜底分支——核间切 M/N(或混合切),不做 batch 合并或 K 维切分。它是实践中最常命中的分支:B 可大可小可等 1,交叉广播也由此承接。
+Step 0:BaseM / BaseN 的确定(L0 级 tile,先把 L0C 用满)
L0C 是 Cube 的累加器,BaseM × BaseN 是每次 Cube 计算的输出 tile。BaseM/N 应尽量把 L0C 用满——L0C 利用率越高,每次 Cube 计算的输出越大,单位计算的启动/排空开销摊得越薄: