第十章:加方法论说明、密集采样(3.2亿case)、线性对比
This commit is contained in:
@@ -443,28 +443,36 @@ $$
|
|||||||
|
|
||||||
## 十、case 遍历:各分支的覆盖区域
|
## 十、case 遍历:各分支的覆盖区域
|
||||||
|
|
||||||
对 $B \in [1, 2048]$、$M,N,K \in [1, 10240]$ 按对数网格采样 20736 个 case,严格按上述进入条件分类(BF16),结果:
|
### 方法论说明
|
||||||
|
|
||||||
### 分支覆盖统计
|
**采样方式**:B ∈ [1, 2048] 全量遍历(2048 个值),M/N/K ∈ [1, 10240] 对数网格采样 60 点/维(值按指数增长:1, 2, 3, 5, 7, 10, 14, 19, 26, 35, ...)。总 case 数 3.2 亿,耗时约 4 分钟。
|
||||||
|
|
||||||
|
**为什么不做全量遍历**:全量 = 2048 × 10240³ ≈ 2.2×10¹⁵ 个 case。Python 分类器约需 1400 万小时,C 实现约需 6 万小时——完全不可行。对数采样在小值区密集、大值区稀疏,恰好覆盖了分支边界集中的区域。
|
||||||
|
|
||||||
|
**分布依赖测度**:对数均匀采样和线性均匀采样给出的分支占比**不同**。对数采样在小值区密集,特殊分支(K=0/1)、降核 ASW(P 小)、StreamK(K 大但 M/N 小)的占比被放大;线性采样被大 shape 主导(M/N/K > 512 占 [1,10240] 的 95%+),ASW_Basic 占比显著升高。**本文遍历的目的是验证覆盖性(无空洞),不是统计真实工作负载的分布。**
|
||||||
|
|
||||||
|
### 分支覆盖统计(对数采样,B 全量 2048,M/N/K 60 点/维,共 3.2 亿 case)
|
||||||
|
|
||||||
| 分支 | case 数 | 占比 | B 范围 | 区域特征 |
|
| 分支 | case 数 | 占比 | B 范围 | 区域特征 |
|
||||||
|---|---|---|---|---|
|
|---|---|---|---|---|
|
||||||
| ASW_Basic | 7290 | 35.2% | 2 ~ 2048 | 通用:B<C 且 P≥C;或 B≥C 但 L1 四形态不满足(M/N 大) |
|
| ASW_Basic | 1.75 亿 | 54.1% | 2 ~ 2048 | 通用:B<C 且 P≥C;或 B≥C 但 L1 四形态不满足(M/N 大) |
|
||||||
| IterBatch | 4544 | 21.9% | 32 ~ 2048 | B≥C、负载均衡、L1 四形态之一满足 |
|
| MergeBatch | 6303 万 | 19.5% | 97 ~ 2048 | $b_{core}\ge 4$ 且 $MN \le 8192$ 等五条全过 |
|
||||||
| 降核 ASW_Basic | 3288 | 15.9% | 2 ~ 128 | P<C 且 K 不满足 StreamK 阈值 → 只用 ⌈P⌉ 核(定义与实现见 §八.6) |
|
| 降核 ASW_Basic | 4051 万 | 12.6% | 2 ~ 2048 | P<C 且 K 不满足 StreamK 阈值 → 只用 ⌈P⌉ 核 |
|
||||||
| 特殊分支 | 1728 | 8.3% | 任意 | K=0 / K=1 |
|
| IterBatch | 3804 万 | 11.8% | 32 ~ 2048 | B≥C、负载均衡、L1 四形态之一满足 |
|
||||||
| MergeBatch | 1674 | 8.1% | 128 ~ 2048 | $b_{core}\ge 4$ 且 $MN \le L0C/(2b_0^2\cdot4\text{B})=8192$ 等五条全过 |
|
| 特殊分支 | 597 万 | 1.9% | 任意 | K=0 / K=1 |
|
||||||
| 转Matmul | 1584 | 7.6% | B=1 | 单边 batch=1 |
|
| StreamK | 25 万 | 0.08% | 2 ~ 128 | P<C/2 且 K≥8192 |
|
||||||
| StreamK | 628 | 3.0% | 2 ~ 128 | P<C/2 且 K≥8192 |
|
| 转Matmul | 15 万 | 0.05% | B=1 | 单边 batch=1 |
|
||||||
|
|
||||||
### IterBatch 四形态命中分布
|
**对照:线性等距采样**(M/N/K 步长 256,B 全量,共 1.3 亿 case)下 ASW_Basic 占比升至 92.1%,MergeBatch 降至 3.6%——因为线性采样被大 shape 主导。两种测度的结论一致:**无空分支、无覆盖空洞**,只是占比不同。
|
||||||
|
|
||||||
| 形态 | 命中数 | 说明 |
|
### IterBatch 四形态命中分布(对数采样)
|
||||||
|---|---|---|
|
|
||||||
| b) 双 batch 乒乓 | 1787 | 最多:B 大且单 batch 较小 |
|
| 形态 | 命中数 | 占比 | 说明 |
|
||||||
| d) 两侧切 K | 1456 | 次之:K 可切段的通用兜底 |
|
|---|---|---|---|
|
||||||
| c) 一侧驻留+对侧切 K | 773 | 单侧可驻留(含 b_core≥2 的半预算预取档 522 个) |
|
| b) 双 batch 乒乓 | 2684 万 | 70.5% | 最多:B 大且单 batch 较小 |
|
||||||
| a) 单 batch 全驻留 | 528 | B=C 附近 |
|
| d) 两侧切 K | 741 万 | 19.5% | 次之:K 可切段的通用兜底 |
|
||||||
|
| c) 一侧驻留+对侧切 K | 370 万 | 9.7% | 单侧可驻留(含 b_core≥2 的半预算预取档) |
|
||||||
|
| a) 单 batch 全驻留 | 9 万 | 0.2% | B=C 附近的窄区 |
|
||||||
|
|
||||||
### 典型边界 case
|
### 典型边界 case
|
||||||
|
|
||||||
@@ -484,8 +492,8 @@ $$
|
|||||||
|
|
||||||
### 遍历结论
|
### 遍历结论
|
||||||
|
|
||||||
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/2 且 K≥8192**:B 小、M/N 小、K 大的"细长" case;C/2 ≤ P < C 且 K 大的 98 个 case 由降核 ASW_Basic 承接(切 2 路 K 会超核数,不切又不满核,不如直接用 ⌈P⌉ 核);
|
4. **StreamK 的区域为 P<C/2 且 K≥8192**:B 小、M/N 小、K 大的"细长" case;C/2 ≤ P < C 且 K 大的 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 小区域的理性归宿**(占 12.6%):并行度凑不满、切 K 又不划算时,只用 ⌈P⌉ 个核、每核一个 L0C 满载输出块,比强行碎切(tile 跌破搬移效率下限)更快。
|
||||||
|
|||||||
Reference in New Issue
Block a user