修正 StreamK 进入条件:P<C → P<C/2(grid_K≥2 需 P×2≤C)
This commit is contained in:
@@ -247,14 +247,14 @@ $b_{core} \ge 2$ 时另一半 L1 在计算期间预取下一 batch 的驻留侧
|
|||||||
|
|
||||||
### 进入分支条件(汇总)
|
### 进入分支条件(汇总)
|
||||||
|
|
||||||
1. $P = \dfrac{B \cdot MN \cdot 4\text{B}}{L0C} < C$
|
1. $P = \dfrac{B \cdot MN \cdot 4\text{B}}{L0C} < \dfrac{C}{2}$
|
||||||
2. $\dfrac{K}{grid_K} \ge \dfrac{256\text{B}}{\text{dtype}}$
|
2. $\dfrac{K}{grid_K} \ge \dfrac{256\text{B}}{\text{dtype}}$
|
||||||
3. $K \ge grid_K^{\,2} \cdot \theta$,其中 $\theta \approx 1.1\times10^{2}$(部分和驻留 L2、AIV 归约的方案;部分和落 GM 时 $\theta \approx 1.7\times10^{3}$)
|
3. $K \ge grid_K^{\,2} \cdot \theta$,其中 $\theta \approx 1.1\times10^{2}$(部分和驻留 L2、AIV 归约的方案;部分和落 GM 时 $\theta \approx 1.7\times10^{3}$)
|
||||||
4. 工程约束:确定性等级 ≤ 1(核间归约顺序不定);ND 格式
|
4. 工程约束:确定性等级 ≤ 1(核间归约顺序不定);ND 格式
|
||||||
|
|
||||||
### 逐条解释
|
### 逐条解释
|
||||||
|
|
||||||
1. **并行缺口**:P 以"L0C 满载的输出基本块"为粒度估计不切 K 的最大并行度——基本块按 L0C 最大利用率取($M^t N^t \cdot 4\text{B} = L0C$),免去预先估计 M/N 具体切分。P < C 意味着即使按最大块切,B/M/N 三维也填不满 32 核,唯一剩余的并行维度是 K。
|
1. **并行缺口**:P 以"L0C 满载的输出基本块"为粒度估计不切 K 的最大并行度——基本块按 L0C 最大利用率取($M^t N^t \cdot 4\text{B} = L0C$),免去预先估计 M/N 具体切分。**阈值取 C/2 而非 C**:StreamK 的定义就是 grid_K ≥ 2(至少 2 路切 K),且同一 batch 内所有输出块共享同一个 grid_K;grid_K=2 时每块需要 2 个核,总核数需求 = P × 2 ≤ C,即 P ≤ C/2。若 C/2 ≤ P < C,切 2 路就超核数(2P > C),不切又浪费一半核——这个区间由降核 ASW_Basic 承接更合适。P < C/2 才意味着不切 K 时连一半核都填不满,K 是唯一剩余的并行维度。
|
||||||
2. **单核 K 段下限**:每核 K 段内轴连续长度不小于 dValue 推荐值 256B(BF16 为 128 元素),保证段内搬移效率不崩。
|
2. **单核 K 段下限**:每核 K 段内轴连续长度不小于 dValue 推荐值 256B(BF16 为 128 元素),保证段内搬移效率不崩。
|
||||||
3. **归约代价可接受**。先按实现流程看清 $T_{Reduce}$ 的构成。StreamK 每个输出块的执行分三步:
|
3. **归约代价可接受**。先按实现流程看清 $T_{Reduce}$ 的构成。StreamK 每个输出块的执行分三步:
|
||||||
|
|
||||||
@@ -451,11 +451,11 @@ $$
|
|||||||
|---|---|---|---|---|
|
|---|---|---|---|---|
|
||||||
| ASW_Basic | 7290 | 35.2% | 2 ~ 2048 | 通用:B<C 且 P≥C;或 B≥C 但 L1 四形态不满足(M/N 大) |
|
| ASW_Basic | 7290 | 35.2% | 2 ~ 2048 | 通用:B<C 且 P≥C;或 B≥C 但 L1 四形态不满足(M/N 大) |
|
||||||
| IterBatch | 4544 | 21.9% | 32 ~ 2048 | B≥C、负载均衡、L1 四形态之一满足 |
|
| IterBatch | 4544 | 21.9% | 32 ~ 2048 | B≥C、负载均衡、L1 四形态之一满足 |
|
||||||
| 降核 ASW_Basic | 3190 | 15.4% | 2 ~ 128 | P<C 且 K 不满足 StreamK 阈值 → 只用 ⌈P⌉ 核(定义与实现见 §八.6) |
|
| 降核 ASW_Basic | 3288 | 15.9% | 2 ~ 128 | P<C 且 K 不满足 StreamK 阈值 → 只用 ⌈P⌉ 核(定义与实现见 §八.6) |
|
||||||
| 特殊分支 | 1728 | 8.3% | 任意 | K=0 / K=1 |
|
| 特殊分支 | 1728 | 8.3% | 任意 | K=0 / K=1 |
|
||||||
| MergeBatch | 1674 | 8.1% | 128 ~ 2048 | $b_{core}\ge 4$ 且 $MN \le L0C/(2b_0^2\cdot4\text{B})=8192$ 等五条全过 |
|
| MergeBatch | 1674 | 8.1% | 128 ~ 2048 | $b_{core}\ge 4$ 且 $MN \le L0C/(2b_0^2\cdot4\text{B})=8192$ 等五条全过 |
|
||||||
| 转Matmul | 1584 | 7.6% | B=1 | 单边 batch=1 |
|
| 转Matmul | 1584 | 7.6% | B=1 | 单边 batch=1 |
|
||||||
| StreamK | 726 | 3.5% | 2 ~ 128 | P<C 且 K≥8192 |
|
| StreamK | 628 | 3.0% | 2 ~ 128 | P<C/2 且 K≥8192 |
|
||||||
|
|
||||||
### IterBatch 四形态命中分布
|
### IterBatch 四形态命中分布
|
||||||
|
|
||||||
@@ -487,5 +487,5 @@ $$
|
|||||||
1. **六个分支全部有真实 case 命中**,无空分支;覆盖矩阵无空洞(P<C 且 K 小的残余由降核 ASW_Basic 兜底——此时时延绝对值小,调度开销主导,分支选择不敏感);
|
1. **六个分支全部有真实 case 命中**,无空分支;覆盖矩阵无空洞(P<C 且 K 小的残余由降核 ASW_Basic 兜底——此时时延绝对值小,调度开销主导,分支选择不敏感);
|
||||||
2. **MergeBatch 的区域由条件 2($MN \le 8192$)与条件 3(min_DatamountPerCore)夹出**:小 M×N 且单核搬移量足够的大 batch case,两个条件缺一不可。典型分界对照:B=128/M=N=64 时 K=256 → 单核搬移 256KB 不达标落 IterBatch,K=512 → 512KB 达标进 MergeBatch;
|
2. **MergeBatch 的区域由条件 2($MN \le 8192$)与条件 3(min_DatamountPerCore)夹出**:小 M×N 且单核搬移量足够的大 batch case,两个条件缺一不可。典型分界对照:B=128/M=N=64 时 K=256 → 单核搬移 256KB 不达标落 IterBatch,K=512 → 512KB 达标进 MergeBatch;
|
||||||
3. **IterBatch 与 ASW_Basic 的分界就是 L1 四形态是否满足**:单 batch 输入 $(MK+KN)\cdot\text{dtype}$ 相对 L1 的比例决定归属——这正是"核内零重复读"原则的定量体现;
|
3. **IterBatch 与 ASW_Basic 的分界就是 L1 四形态是否满足**:单 batch 输入 $(MK+KN)\cdot\text{dtype}$ 相对 L1 的比例决定归属——这正是"核内零重复读"原则的定量体现;
|
||||||
4. **StreamK 的区域为 P<C 且 K≥8192**:B 小、M/N 小、K 大的"细长" case,与理论预期一致;
|
4. **StreamK 的区域为 P<C/2 且 K≥8192**:B 小、M/N 小、K 大的"细长" case;C/2 ≤ P < C 且 K 大的 98 个 case 由降核 ASW_Basic 承接(切 2 路 K 会超核数,不切又不满核,不如直接用 ⌈P⌉ 核);
|
||||||
5. **降核 ASW_Basic 是 P<C 且 K 小区域的理性归宿**(B∈[2,128],占 15.4%):并行度凑不满、切 K 又不划算时,只用 ⌈P⌉ 个核、每核一个 L0C 满载输出块,比强行碎切(tile 跌破搬移效率下限)更快。
|
5. **降核 ASW_Basic 是 P<C 且 K 小区域的理性归宿**(B∈[2,128],占 15.4%):并行度凑不满、切 K 又不划算时,只用 ⌈P⌉ 个核、每核一个 L0C 满载输出块,比强行碎切(tile 跌破搬移效率下限)更快。
|
||||||
|
|||||||
Reference in New Issue
Block a user