[P0] K=1 且 batch<128 的 case 在 recommend 中崩溃(AttributeError: NoneType used_core_num) #4

Closed
opened 2026-09-03 10:56:38 +00:00 by admin · 1 comment
Owner

现象:任意 K=1 且 batch<128 的 case 执行 python -m bmm_theory recommend 必然崩溃:

case_id,batch_a,batch_b,m,n,k,dtype_a,dtype_b,dtype_c
bug1,64,64,8192,32,1,int8,int8,int8
Traceback ...
  File "bmm_theory/__main__.py", line 85, in _print_case
    print(f"    方案: 核数={p.used_core_num} ...")
AttributeError: 'NoneType' object has no attribute 'used_core_num'

不带 -v 时同样崩溃(models.py:271 EvalResult.to_row / 带 --plans 时 save_plans),即所有调用路径必崩

根因链

  1. router.py:49-52k <= 1 无条件路由到特殊分支(决策树文档 00 总纲 / 04_特殊分支.md 也如此声称);
  2. branches/special.py:26-32 对 K=1 附加进入条件 batch_c >= 2*AIV核数(128)(开 UB 乒乓);
  3. branches/base.py:56-63:capable=False 时 plan=None
  4. 下游无空值兜底 → AttributeError。

K=1 且 B<128 是决策树声称覆盖、代码无方案、路由不兜底的空洞(K=1/B<128 在真实场景存在,如小 batch 的元素级乘场景)。

期望:capable=False 时回退其它通路(AIV 单缓冲 / Cube 兜底)或输出明确"该区域暂无理论方案"并跳过该 case,不得崩溃;补该场景回归测试。

参考:已入库的《BMM_Theory软件测评报告_v1.0》docs/03_测评报告/ §5.1、附录 A。

**现象**:任意 `K=1 且 batch<128` 的 case 执行 `python -m bmm_theory recommend` 必然崩溃: ``` case_id,batch_a,batch_b,m,n,k,dtype_a,dtype_b,dtype_c bug1,64,64,8192,32,1,int8,int8,int8 ``` ``` Traceback ... File "bmm_theory/__main__.py", line 85, in _print_case print(f" 方案: 核数={p.used_core_num} ...") AttributeError: 'NoneType' object has no attribute 'used_core_num' ``` 不带 `-v` 时同样崩溃(`models.py:271` EvalResult.to_row / 带 `--plans` 时 save_plans),即**所有调用路径必崩**。 **根因链**: 1. `router.py:49-52` 把 `k <= 1` 无条件路由到特殊分支(决策树文档 00 总纲 / 04_特殊分支.md 也如此声称); 2. `branches/special.py:26-32` 对 K=1 附加进入条件 `batch_c >= 2*AIV核数(128)`(开 UB 乒乓); 3. `branches/base.py:56-63`:capable=False 时 `plan=None`; 4. 下游无空值兜底 → AttributeError。 即 **K=1 且 B<128 是决策树声称覆盖、代码无方案、路由不兜底的空洞**(K=1/B<128 在真实场景存在,如小 batch 的元素级乘场景)。 **期望**:capable=False 时回退其它通路(AIV 单缓冲 / Cube 兜底)或输出明确"该区域暂无理论方案"并跳过该 case,不得崩溃;补该场景回归测试。 **参考**:已入库的《BMM_Theory软件测评报告_v1.0》docs/03_测评报告/ §5.1、附录 A。
Author
Owner

【修复说明 · 乱码重写】原评论提交时编码损坏、内容不可恢复, 以下按 git 记录 / issue 正文 / 残留文本重建 (要点级, 非逐字原稿):

[P0] K=1 且 batch<128 在 recommend 中崩溃 (AttributeError: NoneType used_core_num) 已修复:

  • router 增加 _no_plan 占位兜底 + _wrap_checked 防空 (commit 0c19d99/b57ba57, 及 99a25a6 清理
    误传的 t_p.csv): 无方案时输出 used_core_num=0 占位并标注"[无方案]", 不再崩溃;
  • 后续 #12 (commit 4bedf0a) 更彻底: special 分支对 K=1 且 B<128 给出 AIV 单缓冲真实方案
    (used_core_num = AIV 核数), 验证 case B=64/M=8192/N=32/K=1 可正常 recommend;
  • 第三轮回退后由 9afe6ee (#17) 恢复并保留。
【修复说明 · 乱码重写】原评论提交时编码损坏、内容不可恢复, 以下按 git 记录 / issue 正文 / 残留文本重建 (要点级, 非逐字原稿): [P0] K=1 且 batch<128 在 recommend 中崩溃 (AttributeError: NoneType used_core_num) 已修复: - router 增加 _no_plan 占位兜底 + _wrap_checked 防空 (commit 0c19d99/b57ba57, 及 99a25a6 清理 误传的 t_p.csv): 无方案时输出 used_core_num=0 占位并标注"[无方案]", 不再崩溃; - 后续 #12 (commit 4bedf0a) 更彻底: special 分支对 K=1 且 B<128 给出 AIV 单缓冲**真实方案** (used_core_num = AIV 核数), 验证 case B=64/M=8192/N=32/K=1 可正常 recommend; - 第三轮回退后由 9afe6ee (#17) 恢复并保留。
admin closed this issue 2026-09-03 12:05:41 +00:00
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: admin/matmul-analysis#4
No description provided.