第十章:加方法论说明、密集采样(3.2亿case)、线性对比

This commit is contained in:
2026-08-23 12:00:37 +00:00
parent 80aadc10ed
commit 17763f0bed

View File

@@ -443,28 +443,36 @@ $$
## 十、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¹⁵ casePython 分类器约需 1400 万小时C 实现约需 6 万小时——完全不可行对数采样在小值区密集大值区稀疏恰好覆盖了分支边界集中的区域
**分布依赖测度**对数均匀采样和线性均匀采样给出的分支占比**不同**。对数采样在小值区密集特殊分支K=0/1、降核 ASWP )、StreamKK 大但 M/N 的占比被放大线性采样被大 shape 主导M/N/K > 512 占 [1,10240] 的 95%+ASW_Basic 占比显著升高。**本文遍历的目的是验证覆盖性(无空洞),不是统计真实工作负载的分布。**
### 分支覆盖统计对数采样B 全量 2048M/N/K 60 点/维,共 3.2 亿 case
| 分支 | case 数 | 占比 | B 范围 | 区域特征 |
|---|---|---|---|---|
| ASW_Basic | 7290 | 35.2% | 2 ~ 2048 | 通用B<C PC BC L1 四形态不满足M/N |
| IterBatch | 4544 | 21.9% | 32 ~ 2048 | BC负载均衡L1 四形态之一满足 |
| 降核 ASW_Basic | 3288 | 15.9% | 2 ~ 128 | P<C K 不满足 StreamK 阈值 只用 P 定义与实现见 §.6 |
| 特殊分支 | 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$ 等五条全过 |
| 转Matmul | 1584 | 7.6% | B=1 | 单边 batch=1 |
| StreamK | 628 | 3.0% | 2 ~ 128 | P<C/2 K8192 |
| ASW_Basic | 1.75 亿 | 54.1% | 2 ~ 2048 | 通用B<C PC BC L1 四形态不满足M/N |
| MergeBatch | 6303 | 19.5% | 97 ~ 2048 | $b_{core}\ge 4$ $MN \le 8192$ 等五条全过 |
| 降核 ASW_Basic | 4051 | 12.6% | 2 ~ 2048 | P<C K 不满足 StreamK 阈值 只用 P |
| IterBatch | 3804 | 11.8% | 32 ~ 2048 | BC负载均衡L1 四形态之一满足 |
| 特殊分支 | 597 | 1.9% | 任意 | K=0 / K=1 |
| StreamK | 25 | 0.08% | 2 ~ 128 | P<C/2 K8192 |
| 转Matmul | 15 | 0.05% | B=1 | 单边 batch=1 |
### IterBatch 四形态命中分布
**对照:线性等距采样**M/N/K 步长 256B 全量 1.3 亿 case ASW_Basic 占比升至 92.1%MergeBatch 降至 3.6%——因为线性采样被大 shape 主导两种测度的结论一致**无空分支无覆盖空洞**只是占比不同
| 形态 | 命中数 | 说明 |
|---|---|---|
| b) batch 乒乓 | 1787 | 最多B 大且单 batch 较小 |
| d) 两侧切 K | 1456 | 次之K 可切段的通用兜底 |
| c) 一侧驻留+对侧切 K | 773 | 单侧可驻留 b_core2 的半预算预取档 522 |
| a) batch 全驻留 | 528 | B=C 附近 |
### IterBatch 四形态命中分布(对数采样)
| 形态 | 命中数 | 占比 | 说明 |
|---|---|---|---|
| b) batch 乒乓 | 2684 | 70.5% | 最多B 大且单 batch 较小 |
| d) 两侧切 K | 741 | 19.5% | 次之K 可切段的通用兜底 |
| c) 一侧驻留+对侧切 K | 370 | 9.7% | 单侧可驻留 b_core2 的半预算预取档 |
| a) batch 全驻留 | 9 | 0.2% | B=C 附近的窄区 |
### 典型边界 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$)与条件 3min_DatamountPerCore夹出** M×N 且单核搬移量足够的大 batch case两个条件缺一不可典型分界对照B=128/M=N=64 K=256 单核搬移 256KB 不达标落 IterBatchK=512 512KB 达标进 MergeBatch
3. **IterBatch 与 ASW_Basic 的分界就是 L1 四形态是否满足** batch 输入 $(MK+KN)\cdot\text{dtype}$ 相对 L1 的比例决定归属——这正是"核内零重复读"原则的定量体现
4. **StreamK 的区域为 P<C/2 且 K≥8192**B M/N K 大的"细长" caseC/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 跌破搬移效率下限更快
4. **StreamK 的区域为 P<C/2 且 K≥8192**B M/N K 大的"细长" caseC/2 P < C K 大的 case 由降核 ASW_Basic 承接 2 K 会超核数不切又不满核不如直接用 P
5. **降核 ASW_Basic 是 P<C 且 K 小区域的理性归宿** 12.6%并行度凑不满 K 又不划算时只用 P 个核每核一个 L0C 满载输出块比强行碎切tile 跌破搬移效率下限更快