| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
【PR】: elmwise 双输入时为 compact reduce 兜底检查插入 pad Co-authored-by: Yulin-Bi<13677173705@163.com> # message auto-generated for no-merge-commit merge: !1963 merge fix/pr1760-compact-reduce-pad into develop 【PR】: elmwise 双输入时为 compact reduce 兜底检查插入 pad Created-by: JacsonPile Commit-by: Yulin-Bi Merged-by: cann-robot Description: # Pull Request ## 描述 修复 compact Reduce 输出与 aligned Broadcast 输入在 EleWise 汇聚时的精度错误(PR1760 场景)。 问题场景:一个 EleWise 节点的两个输入分别来自 Broadcast(kAligned)与 ReduceSum(compact,尾轴 stride==0)。两者物理布局不一致,EleWise 按 aligned 语义读取 compact 数据,产生错值。 此前 SetAlignInfoForNodeInputs 中的 is_compact_reduce 判定基于传播途中的对齐元数据状态举旗插 Pad:元数据状态会被传播过程改写,判定依赖遍历顺序,且不区分传播发起者,在其他图上会误判。 本 PR 改为显式结构匹配: - 删除 is_compact_reduce 冲突标记,SetAlignInfoForNodeInputs 恢复仅对 kFixedNotAligned 举旗; - 新增 AddPadForCompactReduce pass(位于 InferAlignment 与 AddPadForAlignmentConflict 之间),识别目标模式:EleWise 节点恰好 2 个有效输入,其一为 kAligned 的 Broadcast,另一为 compact 的 Sum;命中时在 Sum 输出与该输入之间插入 Pad,仅改接这条边; - 插 Pad 前复用 CheckIsNoNeedPad 豁免:Sum 输出本身无需物理转换(如尾轴 repeat 已对齐、或除尾轴外仅剩不承载数据的轴)时不插 Pad。 compact 判定基于物理 stride(StaticCheckEq(strides[axis], kSymbolZero)),不受传播改写影响,无顺序敏感性。 配套修正共享的 CheckIsNoNeedPad:stride==0 || repeat==1 的轴视为不承载数据(inactive),与 SetVectorizedStridesForTensor 的判据对齐,避免"判定要 Pad 但下游按无数据轴计算 stride"的不一致;同时补充 repeats/strides 下标边界断言。该函数同时服务 AddPadForAlignmentConflictOneNode 路径,修正方向均为豁免误判的无效 Pad 或更保守地插 Pad。 ## 变更类型 - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 如何测试 1. 编译并运行对齐 UT: bash cmake --build build --target optimize_ut -j 8 build/autofuse/tests/ut/optimize/optimize_ut \ --gtest_filter='VectorizedAlignmentUT.*compact*pad*:VectorizedAlignmentUT.scalar_reduce_skips*' 验证点: - compact_reduce_pad_for_aligned_broadcast_add:命中双输入模式,图中存在 reduce_sum_0_pad 节点且 add 输入已改接 Pad; - scalar_reduce_skips_pad_for_aligned_broadcast_add(含 unit-repeat 变体):Sum 输出全 [1,1] 时不插 Pad,add 仍直连 reduce_sum。 2. 完整 optimize_ut 回归:620 PASS / 0 FAIL(8 SKIP 为环境性跳过)。 3. 精度验证: - torch.compile 训练场景(Sum → Add(+1e-20) → Broadcast → TrueDiv,requires_grad):修复前输出 inf,修复后与 eager 比对 maxdiff=0; - TF 全链路(test_graph_big.pb,ATC 编译 + NPU 执行):修复前 6/8 错值,修复后 0/8 差异;device kernel 中可见 Sum → Pad → Add,Pad 仅连接 Add 的 Sum 输入边,Store 仍按紧凑布局落盘。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 ### 变更范围 生产逻辑(+113/-8 行): - autofuse/optimize/platform/common/base_alignment_strategy.cpp - SetAlignInfoForNodeInputs:删除 is_compact_reduce 判定; - 新增 FindCompactReduceInput:双输入结构模式匹配(aligned Broadcast + 物理 compact Sum); - 新增 InsertPadForCompactReduce:no-pad 豁免 + dtype 校验 + 插入 Pad 节点(输出标 kAligned)+ 精确改接单边; - 新增 AddPadForCompactReduce:pass 入口,注册于 InferAlignment 与 AddPadForAlignmentConflict 之间; - CheckIsNoNeedPad:inactive 轴判据与 SetVectorizedStridesForTensor 对齐(stride==0 || repeat==1),补充边界断言。 - autofuse/optimize/platform/common/base_alignment_strategy.h:新增三个私有方法声明。 测试(+78 行): - autofuse/tests/ut/optimize/autoschedule/test_vectorized_alignment.cpp: - compact_reduce_pad_for_aligned_broadcast_add:命中场景断言插 Pad 与改接; - scalar_reduce_skips_pad_for_aligned_broadcast_add(含 unit-repeat 变体):豁免场景断言不插 Pad。 ### 设计边界 - IsOps<ascir_op::Sum> 仅覆盖 Sum,与本 PR"只修 PR1760 场景"的定位一致,其他 reduce 的同型场景按需扩展; - 严格双输入限定,三输入及以上的泛化模式不命中; - 插 Pad 通过 InsertNodeAfter(reduce_output, {reduce_input}, pad_node) 只改接命中的单边,Sum 输出的其他消费者不受影响; - pass 顺序有依赖:必须在 InferAlignment 之后(读取传播完成后的最终对齐状态)、AddPadForAlignmentConflict 之前(避免对同一边重复插 Pad)、SetVectorizedStridesForOneNode 之前(对含 Pad 的新图重算 strides)。 See merge request: cann/graph-autofusion!1963 | 11 天前 | |
【PR】: [fix] [autofuse] adapt reform of the same-named header files of ge. Co-authored-by: xingzhixiong<xingzhixiong@huawei.com> # message auto-generated for no-merge-commit merge: !1149 merge develop_change_dir_of_metadef_headers into develop 【PR】: [fix] [autofuse] adapt reform of the same-named header files of ge. Created-by: xingzhixiong Commit-by: xingzhixiong Merged-by: cann-robot Description: # Pull Request ## 描述 metadef在做同名头文件整改,整改完编译发现gaf失败,原因是gaf仓和ge仓也有同名且子目录相同的头文件,故需要将gaf仓的同名头文件的子目录进行整改,只给gaf仓内部使用,避免产生耦合编译问题。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. ci流水线pass 2. RDV pass ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!1149 | 2 个月前 | |
feat: 支持 IndirectLoad Load-Transpose 布局并完善 SIMD/SIMT codegen Co-authored-by: xiebangrui2025<xiebangrui@huawei.com> # message auto-generated for no-merge-commit merge: !2029 merge IL into develop feat: 支持 IndirectLoad Load-Transpose 布局并完善 SIMD/SIMT codegen Created-by: xiebangrui2025 Commit-by: xiebangrui2025 Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 完整支持 IndirectLoad 输入侧 Load-Transpose 布局,并统一、简化 SIMD/SIMT lowering 与 codegen。主要变更如下: - 在 IndirectLoad 调度生成中识别输入和索引链上的 Load-Transpose,按 Transpose 输出轴顺序映射 Load 物理 stride,并保留共享数据边与控制边边界。 - 将 IndirectLoad 逻辑视图、访问分析、SIMD/SIMT 策略和 lowering metadata 收敛到公共分析层,减少 codegen 重复推导。 - 简化 SIMD/SIMT API 调用生成和地址策略,统一 SIMT 多输出、后融合与 GM/UB 输出处理。 - 协同 Transpose、NDDMA 和 un-alignment 流程,避免 IndirectLoad 图重复处理 Transpose 或错误修改向量化布局。 - 修复 Broadcast 物理视图分析中的 dtype/axis 属性污染,并支持 SIMT 直接 GM Load 的非零 IR offset。 - 补充 Load-Transpose、Broadcast、embedding slice、SIMT 输出与边界场景 E2E,并同步线上线下 IL E2E 清单。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无。 ## 如何测试 描述测试此变更的步骤和前提条件: 1. 使用 CANN 9.2 环境执行 cmake --build build --target codegen -j 8,增量编译通过。 2. 构建并实际运行 indirect_load_graph_hint_embedding_slice_e2e_v2、indirect_load_both_transpose_simd_fallback_test_e2e_v2、indirect_load_both_transpose_simd_nddma_test_e2e_v2 和 indirect_load_both_transpose_simt_test_e2e_v2,4/4 通过。 3. 使用 clang-format 18.1.8 检查 PR 范围内全部 C++ 变更文件,--dry-run --Werror 通过;git diff --check 通过。 4. 对比 CMake/build 注册目标与 scripts/test/run_autofuse_test.sh 线上执行列表:双方均为 86 个 IL E2E,双向差集为空。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已确认本次无对外接口变化,无需更新用户文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 本 PR 包含 4 个连续 commit: 1. 7d147dec:支持 IndirectLoad Load-Transpose 布局及相关调度协同。 2. 41adeac4:统一 lowering metadata,简化 SIMD/SIMT codegen 与地址策略。 3. 778a7824:统一 SIMT 输出处理并补充 IL ST。 4. 5a1b71fb:修复 dtype/axis/offset 回归并补充 embedding slice E2E。 源分支为 xiebangrui2025:IL,目标分支为 cann:develop。 See merge request: cann/graph-autofusion!2029 | 6 天前 | |
【PR】: 将ut/st注册到ctest统一管理 Co-authored-by: 盛楠<titan.sheng@huawei.com> # message auto-generated for no-merge-commit merge: !1416 merge f_0722 into develop 【PR】: 将ut/st注册到ctest统一管理 Created-by: shengnan666 Commit-by: 盛楠 Merged-by: cann-robot Description: # Pull Request ## 描述 将ut/st注册到ctest统一管理 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!1416 | 1 个月前 | |
【PR】: [feat] [autofuse] add llt to autofuse. Co-authored-by: xingzhixiong<xingzhixiong@huawei.com> # message auto-generated for no-merge-commit merge: !372 merge master_llt into master 【PR】: [feat] [autofuse] add llt to autofuse. Created-by: xingzhixiong Commit-by: xingzhixiong Merged-by: cann-robot Description: # Pull Request ## 描述 增加autofuse组件的llt。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 跑ci流水线能全部通过即可 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!372 | 4 个月前 | |
【PR】: [feat] [autofuse] add llt to autofuse. Co-authored-by: xingzhixiong<xingzhixiong@huawei.com> # message auto-generated for no-merge-commit merge: !372 merge master_llt into master 【PR】: [feat] [autofuse] add llt to autofuse. Created-by: xingzhixiong Commit-by: xingzhixiong Merged-by: cann-robot Description: # Pull Request ## 描述 增加autofuse组件的llt。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 跑ci流水线能全部通过即可 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!372 | 4 个月前 | |
【PR】: [feat] [autofuse] add llt to autofuse. Co-authored-by: xingzhixiong<xingzhixiong@huawei.com> # message auto-generated for no-merge-commit merge: !372 merge master_llt into master 【PR】: [feat] [autofuse] add llt to autofuse. Created-by: xingzhixiong Commit-by: xingzhixiong Merged-by: cann-robot Description: # Pull Request ## 描述 增加autofuse组件的llt。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 跑ci流水线能全部通过即可 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!372 | 4 个月前 | |
style: 统一 Autofuse 代码格式 Co-authored-by: Ling-DT<lingxing@huawei.com> # message auto-generated for no-merge-commit merge: !921 merge style/clang-format-autofuse-20260611 into develop style: 统一 Autofuse 代码格式 Created-by: ling-DT Commit-by: Ling-DT Merged-by: cann-robot Description: # Pull Request ## 描述 基于 cann/graph-autofusion:develop 最新提交 46a23b0,使用仓库根目录 .clang-format 对 autofuse/ 目录内受版本管理的 C/C++/AscendC 源文件执行统一格式化。 本 PR 仅包含 autofuse/ 目录格式化变更;super_kernel/ 目录格式化变更按要求暂留本地,未提交到本 PR。 格式化工具:clang-format 18.1.8,参数:--style=file。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无。 ## 如何测试 描述测试此变更的步骤和前提条件: 1. /tmp/opencode/clang-format-18-venv/bin/clang-format -i --style=file <autofuse C/C++/AscendC files> 2. git diff --cached --check 3. git diff --name-only HEAD~1..HEAD | cut -d/ -f1 | sort | uniq -c 确认 PR 提交仅包含 autofuse/。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 本 PR 为纯格式化变更,不涉及功能逻辑、接口、构建脚本或打包内容修改。 See merge request: cann/graph-autofusion!921 | 2 个月前 | |
fix: skip broadcast backward for scalar-like producers with empty views Co-authored-by: Jett_Woo<wujinteng1@huawei.com> # message auto-generated for no-merge-commit merge: !2104 merge fix/brc-backward-scalar-like-producer into develop fix: skip broadcast backward for scalar-like producers with empty views Created-by: Jett_Woo Commit-by: Jett_Woo Merged-by: cann-robot Description: # Pull Request ## 描述 修复 BroadcastBackwardPass 对 scalar-like 生产者的处理缺陷。 浮点改写协议产出的 IndexExpr(int64, 空输出视图) → Broadcast → Cast(f32) 链(测试环境 2026-09-14 plog 首次触发)会使 pass 的 scalar 门控失效: - CollectBackwardStartNodes 的门控只认 kScalarType,IndexExpr/ScalarData(scalar-like,输出视图为空)绕过门控进入后移; - ReorderBroadcasts 先改写图边后,GetBroAxisesIndex 的前后视图轴数断言失败(0 轴 vs N 轴),图停留在**半改写状态**(边已重排、属性/dtype 未同步),且错误被 RunPasses 忽略后继续编译。 修复内容(broadcast_backward_pass.cpp,+22/-2): 1. 新增 IsScalarLikeProducer(Scalar/ScalarData/IndexExpr),与 codegen 侧 IsScalarNodeType 白名单语义对齐;CollectBackwardStartNodes 门控与多消费路径 BackwardMultiRefBroadcast 的 is_pre_scalar 判定统一扩展; 2. ProcessOriginalBackwardLogic 在改写图边前增加前广播视图与广播输出视图的**轴数守卫**,不一致整体跳过(fail-closed),杜绝半改写状态。 配套测试:测试 builder 新增 IndexExpr 构造方法(真实前端空视图形态,不自动补视图);新增 3 个 UT 覆盖 IndexExpr/ScalarData 门控拒绝与视图守卫兜底。 ## 变更类型 - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue #302(IndexExpr/Arange Autofusion 与 broadcast backward 合入交叉触发的缺陷,缺陷本体位于 broadcast backward pass) ## 如何测试 1. UT:新增 BroadcastBackwardPass.SkipsIndexExprBroadcastSource / SkipsScalarDataBroadcastSource / SkipsBroadcastWithMismatchedPreViewAxes 三个用例——修复前在未修复代码上验证 RED(RunPass 返回 FAILED,错误链与测试环境 plog 逐行一致),修复后 GREEN; 2. 回归:optimize_ut 全量 759 用例(711 通过 + 48 既有跳过,0 失败);BroadcastBackwardPass 套件 76 用例(基线 33 通过 + 40 既有跳过 → 36 通过 + 40 跳过,仅新增 3 个通过,无既有行为变化); 3. 真机(Ascend950PR,55 组合三配置对照):无 pass 基线 / develop 原版 pass / pass+本修复——修复零回归(44 PASS 集合完全一致),断言崩溃、半改写、E19999 刷屏全部消除。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 真机对照验证表明:IndexExpr/Arange RDV 回归中另有 11 个组合在**原版 pass 下同样失败**(multi_arange 断言崩溃;triu/remainder_cast/degenerate_arange_add_3d 因退化轴视图的语义改写错误导致 codegen 失败)——为本修复之外的 pass 独立适配项,本修复未改变其结果(零回归),后续另行跟进。 See merge request: cann/graph-autofusion!2104 | 2 天前 | |
fix: complete Arange fallback path (#302) Co-authored-by: Jett_Woo<wujinteng1@huawei.com> # message auto-generated for no-merge-commit merge: !1980 merge index-expr-fallback-develop-pr into develop fix: complete Arange fallback path (#302) Created-by: Jett_Woo Commit-by: Jett_Woo Merged-by: cann-robot Description: # Pull Request ## 描述 补齐 IndexExpr/Arange Autofusion 的普通 ArangeApiCall 双路径和最小影响的 VF 前置准入,确保 VF 不可用时 Arange 可走普通 LocalTensor 路径,同时收紧 VF boundary 映射并补充普通 DMA/Codegen 回归。 本 PR 基于最新 develop,不重复提交已合入的 PR 1961 主体。 核心变更: - Store 使用实际源 UB 布局计算 DMA;外层 stride 无法证明 32B 对齐或存在共享偏移时,使用注册的 32B scratch 和显式逐行拷贝,保证同步及 scratch 生命周期。 - Arange VF 准入检查轴顺序与有效 lane,不把 Store DMA 对齐约束施加到 Arange。 - 新增普通 ArangeApiCall,保留现有 MicroArangeApiCall VF 高性能路径。 - UBFuse 或控制边场景在分区前禁用 Arange VF,避免晚期 Codegen 失败。 - 缺失 vf_root_input_index 时明确失败,移除静默 boundary ordinal 回退。 - 普通 Arange fallback 分离 logical value offset 与 LocalTensor physical write offset,并对复杂无法证明安全的布局 fail closed。 - 补充 Arange Codegen、VF partition、Allocator、DMA singleton 和 boundary mapping 回归。 ## 变更类型 - [x] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 关联 Issue #302:支持 IndexExpr 和 Arange Autofusion ## 如何测试 1. 本次重新构建:cmake --build build/source_validation --target test_main optimize_ut pyautofuse -j 8,成功;SDK signal.h 有弃用告警。 2. 本次完整 host 回归:test_main 881 passed、7 skipped、8 disabled(XML total 896),零失败;optimize_ut 658 passed、8 skipped(total 666),零失败。test_main 从其二进制目录运行,以满足 ../pyautofuse.so 相对依赖。 3. 本次 git diff --check 和暂存区差异检查通过;改动行使用 clang-format 格式化。 4. 历史 V5 真机原始报告已重新核对:75 primary + 32 fallback + 1 control = 108 项,73 + 32 + 1 = 106 项数值通过;2 项 transposed output 在 codegen 阶段拒绝,不算数值成功。focus 4/4 是重跑,不重复计入分母。本次未重新运行真机矩阵。 5. 真机验证资产、文档、临时工具、日志及生成代码仅保留本地,不纳入提交。本次 host 日志位于 pipeline_logs/1980_*_20260906.*;历史真机证据位于 /tmp/opencode/p0_p1_runtime/final_matrix_v5/。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - ATT outer call fixed cost、普通 scalar fallback 和新增 Store scratch 的 scalar/per-chunk DMA/event 成本尚未建模。此路径为正确性回退,不承诺性能持平。 - 不支持动态 rank、scatter、非单位有效尾 stride、反序/交错 merged axis、Arange CV UBFuse。 - V5 矩阵剩余 2 项 transpose codegen 拒绝;仅支持 contiguous-inner scratch fallback,不宣称全部真机通过。 - 设计文档和完整真机验证资产仅保留在本地,不纳入提交。 - 源分支:index-expr-fallback-develop-pr。 See merge request: cann/graph-autofusion!1980 | 5 天前 | |
【PR】: [fix] [autofuse] adapt reform of the same-named header files of ge. Co-authored-by: xingzhixiong<xingzhixiong@huawei.com> # message auto-generated for no-merge-commit merge: !1149 merge develop_change_dir_of_metadef_headers into develop 【PR】: [fix] [autofuse] adapt reform of the same-named header files of ge. Created-by: xingzhixiong Commit-by: xingzhixiong Merged-by: cann-robot Description: # Pull Request ## 描述 metadef在做同名头文件整改,整改完编译发现gaf失败,原因是gaf仓和ge仓也有同名且子目录相同的头文件,故需要将gaf仓的同名头文件的子目录进行整改,只给gaf仓内部使用,避免产生耦合编译问题。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. ci流水线pass 2. RDV pass ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!1149 | 2 个月前 | |
【feature】: 修改升精度流程:Transpose节点不参与升精度 Co-authored-by: 李玥玮<liyuewei1@huawei.com> # message auto-generated for no-merge-commit merge: !2027 merge 0_local into develop 【feature】: 修改升精度流程:Transpose节点不参与升精度 Created-by: liyuewei Commit-by: 李玥玮 Merged-by: cann-robot Description: # Pull Request ## 描述 1、修改升精度流程:Transpose节点不参与升精度。 2、进一步扩展Transpose融合使用Compact模式的场景。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: NA ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!2027 | 6 天前 | |
【PR】: [fix] [autofuse] adapt reform of the same-named header files of ge. Co-authored-by: xingzhixiong<xingzhixiong@huawei.com> # message auto-generated for no-merge-commit merge: !1149 merge develop_change_dir_of_metadef_headers into develop 【PR】: [fix] [autofuse] adapt reform of the same-named header files of ge. Created-by: xingzhixiong Commit-by: xingzhixiong Merged-by: cann-robot Description: # Pull Request ## 描述 metadef在做同名头文件整改,整改完编译发现gaf失败,原因是gaf仓和ge仓也有同名且子目录相同的头文件,故需要将gaf仓的同名头文件的子目录进行整改,只给gaf仓内部使用,避免产生耦合编译问题。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. ci流水线pass 2. RDV pass ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!1149 | 2 个月前 | |
fix: 补齐 scalar-like 节点 IR 属性引用的动态 size var 收集 Co-authored-by: Jett_Woo<wujinteng1@huawei.com> # message auto-generated for no-merge-commit merge: !2125 merge fix/indexexpr-dynamic-sizevar into develop fix: 补齐 scalar-like 节点 IR 属性引用的动态 size var 收集 Created-by: Jett_Woo Commit-by: Jett_Woo Merged-by: cann-robot Description: # Pull Request ## 描述 inductor mean(dim=1) 分解图中,除数是动态 shape 符号(如 s44),经 index_expr(s44) 进入图后成为只被 IndexExpr.expr 引用、不挂任何轴的"孤儿" size var(ks1)。 **根因**:Optimizer::AutoScheduler 对每个 grouped graph 执行"清空后重建" size var 表(ClearAllSizeVar + AppendOriginalSizeVar),重建的扫描清单只覆盖"轴的 size"与"Load/Store/Gather/Nddma 的视图表达式",不含 IndexExpr/Arange 这类 scalar-like 节点(输出视图为空)的 IR 属性。孤儿符号在重建后丢失 → tiling data 结构体缺 ks1 字段、设备代码符号替换表缺 ks1 映射 → Tiler::Size 原样输出裸符号 → 设备编译报 use of undeclared identifier 'ks1'(两处:const int64_t scalar_2 = (ks1)/(1); 与 Duplicate(local_blk_tensor_of_scalar_2[0], static_cast<int64_t>((ks1)/(1)), ...))。 **修复**:AppendOriginalSizeVar 补扫 scalar-like 节点的 IR 属性表达式——IndexExpr.expr 与 Arange.base/step(同一根因的同类隐患一并覆盖)。该函数是公共上游:AutoScheduler 重建(设备 tiling 字段 + 替换表)与 CollectFrontendShapeVars(host tiling 签名)两处调用方同时受益。对既有场景零行为变化:常量表达式收集不到自由符号,登记表内容不变。 变更:autofuse/common/ascgraph_info_complete.cpp +23 行;autofuse/tests/ut/optimize/test_frontend_shape_vars.cpp 新增 UT(忠实复刻 Clear+Append 触发序列)。 ## 变更类型 - [x] 🐛 Bug 修复 ## 关联的Issue #315 (合并后可关闭) ## 如何测试 1. 新 UT FrontendShapeVarsTest.CollectsSymbolsReferencedByScalarLikeIrAttrs:构造 ks0(挂轴)/ks1(仅 IndexExpr.expr 引用)/ks2(仅 Arange step 引用),执行 ClearAllSizeVar + AppendOriginalSizeVar,断言三者均被重新收集。修复前失败(仅收到 ks0),修复后通过。 2. sh build.sh -u --module=autofuse_framework -j 8:optimize_ut 全量 713 用例全绿(含新增);codegen 模块(C++ test_main + Python 267 用例)全绿。 3. 端到端 codegen 复现:对动态符号版 mean 分解图(IndexExpr.expr=ks1)执行完整 schedule+codegen,生成的 tiling 结构体含 uint32_t ks1 字段、host 签名含 ks1 参数、设备代码为 scalar_2 = (t->ks1)/(1),裸符号 0 处(修复前 2 处)。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 同构问题参照:调度器轴表只收 cube 输出视图引用轴导致的轴缺失(已合入的同类修复),本次为 size var 收集范围的对应缺口。 See merge request: cann/graph-autofusion!2125 | 1 天前 | |
【PR】: 简要描述 删除不需要使用的文件 graph_dump_utils.h Co-authored-by: 盛楠<titan.sheng@huawei.com> # message auto-generated for no-merge-commit merge: !1366 merge f_0720 into develop 【PR】: 简要描述 删除不需要使用的文件 graph_dump_utils.h Created-by: shengnan666 Commit-by: 盛楠 Merged-by: cann-robot Description: # Pull Request ## 描述 删除不需要使用的文件 graph_dump_utils.h ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!1366 | 1 个月前 | |
【PR】: 简要描述 删除不需要使用的文件 graph_dump_utils.h Co-authored-by: 盛楠<titan.sheng@huawei.com> # message auto-generated for no-merge-commit merge: !1366 merge f_0720 into develop 【PR】: 简要描述 删除不需要使用的文件 graph_dump_utils.h Created-by: shengnan666 Commit-by: 盛楠 Merged-by: cann-robot Description: # Pull Request ## 描述 删除不需要使用的文件 graph_dump_utils.h ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!1366 | 1 个月前 | |
【PR】: [feat] 添加图级别的sched信息,并新增对应的python/序列化/dump接口. Co-authored-by: xingzhixiong<xingzhixiong@huawei.com> # message auto-generated for no-merge-commit merge: !1790 merge develop_transpose_one_set_axis into develop 【PR】: [feat] 添加图级别的sched信息,并新增对应的python/序列化/dump接口. Created-by: xingzhixiong Commit-by: xingzhixiong Merged-by: cann-robot Description: # Pull Request ## 描述 给ascgraph新增图级schedInfo,同时提供对外的getter/setter接口,为后续将node级schedInfo收编成图级schedInfo做铺垫。 当前新增图级接口之后,在schedule的入口处先将图级的schedInfo下发给node级schedInfo,保持内部逻辑先不动,等后续node级schedInfo全部收编完成后再一把切换。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. inductor+af流程,前端保持老流程不动,所有inductor+af用例和网络均不受影响,验证兼容性 2. inductor+af流程,前端将设置node级sched.axis接口改为直接设置图级sched.axis接口,所有inductor+af用例和网络仍不受影响,验证新接口无问题 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!1790 | 15 天前 | |
【feature】: 修改升精度流程:Transpose节点不参与升精度 Co-authored-by: 李玥玮<liyuewei1@huawei.com> # message auto-generated for no-merge-commit merge: !2027 merge 0_local into develop 【feature】: 修改升精度流程:Transpose节点不参与升精度 Created-by: liyuewei Commit-by: 李玥玮 Merged-by: cann-robot Description: # Pull Request ## 描述 1、修改升精度流程:Transpose节点不参与升精度。 2、进一步扩展Transpose融合使用Compact模式的场景。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: NA ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!2027 | 6 天前 | |
【PR】: [feat] 支持设置L2CacheHint Co-authored-by: xchu42<chuxing@huawei.com> # message auto-generated for no-merge-commit merge: !1538 merge devel into develop 【PR】: [feat] 支持设置L2CacheHint Created-by: xchu42 Commit-by: xchu42 Merged-by: cann-robot Description: # Pull Request ## 描述 为 Autofuse 融合算子自动生成 L2 Cache Hint 配置代码,根据 GM tensor 总大小动态决定是否禁用 L2 Cache。 当前仅在inductor场景生效 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: NA ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!1538 | 1 个月前 | |
【fix】: 解决同级多for循环变量未定义问题 Co-authored-by: wang-yan-male<wangyan220@huawei.com> # message auto-generated for no-merge-commit merge: !2018 merge develop into develop 【fix】: 解决同级多for循环变量未定义问题 Created-by: WangYanMale Commit-by: wang-yan-male Merged-by: cann-robot Description: # Pull Request ## 描述 解决同级多for循环变量未定义问题 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 构造两个reduce水平融合的场景 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!2018 | 6 天前 | |
【PR】: [fix] [autofuse] adapt reform of the same-named header files of ge. Co-authored-by: xingzhixiong<xingzhixiong@huawei.com> # message auto-generated for no-merge-commit merge: !1149 merge develop_change_dir_of_metadef_headers into develop 【PR】: [fix] [autofuse] adapt reform of the same-named header files of ge. Created-by: xingzhixiong Commit-by: xingzhixiong Merged-by: cann-robot Description: # Pull Request ## 描述 metadef在做同名头文件整改,整改完编译发现gaf失败,原因是gaf仓和ge仓也有同名且子目录相同的头文件,故需要将gaf仓的同名头文件的子目录进行整改,只给gaf仓内部使用,避免产生耦合编译问题。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. ci流水线pass 2. RDV pass ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!1149 | 2 个月前 | |
fix: complete Arange fallback path (#302) Co-authored-by: Jett_Woo<wujinteng1@huawei.com> # message auto-generated for no-merge-commit merge: !1980 merge index-expr-fallback-develop-pr into develop fix: complete Arange fallback path (#302) Created-by: Jett_Woo Commit-by: Jett_Woo Merged-by: cann-robot Description: # Pull Request ## 描述 补齐 IndexExpr/Arange Autofusion 的普通 ArangeApiCall 双路径和最小影响的 VF 前置准入,确保 VF 不可用时 Arange 可走普通 LocalTensor 路径,同时收紧 VF boundary 映射并补充普通 DMA/Codegen 回归。 本 PR 基于最新 develop,不重复提交已合入的 PR 1961 主体。 核心变更: - Store 使用实际源 UB 布局计算 DMA;外层 stride 无法证明 32B 对齐或存在共享偏移时,使用注册的 32B scratch 和显式逐行拷贝,保证同步及 scratch 生命周期。 - Arange VF 准入检查轴顺序与有效 lane,不把 Store DMA 对齐约束施加到 Arange。 - 新增普通 ArangeApiCall,保留现有 MicroArangeApiCall VF 高性能路径。 - UBFuse 或控制边场景在分区前禁用 Arange VF,避免晚期 Codegen 失败。 - 缺失 vf_root_input_index 时明确失败,移除静默 boundary ordinal 回退。 - 普通 Arange fallback 分离 logical value offset 与 LocalTensor physical write offset,并对复杂无法证明安全的布局 fail closed。 - 补充 Arange Codegen、VF partition、Allocator、DMA singleton 和 boundary mapping 回归。 ## 变更类型 - [x] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 关联 Issue #302:支持 IndexExpr 和 Arange Autofusion ## 如何测试 1. 本次重新构建:cmake --build build/source_validation --target test_main optimize_ut pyautofuse -j 8,成功;SDK signal.h 有弃用告警。 2. 本次完整 host 回归:test_main 881 passed、7 skipped、8 disabled(XML total 896),零失败;optimize_ut 658 passed、8 skipped(total 666),零失败。test_main 从其二进制目录运行,以满足 ../pyautofuse.so 相对依赖。 3. 本次 git diff --check 和暂存区差异检查通过;改动行使用 clang-format 格式化。 4. 历史 V5 真机原始报告已重新核对:75 primary + 32 fallback + 1 control = 108 项,73 + 32 + 1 = 106 项数值通过;2 项 transposed output 在 codegen 阶段拒绝,不算数值成功。focus 4/4 是重跑,不重复计入分母。本次未重新运行真机矩阵。 5. 真机验证资产、文档、临时工具、日志及生成代码仅保留本地,不纳入提交。本次 host 日志位于 pipeline_logs/1980_*_20260906.*;历史真机证据位于 /tmp/opencode/p0_p1_runtime/final_matrix_v5/。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - ATT outer call fixed cost、普通 scalar fallback 和新增 Store scratch 的 scalar/per-chunk DMA/event 成本尚未建模。此路径为正确性回退,不承诺性能持平。 - 不支持动态 rank、scatter、非单位有效尾 stride、反序/交错 merged axis、Arange CV UBFuse。 - V5 矩阵剩余 2 项 transpose codegen 拒绝;仅支持 contiguous-inner scratch fallback,不宣称全部真机通过。 - 设计文档和完整真机验证资产仅保留在本地,不纳入提交。 - 源分支:index-expr-fallback-develop-pr。 See merge request: cann/graph-autofusion!1980 | 5 天前 | |
【质量加固】style: 补充 const 限定符与显式 lambda 捕获 Co-authored-by: gcw_fHR9mxR5<1442994920@qq.com> # message auto-generated for no-merge-commit merge: !1797 merge quality-fix into develop 【质量加固】style: 补充 const 限定符与显式 lambda 捕获 Created-by: gcw_fHR9mxR5 Commit-by: gcw_fHR9mxR5 Merged-by: cann-robot Description: 依据 Issue #238 质量加固活动规则,修复 autofuse 下 10 处代码规范问题,不改变运行时行为。 规则1 · 只读成员函数补充 const 限定符(7 处) 1. micro_api_call.h: GetInputSize / GetInputTensorIdByIndex / GetOutputTensorIdByIndex / GetMicroApiName 2. tuning_space.h: GetCoTensors 3. lowering_global_data.h: GetHostResourceCenter 4. node_impl.h: GetOrigNode 规则9 · lambda 默认捕获改为显式捕获(3 处) 5. codegen_api_param_dump.cpp:77 [&] -> [&ss, &indent] 6. tiling_code_gen_impl.cpp:5194/5208 两处 [&] -> [&name] 7. tiling_code_gen_impl.cpp:3945 [&] -> 显式列出所捕获的成员与 this 以上改动均为 const 正确性补充与 lambda 显式捕获,已通过 Git Hooks 检查。 ## 实际改动对照(11 处 diff,描述中合并表述) | 规则 | 文件 | 函数/位置 | 行 | |---|---|---|---| | 1 | micro_api_call.h | GetInputSize | 86 | | 1 | micro_api_call.h | GetInputTensorIdByIndex | 95 | | 1 | micro_api_call.h | GetOutputTensorIdByIndex | 100 | | 1 | micro_api_call.h | GetMicroApiName | 104 | | 1 | tuning_space.h | GetCoTensors | 209 | | 1 | lowering_global_data.h | GetHostResourceCenter | 169 | | 1 | node_impl.h | GetOrigNode | 124 | | 9 | codegen_api_param_dump.cpp | dump_expr_vec lambda | 77 | | 9 | tiling_code_gen_impl.cpp | find_if lambda | 5194 | | 9 | tiling_code_gen_impl.cpp | find_if lambda | 5208 | | 9 | tiling_code_gen_impl.cpp | emit_get_tiling lambda | 3945 | See merge request: cann/graph-autofusion!1797 | 20 天前 | |
【PR】fix :Scalar 多下游不同 shape 时 Broadcast 属性复用导致图校验失败 Co-authored-by: chengzhiwei<chengzhiwei5@huawei.com> # message auto-generated for no-merge-commit merge: !1165 merge develop into develop 【PR】fix :Scalar 多下游不同 shape 时 Broadcast 属性复用导致图校验失败 Created-by: czways Commit-by: chengzhiwei Merged-by: cann-robot Description: # Pull Request ## 描述 Scalar 多下游不同 shape 时 Broadcast 属性复用导致图校验失败 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [ ] 我的代码遵循了项目的代码风格 - [ ] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [ ] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!1165 | 1 个月前 | |
feat: 支持静态Shape根据ub大小过滤非法template Co-authored-by: zhang_shengjie<804425610@qq.com> # message auto-generated for no-merge-commit merge: !964 merge feat/static-ub-template-filter into develop feat: 支持静态Shape根据ub大小过滤非法template Created-by: zhang_shengjie Commit-by: zhang_shengjie Merged-by: cann-robot Description: # Pull Request ## 描述 ### 一、主要解决的问题 Autofuse 在 schedule 模板生成后,所有模板会进入 ATT 生成 tiling func 和 solver 阶段。部分模板在所有可调 tile 取最小值 1、动态轴取 1 时的最小 UB 占用已超过平台 UB 上限,属于必然无解模板,但仍消耗后续编译资源。 本 PR 在 BufQueAllocator().AllocBufQue() 之后新增 StaticUbTemplateFilter,提前丢弃必然无解的模板,减少无效编译开销。同时将 ATT 与 Schedule 共用的 UB 表达式构建逻辑抽取到 autofuse/common/ub_expr/,保证两端使用同一份 UB 表达式来源。 ### 二、修改方案 #### 2.1 新增 StaticUbTemplateFilter(optimize 层) - 在 optimize.cpp 的 AllocBufQue 之后调用 StaticUbTemplateFilter().Filter() - 遍历 FusedScheduledResult 中每个 ScheduledResult 的 schedule group/impl graph - 通过公共 AscGraphUbExprBuilder 构建 UB 表达式上下文 - 对 tile inner axis 替换为 1、动态轴替换为 1,执行静态求值得到 min_ub_usage - min_ub_usage > platform_info.ub_size 时丢弃模板 - 平台信息不可用或求值失败时保留模板,不做激进过滤 - 全部模板被过滤时沿用现有无候选模板失败路径 #### 2.2 新增公共 UB 表达式层(common/ub_expr) - ub_expr_types.h:定义 UbExprContext、UbExprBuildResult、UbExprCmp 等公共类型 - asc_graph_ub_expr_builder.{h,cpp}:基于 AscGraph 构建 UB 表达式上下文,覆盖 Queue/Buffer/TmpBuffer size 表达式、container 命名、tile 变量、动态轴变量等 - ub_expr_utils.{h,cpp}:从 UbExprContext 获取原始 UB 表达式 #### 2.3 扩展 PlatformContext - 新增 TryGetInitializedPlatformInfo:无副作用读取已初始化的平台信息,不触发 runtime 初始化 - 新增 TryGetUbSizeOverride:支持上层通过 SetPlatformInfo 注入 UB size(soc_ver 为空时) - 保持 GetPlatformInfo/SetPlatformInfo 既有行为不变 #### 2.4 ATT 侧适配 - gen_model_info.cpp:新增 RefreshCommonUbExprContext,基于公共 AscGraphUbExprBuilder 刷新 UB 表达式上下文,替换旧的 container 表达式 - ub_named_expr_builder.{h,cpp}:ATT 内部命名化 UB 表达式构建,复用公共 BuildUbExpr 获取原始表达式 - axes_reorder_solver_gen.cpp:适配公共 UB 表达式接口 #### 2.5 测试覆盖 - 新增 UT:test_static_ub_template_filter(过滤器正向/异常/边界)、test_ub_expr_utils(BuildUbExpr)、test_platform_context(新接口) - 新增 ATT UT:test_gen_model_info(UB 刷新)、test_axes_reorder_gen(命名化 UB 表达式) - 更新 runtime stub 适配新接口 - 已有 ST/UT 适配:optimize_st、optimize_st_v2、test_optimizer_v2、test_python_ascir ### 三、代码修改流程图 mermaid flowchart TD A[Optimize 生成 schedule 模板] --> B[BufQueAllocator::AllocBufQue] B --> C[StaticUbTemplateFilter::Filter] C --> D{PlatformInfo 可用且 ub_size > 0?} D -- 否 --> E[跳过过滤, 保留全部模板] D -- 是 --> F[遍历 ScheduledResult] F --> G[AscGraphUbExprBuilder::Build] G --> H[UbExprUtils::BuildUbExpr] H --> I[tile=1, 动态轴=1 替换] I --> J{静态求值成功?} J -- 否 --> K[WARNING, 保留模板] J -- 是 --> L{min_ub > ub_size?} L -- 是 --> M[丢弃模板] L -- 否 --> N[保留模板] M --> O[继续后续流程] N --> O K --> O E --> O style C fill:#90EE90,stroke:#006400,stroke-width:2px style G fill:#90EE90,stroke:#006400,stroke-width:2px style H fill:#90EE90,stroke:#006400,stroke-width:2px ## 变更类型 - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue ## 如何测试 ### 一、测试用例说明 #### 1.1 单元测试 - test_static_ub_template_filter:覆盖平台信息可用/不可用、UB 超限/未超限、表达式求值失败、全部模板被过滤等场景 - test_ub_expr_utils:覆盖 BuildUbExpr 正向和空表达式场景 - test_platform_context:覆盖 TryGetInitializedPlatformInfo 和 TryGetUbSizeOverride - test_gen_model_info:覆盖 UB 表达式刷新 - test_axes_reorder_gen:覆盖命名化 UB 表达式构建 #### 1.2 系统测试 - optimize_st、optimize_st_v2:验证 optimize 全流程包含 UB 过滤 - test_optimizer_v2:v35 optimize 流程适配 - test_python_ascir:Python ASCIR 测试适配 ### 二、构建命令 bash sh build.sh -u --module=autofuse_framework -j 8 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 ### 验证方法 - 静态 shape 场景:构造 UB 超限模板,验证被正确过滤 - 动态 shape 场景:动态轴取 1 后 UB 超限模板被过滤 - 平台信息不可用:验证跳过过滤,保留全部模板 - 表达式求值失败:验证 WARNING 日志和模板保留 ### 注意事项 - 本 PR 仅做必要条件过滤(保守过滤),不替换 ATT 最终 UB solver - 不修改对外 ABI/API,不新增 Python 绑定 - 不引入新的用户配置项或环境变量 - 不触发 runtime platform 初始化 ### 提交记录 | Commit | 描述 | 修改文件数 | 修改行数 | |--------|------|-----------|----------| | 15856eb | feat: add static ub template filter | 28 | +1790/-56 | | a8bd396 | test: cover named ub expr builder | 2 | +17/-0 | | aedf707 | fix: preserve platform info semantics for ub filter | 5 | +52/-12 | ### 修改文件清单 | 文件路径 | 修改类型 | 说明 | |---------|---------|------| | autofuse/optimize/static_ub_template_filter.h | 新增 | 静态 UB 模板过滤器头文件 | | autofuse/optimize/static_ub_template_filter.cpp | 新增 | 过滤器实现:遍历模板、求值、剪枝 | | autofuse/common/ub_expr/ub_expr_types.h | 新增 | UbExprContext/UbExprBuildResult 等公共类型 | | autofuse/common/ub_expr/asc_graph_ub_expr_builder.h | 新增 | AscGraph UB 表达式构建器头文件 | | autofuse/common/ub_expr/asc_graph_ub_expr_builder.cpp | 新增 | Queue/Buffer/TmpBuffer UB 表达式构建实现 | | autofuse/common/ub_expr/ub_expr_utils.h | 新增 | UB 表达式工具类头文件 | | autofuse/common/ub_expr/ub_expr_utils.cpp | 新增 | BuildUbExpr 实现 | | autofuse/common/platform_context.cpp | 修改 | 新增 TryGetInitializedPlatformInfo/TryGetUbSizeOverride | | autofuse/inc/common/platform_context.h | 修改 | 新增无副作用平台信息读取接口 | | autofuse/optimize/optimize.cpp | 修改 | AllocBufQue 后调用 StaticUbTemplateFilter | | autofuse/att/gen_model_info/gen_model_info.cpp | 修改 | 基于公共 UB builder 刷新 context | | autofuse/att/.../ub_named_expr_builder.h | 新增 | ATT 命名化 UB 表达式头文件 | | autofuse/att/.../ub_named_expr_builder.cpp | 新增 | ATT 命名化 UB 表达式实现 | | autofuse/att/.../axes_reorder_solver_gen.cpp | 修改 | 适配公共 UB 表达式接口 | | autofuse/tests/... (16 files) | 新增/修改 | UT/ST 测试用例和 runtime stub 适配 | See merge request: cann/graph-autofusion!964 | 2 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 11 天前 | ||
| 2 个月前 | ||
| 6 天前 | ||
| 1 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 2 个月前 | ||
| 2 天前 | ||
| 5 天前 | ||
| 2 个月前 | ||
| 6 天前 | ||
| 2 个月前 | ||
| 1 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 15 天前 | ||
| 6 天前 | ||
| 1 个月前 | ||
| 6 天前 | ||
| 2 个月前 | ||
| 5 天前 | ||
| 20 天前 | ||
| 1 个月前 | ||
| 2 个月前 |