已合并
refactor: 面向VV融合的求解器,删除L0/L2求解器 #1684
refactor: 面向VV融合的求解器,删除L0/L2求解器 #1684
已合并
gcw_NLOuEjCz创建于 21 天前
gcw_NLOuEjCz
21 天前

Pull Request

描述

【重构】删除 att HighPerf Tiling 三段式架构(L0 → L2 → General)中的 L0/L2 求解器,收敛为面向 VV(纯 Vector)融合的单一 General(SEARCH_TILE)求解路径。

  • 删除 L0/L2 求解器本体(l0/l2_solver_code.h)、代码生成器(l0/l2_solver_gen)、SolverType 枚举(L0_TILE/L2_TILE)与专属测试(12 文件 + 死副本)
  • 剥离 3 个 live 模型(matmul/ffn/solver)中的 L0/L2 变量与 Cube 容量约束;4 个 tiling_func_*_main 同批联动
  • 保留 SEARCH_TILE/General 求解、HardwareDefaxes_reorder、UB Tiling 机制;IsNeedSolver 简化为"可搜索变量 > 0"
  • 遵循"直接删除、不补偿"原则(无 SetSolvedVars 掩盖逻辑)

验收指标核对(6 项逐条)

# 验收指标 结果
1 编译通过,无 L0/L2 符号残留(L0TileSolver/L2TileSolver/L0TileSolverGen/L2TileSolverGen/ExecuteL0Solver/ExecuteL2Solver) ✅ 通过
2 General 路径只生成 General 代码(solver_pass_gen/manager UT) ✅ 通过
3 HighPerf ST 全绿(concat/matmul/ffn 单段 General 可执行、结果正确) ✅ 通过
4 AxesReorder 默认路径 ST 全绿 ✅ 通过
5 求解质量改前/改后对比无显著退化 ⚠️ 随方向变更失效
6 L0/L2 测试清理,CMake 无残留 glob ✅ 通过

综合结果:UT 1024/1024 + ST 109/109 全绿;6 项中 5 项实证通过、1 项随方向变更失效
⚠️ #5 随方向变更失效(非"未执行"):该验收点定义在 CV 融合场景——改前 L0/L2 求解器求解 L0/L2 块变量(tilem/tilen(L2)、basem/basen(L0A/L0C/L1)、basek(L0A/L0B));方向已改为 VV 融合,L0/L2 搜索变量已从 General 求解空间移除、不再支持求解,General 仅搜 stepka/stepkb(L1) → 改后无对比对象,对比前提不成立。单段 General 正确性由 UT 1024/1024 + ST 109/109 覆盖。

变更类型

关联的Issue

https://gitcode.com/cann/graph-autofusion/issues/207

如何测试

描述测试此变更的步骤和前提条件:

  1. 编译cmake --build build/autofuse/tests/ut/att --target att_ut -j 8 + cmake --build build/autofuse/tests/st/att --target att_st -j 8grep -rI 'L0TileSolver\|L2TileSolver\|ExecuteL0Solver\|ExecuteL2Solver' autofuse/ 应无残留
  2. UTatt_ut --gtest_filter='-*Matmul*:*TilingFuncMain*'(1018/1018)+ att_ut --gtest_filter='*Matmul*'(6/6)→ 1024/1024
  3. STLD_PRELOAD=/usr/lib/aarch64-linux-gnu/libasan.so.5 ASAN_OPTIONS=detect_leaks=0 att_st109/109(含 HighPerf concat/matmul/ffn + AxesReorder)

核对清单

其他信息

