v0.96: 恢复第八章ASW_Basic章节头+进入条件+StreamK实现方案
This commit is contained in:
@@ -433,6 +433,42 @@ max 取更严格的 8192。修正后的归约阈值(θ_c≈12,grid_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_TileSize、dValue 跌破 128B,搬移效率崩塌,反而更慢),不如**只用 ⌈P⌉ 个核**、每核承担一个完整输出块(L0C 满载粒度),其余核闲置。这类 case 的时延绝对值小,继续切分引入的调度与搬移效率损失大于并行收益——降核是理性选择而非偷懒。
|
||||
|
||||
### 实现方案
|
||||
|
||||
|
||||
**Step 0:BaseM / BaseN 的确定**(L0 级 tile,先把 L0C 用满)
|
||||
|
||||
L0C 是 Cube 的累加器,BaseM × BaseN 是每次 Cube 计算的输出 tile。BaseM/N 应**尽量把 L0C 用满**——L0C 利用率越高,每次 Cube 计算的输出越大,单位计算的启动/排空开销摊得越薄:
|
||||
|
||||
Reference in New Issue
Block a user