v0.96: 恢复第八章ASW_Basic章节头+进入条件+StreamK实现方案

This commit is contained in:
2026-08-26 12:19:27 +00:00
parent 5b92289a54
commit 1326cd8ec2

View File

@@ -433,6 +433,42 @@ max 取更严格的 8192。修正后的归约阈值θ_c≈12grid_K=32 时
### 实现方案
**核间组织**:先按 B/M/N 切出输出块,剩余核预算折成 K 向份数:
$$
blocksPerBatch = \Big\lfloor \frac{C}{B} \Big\rfloor,\qquad
grid_K = \frac{blocksPerBatch}{mCnt \cdot nCnt}
$$
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 分支
ASW_Basic 是 BMM 的**兜底分支**——核间切 M/N或混合切不做 batch 合并或 K 维切分。它是实践中最常命中的分支B 可大可小可等 1交叉广播也由此承接。
### 进入分支条件(汇总)
1. $P = \dfrac{B \cdot MN \cdot 4\text{B}}{L0C} \ge C$(并行度补齐)
2. 无 batch 结构限制BatchA=BatchB、交叉广播均可典型进入路径$B < C$ B 买不满核 $B \ge C$ IterBatch/MergeBatch 条件不满足时的兜底
3. **降核模式**$P < C$ 且不满足 StreamK 进入条件 只用 $\lceil P \rceil$ 个核其余核闲置
### 逐条解释
1. **并行度补齐** L0C 满载为基本块粒度B×M×N 能切出至少 C 个独立输出块则切 M/N或混合切并行度够用 M/N 的固有代价是共享矩阵被多核重复读但共享部分驻留 128MB L2 时重复读以 5.2TB/s 命中 L2 而非 1.6TB/s GM代价大部分被吸收
2. **兜底性质**ASW_Basic 是实践中最常命中的分支——B 可大可小可等 1交叉广播也由此承接对广播侧做 L1/L2 驻留共享关系与切 M/N 同构)。
3. **降核模式**P < C K 也不够格走 StreamK 并行度凑不满核此时与其强行把 M/N 切得更碎tile 跌破 min_TileSizedValue 跌破 128B搬移效率崩塌反而更慢不如**只用 P 个核**、每核承担一个完整输出块L0C 满载粒度其余核闲置这类 case 的时延绝对值小继续切分引入的调度与搬移效率损失大于并行收益——降核是理性选择而非偷懒
### 实现方案
**Step 0BaseM / BaseN 的确定**L0 tile先把 L0C 用满
L0C Cube 的累加器BaseM × BaseN 是每次 Cube 计算的输出 tileBaseM/N **尽量把 L0C 用满**——L0C 利用率越高每次 Cube 计算的输出越大单位计算的启动/排空开销摊得越薄