在此添加任何其他关于本次 PR 的说明。

  • 验证结果(如实):6 项验收指标 5 项实证通过、1 项随方向变更失效(#5 求解质量对比定义于 CV 融合场景;方向改 VV 后 L0/L2 搜索变量已删除、General 不再求解,无对比对象);单段 General 正确性由 UT 1024/1024 + ST 109/109 覆盖
  • 风险点stepm/stepn(L1 作用域,related_scope={L1,CORENUM})作为 General 搜索变量保留,属 L0/L2 之外,未删除;无"L1 求解器",由 SEARCH_TILE 搜索
  • 详细改动对照见 复现清单与逐文件对照.md
likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 gcw_NLOuEjCz 的贡献)
Ggcw_NLOuEjCz
21 天前 添加了label:enhancement
Ggcw_NLOuEjCz
21 天前 创建了 pull request,commit 48e5e0f4
Ggcw_NLOuEjCz
21 天前 关联了issue:[Documentation|文档反馈]: 没有提供A2CANN ops包的下载包链接,【重构需求】删除 att L0/L2 求解器——L0 不适用 CV 融合场景,L2 硬件命中不可控
atomgit-bot
atomgit-bot
21 天前 评论:

变更摘要

本次重构面向 VV(纯 Vector)融合方向,删除了 HighPerf Tiling 三段式架构(L0 → L2 → General)中的 L0/L2 求解器,将求解路径收敛为单一的 SEARCH_TILE(General)求解器。核心改动包括:移除 L0TileSolver/L2TileSolver 求解器本体及其代码生成器、从 SolverType 枚举中删除 L0_TILE/L2_TILE、剥离 live 模型 stub 中的 L0/L2 轴变量与 Cube 容量约束、清理全部 L0/L2 专属测试用例,并将 IsNeedSolver 简化为"可搜索变量 > 0"。

主要改动

  • 删除 L0/L2 求解器本体与代码生成器:移除 l0_solver_code.hl2_solver_code.h(求解器代码模板)以及 l0_solver_gen.cpp/hl2_solver_gen.cpp/h(代码生成器),共约 1,800 行内联代码和 600 行生成逻辑被删除。(源代码保留,仅删除相关代码)

  • 移除 SolverType 中的 L0_TILE/L2_TILE 枚举值并精简调度逻辑SolverType{L0_TILE, L2_TILE, SEARCH_TILE, ERROR} 缩减为 {SEARCH_TILE, ERROR}solver_pass_manager.cppSolverPassFuncGenSolverDtFuncGenSolverPassClassGen 仅保留 SEARCH_TILE 分支,同时移除 GetL0ArgsGenL0TileSolverGenGenL2TileSolverGen 等辅助方法及 kMaxL0VarNum 常量。

  • 剥离 live 模型 stub 中的 L0/L2 变量与 Cube 容量约束stub_matmul_modelinfo.cppstub_ffn_modelinfo.cppstub_model_info.cppstub_solver_model_info.cpp 中移除了 basem/basen/tilem/tilen/basek 等 L0/L2 轴及其 related_scope 与硬件占用约束(L0A/L0B/L0C/L2),同时删除了 Cube MTE2 性能模型计算逻辑。

  • 清理全部 L0/L2 专属测试文件:删除 UT 和 ST 目录下的 test_l0_solver.cpptest_l2_solver.cpptest_l0_solver_gen.cpptest_l2_solver_gen.cpp 等 12 个测试文件及其对应的 l0_solver.cpp/l2_solver.cpp 源码副本,stub_model_info.cpp/h 亦被移除。

  • 简化 IsNeedSolver 判断逻辑IsNeedSolver 从分类检查 L0/L2 可搜索变量数量改为统一判断 GetSearchableVars().size() > 0GenerateSolverPassFunc 中移除了"L0+L2 参数数量 ≥ 全部可搜索变量数量时跳过 General 求解"的提前返回逻辑。

likedislike
atomgit-bot
atomgit-bot
21 天前 评论:

代码审查

✅ 未发现问题

likedislike
此处折叠了63条消息 查看更多
CANN-robotCANN-robot成员
19 天前 添加了label:lgtm
张德鹏成员
19 天前 评论:

/approve

likedislike
CANN-robotCANN-robot成员
19 天前 添加了label:approved
CANN-robotCANN-robot成员
19 天前 关闭了关联的issue
CANN-robotCANN-robot成员
19 天前 合入了pull request