Fix #34: ASW_Basic 兜底恒出方案; 搬移效率下限不满足降级为 warning (不判违规)

- constraints.py: ASW_Basic/ASW_Basic_降核 的 dValue 效率下限不再计违规
  (DMA 仍能工作只是效率低; 真正不可行的只有容量/核数硬约束);
  IterBatch/MergeBatch/StreamK 等有替代分支的分支仍按违规处理 (不满足条件不该进)
- asw_basic 枚举尾部: 严格 256B 偏好无解 -> 放开约束4 按 128B 硬下限给最优可行 tile,
  note 标注"效率降级"; 128B 硬下限也不满足的极端形状 (如 N=8 int8, B 侧 dValue=8B
  物理不可满足) 仍给 Base tile 方案 + 标注效率降级 (搬移效率崩塌)
- evaluator advice / router 仲裁文案含"效率降级"提示 (plan.note 同步)
- docs/06 Step1 增加"兜底分支恒出方案"段落 (效率降级 vs 违规的语义分层)
- 回归: b32_m16_n8192_k7168 分解 = Base 16x1024 + tile 16x1024 + k_l1=112
  (L1 双缓冲 ⌊L1/(2·(16+1024)·2)⌋16=112 反推) 入测试; 极端形状 feasible=True +
  效率降级标注; 压力 10000 例 0 崩溃/0 NaN/0 硬违规/0 GM<V_in; examples 重生成 0 diff
This commit is contained in:
2026-09-07 16:24:46 +08:00
parent 05ca91e291
commit 0cd47f93cb
9 changed files with 101 additions and 48 deletions

View File

@@ -93,6 +93,15 @@ GM→L1 搬移效率与 L2 重复读率:
mCnt = ⌈M/singleCoreM⌉, nCnt = ⌈N/singleCoreN⌉按实际 tile 反推)。
> **兜底分支恒出方案 (issue#34)**:枚举无可行候选时,不再产出"违规/不可行"方案——
> 先放开约束 4Base 整数倍)按 16 对齐网格 + dValue 128B 硬下限再搜;仍无解
> (极端形状,如 N=8 int8 大 K 时 B 侧 dValue = sN·dt 物理上不可能 ≥ 下限)时退回
> Base tile 并标注**效率降级**warning搬移效率低于模型假设、时延可能低估
> 建议调 dtype/布局),**不是违规/不可行**dValue/minTile 是效率下限DMA 仍能工作),
> 真正不可行的只有容量/核数硬约束L0C/L0A/L0B/L1 超容、used_core_num 超核数)。
> 对比IterBatch/MergeBatch/StreamK 等**有替代分支**的分支仍按违规处理
> (不满足条件不该进,由路由另择或落 ASW
**Step 2: mCnt/nCnt 与核间分配**`mCnt=⌈M/sM⌉``nCnt=⌈N/sN⌉`,总块数 B·mCnt·nCntB→M→N 线性映射。
**Step 3: 切分维度选择(按共享代价从低到高)**:切 B零共享先试→ 切 M右矩阵 ≤L2 则驻留)→ 切 N对称→ 混合切 → 降核。