| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
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 | 4 个月前 | |
【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 | 3 个月前 | |
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 | 4 个月前 | |
【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 | 3 个月前 | |
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 | 4 个月前 | |
【PR】bugfix: reduce算子融合case,1)针对ATT与Codegen校验merge_size问题统一取向量化轴repeats 2)针对codegen生成代码时2个broadcast算子消费同一父节点导致生成代码变量名冲突问题进行兼容解决 Co-authored-by: nikson<nisong1@huawei.com> # message auto-generated for no-merge-commit merge: !2156 merge develop into develop 【PR】bugfix: reduce算子融合case,1)针对ATT与Codegen校验merge_size问题统一取向量化轴repeats 2)针对codegen生成代码时2个broadcast算子消费同一父节点导致生成代码变量名冲突问题进行兼容解决 Created-by: tourse Commit-by: nikson Merged-by: cann-robot Description: # Pull Request ## 描述 【PR】bugfix: reduce算子融合case,1)针对ATT与Codegen校验merge_size问题统一取向量化轴repeats 2)针对codegen生成代码时2个broadcast算子消费同一父节点导致生成代码变量名冲突问题进行兼容解决 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 通过CI平台构建了AF包,上传到环境上进行了验证,明确了此前失败的用例已执行通过; 2. 针对其他此前执行成功的用例再新AF包中进行了验证,修改代码后仍然成功 3. 已通过gitcode平台CI流水线,UT执行通过 4. 针对修改的代码,已拉通相关模块熟悉的责任人明确修改无误且不引入额外问题 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!2156 | 1 个月前 | |
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 | 4 个月前 | |
feature: 多gather融合时,SIMT跨成员index链消费者豁免 + SIMD index内轴per-node hint Co-authored-by: wangyichao0421<wangyichao1@huawei.com> # message auto-generated for no-merge-commit merge: !2690 merge fix/multi-gather-simd-index-axis-and-simt-cross-member into develop feature: 多gather融合时,SIMT跨成员index链消费者豁免 + SIMD index内轴per-node hint Created-by: wangyichao0421 Commit-by: wangyichao0421 Merged-by: cann-robot Description: # Pull Request ## 描述 修复多 gather 水平融合在生产环境的调度与 codegen 崩溃链(SIMD index 内轴 per-node hint、调度期 Cannot find loop axis、fused 组 SIMT codegen 三处缺陷),并为共享 index 链的跨成员消费补 SIMT 豁免与全链路测试。 崩溃场景:embedding 双 gather(item + pos 两个 IndirectLoad → Add 归并),两路共享 index Load,primary 的 index 走 Broadcast 路、非 primary 的 index 为掩码链路(Mul/Select/Ne)。 **修复一:SIMD index 内轴 per-node hint** 与既有 input 内轴 hint 同构(SetSimdIndexInnerAxis / GetSimdIndexInnerAxis),设置点在 NormalizeSimdAxesForTemplate(primary,取 GetTemplateAxes 归一化终值)与 NormalizeSimdAxesForMember(非 primary 成员)。调度器优先读节点 hint、无 hint 回退全局,单 gather 行为不变。删除孤轴创建与unused常量;hint 写入带 kIdNone 守卫——共享 index 链节点落在多个成员 region 内,绝不写 kIdNone(≡ 无 hint 回退全局),防止后处理的 flag=false 成员覆写先处理的 flag=true 成员写的有效 hint(N≥3 或成员顺序不同时触发)。 **修复二:SIMT 跨成员豁免(group_exempt)——仅全组 SIMT 组路径** BuildGroupIndexExemptSet 收集全组成员 backward region 并集,FoldSimtIndexChainExternalStores 中并集内消费者豁免——共享 index Load 的跨成员消费者由另一成员的 evaluator 逐元素消费(寄存器级),不是真正外部消费者。单成员语义下并集 = 自身 region,行为与空集等价。 **修复三:调度期 Cannot find loop axis** SIMT 组候选(豁免修复后新进入调度)在 SelectLoopAxis 对 IL 成员断言失败。根因:AnnotateSimtTemplateRoles 给每个成员赋 kSimtOp(preserves_vectorized_axis=true 且不跳过主调度);组路径按成员循环调用 CompletePreservedVectorizedViews,primary 的调用把其他成员当普通保留节点播种输出 vectorized_axis——单 gather 路径该视图恒空(模板不变式),组路径破坏了它;SIMT 组 post_reduce 置空使 outer=全部输出轴合并,调度期 tensor merge 将播种轴重映射为 merged outer,FindNotLoopAxis 把 outer 塞进 not_loop 集,from 递归过滤掉成员全部调度轴(tile 轴 from={outer})→ 全滤 → 断言。修复:播种循环跳过全部 IndirectLoad(成员参数移除,单 gather/组/混模板三个调用点同步),恢复单 gather 奇偶性。 **修复四:混模板路径不做豁免(检视修正)** 共享 index 链场景某节点会同时落在 SIMT 与 SIMD 成员的 index region,角色赋值冲突(kSimtOp 的 skips_api_emit 覆盖 kSimdIndexPre 的 staging 发射)。ApplyGraphPassMixed 不建 group_exempt:SIMT 探测将共享 Load 的跨成员消费者判为外部而自然失败 → 成员结构强制回 SIMD → 全组同构 → 不产出混模板候选(UT 固定结论)。共享 index 链的混模板场景需后续专项设计,已注释标注。 **修复五:fused 组 SIMT codegen 链路三处缺陷(一次收口)** 豁免与调度修复后,SIMT 组候选以 L2/L3 fused 发射(单 evaluator/寄存器或 UB 归并)胜出并首次进入生产 codegen,暴露该链路零覆盖下的三处同模式缺陷——fused 按调度期事实查 tpipe/名单,而采集侧按角色跳过: 1. **成员 value 输入张量**:direct-GM 边界 Load(kSimtInputBoundary,skips_api_emit)不注册 tpipe、不生成 api call,L4 单成员路径经接线自然穿透到 GM 源,fused 直接读图视图查到未注册张量。修复:ResolveFusedMemberInputTensor 对齐接线约定——先按视图 id 查找,未命中沿 skips_api_emit【单输入】生产者链回溯到 GM 源(Data 输出张量,CompleteInputDataTensorAttrs 已拷贝 Load 视图,语义等价);多输入节点(Select/Mul 等)出现在 value 链上时返回 nullptr 显式失败——值非单一 GM 表,fused 单 GM 值表指针模型不支持,禁止猜测分支。 2. **UB 局部目标**:成员输出即 value 的 UB 局部目标(调度期真实 UB buffer 分配),kSimtOp 的 skips_ub_lifecycle 使 ShouldSkipTpipeTensorCollection 跳过采集,组路径无 post-Reduce 时既有豁免不生效。修复:采集豁免3——IndirectLoad + kSimtOp + 组员标记的输出纳入采集(注册仅暴露调度期既有分配;L3 归并链扇出向量代码经 tpipe 解析成员输出亦依赖此)。 3. **归并树常量标量**:归并树内 Broadcast 的常量源是 Scalar/ScalarData 节点(生产形态 scalar→Broadcast→mul),fused 发射集只收归并树与 side load 名单,标量缺席使 evaluator 的 values 映射取不到输入表达式。修复:发射集补一趟扫描——直接喂给已选节点的 Scalar/ScalarData 纳入(含经 Broadcast 间接供给),列表按图拓扑序重建(标量先于消费者);发射集内 ScalarData 统一注册 context.v_N 字段(与归并节点直接生产者路径合并去重),Scalar 经 EmitSimtScalarInput 内联常量。 **护栏** - GeneratorTask 候选产出后校验 IL 输出 vectorized 轴有效性:为空,或全部是当前视图 attr.axis 的子序列——拦截失效轴/外来轴类违约,合法 post-Reduce 形态不受影响。 - SelectLoopAxis 失败日志打印原始 sched 轴列表(axis 副本被滤轴已置 kIdNone 不可用),供 not_loop 判定与 from 链排查。 **平台依赖说明** 掩码链节点(Ne/Select/Mul/Broadcast)的 SIMT 标量可发射性仅在 V2 codegen 实现中判定(注册于 soc 3510/5102/9201/9202),其余平台掩码链不可发射。相关 UT 显式设置平台 soc_ver=3510。 ## 变更类型 - [x] 🐛 Bug 修复 - [x] ✨ 新功能 ## 关联的Issue 无(生产调度/codegen 崩溃驱动,如需追踪可后续补建) ## 如何测试 1. 既有单/多 gather UT 全量回归(单 gather 行为零变化) 2. 既有 SIMD codegen E2E 回归(rank2_axis1 / rank3_axis1_int64_gather / mixed_rank4_axis2 的 no-ERROR 断言) 3. 新增 MultiGatherSharedIndexMaskChainSimtNotRejected:共享 index Load(primary 掩码链 / 非 primary Broadcast)——断言全组 SIMT 候选不被外部消费者检查拒绝 4. 新增 MultiGatherSimdIndexInnerAxisHintForNonPrimary:断言 SIMD 候选中共享 index Load 角色为 kSimdIndexPre 且 hint 有效(硬断言) 5. 新增 MultiGatherSharedIndexChainSkipsMixedTemplateCandidate:断言共享 index 链下候选全组同构、不产出混模板候选 6. 新增 MultiGatherSimtGroupCandidateSchedulesLoopAxis:SIMT 组候选成员输出 vectorized 为空(不变式硬断言)+ 自动调度成功(生成期补 CompleteApiInfo 与主管线输入对齐) 7. 新增 MultiGatherMixedTemplateSchedulesLoopAxis:混模板候选(互补合法性形态)调度级回归——SIMT 成员修复前被播种同样触发 loop axis 断言 8. 新增 MultiGatherSharedIndexHintNotClobberedByMaskMember:N≥3 共享 index(两掩码链成员 + 一 Broadcast 成员)——硬断言有效 hint 不被后处理成员覆写 9. 新增 ResolveFusedMemberInputTensor 三个单测:边界 Load 回溯穿透 GM 源 / 视图已注册直接命中 / 多输入 value 节点显式失败 10. 新增 GeneratesFusedSimtGroupKernel:fused 组 SIMT 的 codegen 级端到端(生产同款管线 Optimizer::Optimize 全流程 + Codegen::Generate),归并树含常量标量乘,覆盖修复五全部三处 CI 全量流水线已通过(run#4138,ci-pipeline-passed,2026-10-29 21:37)。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 | 文件 | 改动 | |------|------| | indirect_load_utils.h/.cpp | 新增 SetSimdIndexInnerAxis / GetSimdIndexInnerAxis;采集豁免3(SIMT 组成员输出) | | indirect_load_schedule_case_generator.cpp | BuildGroupIndexExemptSet(全组 SIMT 组路径)+ hint 设置点(kIdNone 守卫)+ 播种跳过全部 IndirectLoad + IL 输出 vectorized 轴有效性护栏 + 混模板不豁免注释 | | autoschedule/autoschedule.cpp | SelectLoopAxis 失败日志打印原始 sched 轴列表 | | autoschedule/schedule.cpp | ApplyIndirectLoadNodeAxes 优先读 per-node index hint | | reg_indirect_load_api_call.cpp/.h | ResolveFusedMemberInputTensor(单输入回溯/显式失败)+ 发射集纳入归并树常量标量生产者 | | test_indirect_load_schedule_case_generator.cpp | shared_index_with_mask 选项 + N≥3 共享掩码链 builder 扩展 + 6 个复现 UT(显式 soc_ver=3510) | | test_codegen_indirect_load_api_call.cpp | resolver 三个单测 | | test_codegen_indirect_load_fused_group.cpp | fused 组 SIMT codegen 级端到端用例(AscBackend 宿主包装 + 全管线) | 分支已同步 upstream/develop(含 embedding sum 转置轴序用例,来自 develop 本身,不在本 PR 变更内)。 fused codegen 级用例复杂度已近 ST 形态(宿主图包装 + 全管线),后续建议迁移至 backend_e2e_v2 场景族统一维护。 See merge request: cann/graph-autofusion!2690 | 1 天前 | |
【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 | 3 个月前 | |
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 | 4 个月前 | |
【fix】: 删除AscirRegister当前不使用的成员函数 Co-authored-by: 李玥玮<liyuewei1@huawei.com> # message auto-generated for no-merge-commit merge: !1053 merge 2_local into develop 【fix】: 删除AscirRegister当前不使用的成员函数 Created-by: liyuewei Commit-by: 李玥玮 Merged-by: cann-robot Description: # Pull Request ## 描述 删除AscirRegister当前不使用的成员函数,这些功能已经移到CodegenImpl类中了。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的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!1053 | 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 | 4 个月前 | |
【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 | 3 个月前 | |
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 | 4 个月前 | |
feat: support IndexExpr and Arange autofusion Co-authored-by: Jett_Woo<wujinteng1@huawei.com> # message auto-generated for no-merge-commit merge: !1961 merge index-expr-device-validation-pr into develop feat: support IndexExpr and Arange autofusion Created-by: Jett_Woo Commit-by: Jett_Woo Merged-by: cann-robot Description: # Pull Request ## 描述 支持 IndexExpr 和 Arange 自动融合,补充 ASCIR/Python 接口、调度与 codegen 支持,并完善设备验证、UT 和 Backend E2E 用例。Arange 仅保留连续物理布局,数学上的非单位 step 仍受支持。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] Bug 修复 - [x] 新功能 - [ ] 代码风格更新(格式化,局部变量) - [ ] 重构(既不修复错误也不增加功能的代码变动) - [x] 构建过程或辅助工具的变动 - [ ] 文档内容更新 ## 关联的Issue 无 ## 如何测试 描述测试此变更的步骤和前提条件: 1. 已完成 IndexExpr/Arange 相关 C++ 定向 UT,12 passed。 2. 已完成 device-validation Python 定向测试,259 passed;Ascend950 fused 精度验证有效 133 个 cell,其中 131 个通过,reduce_mask 的两个既有通用 Reduce codegen 问题仍按实测结果保留。 3. 已完成相关构建目标编译验证,构建并行度限制为 -j 8。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 本 PR 基于远端 develop 分支新建。未包含 docs/、tool/、temp/、验证日志或生成产物。 See merge request: cann/graph-autofusion!1961 | 1 个月前 | |
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 | 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 | 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 | 4 个月前 | |
feat: reuse cv tiling wrapper compilation & support dtype-aware cv fusion Co-authored-by: xuyafei<xuyafei3@huawei.com> # message auto-generated for no-merge-commit merge: !1700 merge reapply-pr1657-cv-fusion into develop feat: reuse cv tiling wrapper compilation & support dtype-aware cv fusion Created-by: xuyafei Commit-by: xuyf;xuyafei Merged-by: cann-robot Description: ## 描述 ### 一、主要解决的问题 #### 1.1 CV tiling wrapper 重复编译 Inductor CV fusion 场景会生成主 tiling 源文件和 cube tiling wrapper 源文件。原流程在 host/device 链接链路中会随每次编译重新处理 wrapper 源文件, AutofuseDoCubeMatMulTiling 等 wrapper 实现会重复参与 host 编译,增加编译耗时。 本次将 CV tiling wrapper 编译为可复用 shared object,并按 wrapper 源码、CANN 路径、平台架构、SoC、编译选项等生成缓存 key,避免相同 wrapper 在同一缓存根目录下重复编译。 #### 1.2 非 CV 编译链路可能被 stale shared wrapper 状态污染 shared_cv_wrapper_so 是 CV wrapper 复用流程的中间状态。如果同一个编译参数对象或流程边界中残留该字段,非 CV host/device 链接不应追加 CV wrapper so,也不应切换到 CV 专用链接库。 本次补充非 CV 边界保护,确保 shared CV wrapper 只在 CVAutofuseTilingData 相关编译中生效。 #### 1.3 CV wrapper cache 目录清理策略 static_shape_kernel_proc 会清理临时目录。为了让 wrapper 编译产物可跨重编译阶段复用,需要保留 cv_tiling_wrapper_cache,避免静态 shape 重编译阶段误删缓存。 #### 1.4 CV 融合位宽/精度转换 CV fusion 场景中,Cast、RoundToInt、TruncToInt、FloorToInt 等位宽转换算子需要同时处理 float16、bfloat16、float32、int32 等不同输入/输出精度。原代码复用普通向量路径的一维 actual_size 和默认 stride,未按 CV stage 的二维 curAivM/curAivN 以及 dtype 位宽计算对齐,可能导致不同位宽转换链路中的 Cast 参数、DataCopy stride 或 RemovePad/GatherMask 处理不一致,进而影响转换精度和访存正确性。 本次补齐 CV stage 下的 dtype-aware dims/stride 生成逻辑:统一按 curAivM/curAivN 生成二维 Cast 参数,按 tensor dtype 计算 block-aligned N 方向 stride,并区分 UBFuse 与 fallback 路径处理 DataCopy。UBFuse 路径使用 dtype 对齐后的 load/store 参数并跳过不必要的 RemovePad;fallback 路径继续针对 1/2/4 字节类型生成 GatherMask 去 padding 逻辑,保证低位宽与高位宽数据在拷入、计算和拷出链路中的对齐语义一致。 #### 1.5 本次采用的性能优化手段 - **将 wrapper 编译从每次编译路径移到可复用缓存路径**:CV fusion 的主 tiling 逻辑会随图和 shape 变化重新生成,但 cube tiling wrapper 的共享实现相对稳定。将 wrapper 源文件单独编译为 libautofuse_cv_tiling_wrapper_<hash>.so 后,相同 wrapper 输入只在首次命中时编译一次,后续 host/device 链接直接复用缓存 so,减少重复 host 编译开销。 - **使用内容相关 cache key 保证复用正确性**:缓存 key 覆盖 wrapper 源码内容、CANN 安装路径、机器架构、SoC、编译选项和 stage。只有这些会影响 wrapper ABI 或编译结果的输入完全一致时才复用缓存,避免为了性能牺牲正确性。 - **split wrapper 独立编译,减少主 tiling 重编译体量**:识别 cube_kernel_tiling_wrapper.cpp 和 split 后的 *_tiling_func_BCubeKernelTilingWrapperCpp.cpp,将 wrapper 从普通 host source 列表中剥离。主 tiling 文件继续按图编译,wrapper 走共享 so 链接,降低单次 host 编译需要处理的源码规模。 - **文件锁串行化首次编译,避免并发重复构建**:多个编译任务同时命中同一 wrapper cache key 时,通过 .lock 文件保护首次构建流程。只有一个任务负责编译并原子替换最终 so,其他任务等待后复用结果,避免并发场景下重复编译和部分写入风险。 - **清理流程保留缓存目录,支持静态 shape 重编译复用**:静态 shape 重编译会清理临时目录并重新处理 device/host 产物。保留 cv_tiling_wrapper_cache 可以让首次编译生成的 wrapper so 在后续重编译阶段继续复用,避免 recompile 阶段再次构建相同 wrapper。 - **CV-only gating 避免非 CV 路径额外链接开销**:prepare_shared_cv_wrapper 和 append_shared_cv_wrapper_so 都以 is_cv_fusion_compile(args) 为边界。非 CV 编译不扫描、不编译、不链接 shared CV wrapper so,也不切换到 nnopbase 链接库,避免对普通 Autofuse 编译路径引入额外负担。 ### 二、修改方案 #### 2.1 抽离并复用 CV tiling wrapper 编译产物 - 新增 CV wrapper 源文件识别,覆盖 cube_kernel_tiling_wrapper.cpp 和 split 后的 *_tiling_func_BCubeKernelTilingWrapperCpp.cpp。 - 新增 get_shared_cv_wrapper_so_path,基于 wrapper 源码内容、CANN 安装路径、平台架构、SoC、编译选项、stage 生成稳定缓存文件名。 - 新增 ensure_shared_cv_wrapper_so,首次编译生成 libautofuse_cv_tiling_wrapper_<hash>.so,后续命中缓存直接复用。 - 使用文件锁保护并发首次编译,避免多个编译进程同时写同一个缓存 so。 - wrapper so 链接时使用 CV_HOST_LINK_LIBRARIES,包含 nnopbase。 #### 2.2 收敛 CV wrapper 对非 CV 流程的影响范围 - prepare_shared_cv_wrapper 仅在 is_cv_fusion_compile(args) 为 true 时拆出 wrapper 源文件。 - append_shared_cv_wrapper_so 仅在 CV 编译中追加 shared wrapper so。 - 非 CV host/device 链接保持原有 object 列表和 HOST_LINK_LIBRARIES。 #### 2.3 补齐 opbase 头文件路径 - host 编译 include 选项补充 pkg_inc 根目录和 machine-specific pkg_inc 根目录。 - machine-specific pkg_inc/base 优先于 generic pkg_inc/base,优先使用当前架构安装态头文件。 #### 2.4 保留 wrapper cache 目录 - clean_before_modify 保留 cv_tiling_wrapper_cache,避免静态 shape 重编译清理缓存。 ### 三、代码修改流程图 mermaid flowchart LR A[host_files 输入] ==> B{是否 CV fusion} B ==>|否| C[按原流程编译全部 host 源文件] B ==>|是| D[识别 cube wrapper 源文件] D ==> E{缓存 so 是否存在} E ==>|是| F[复用 libautofuse_cv_tiling_wrapper_<hash>.so] E ==>|否| G[文件锁保护首次编译 wrapper so] F ==> H[主 tiling object + wrapper so 链接] G ==> H C ==> I[非 CV host/device 链接不追加 wrapper so] ## 变更类型 - [ ] Bug 修复 - [x] 新功能 - [ ] 代码风格更新 - [x] 重构 - [ ] 构建过程或辅助工具的变动 - [ ] 文档内容更新 ## 关联的Issue 无。 ## 如何测试 ### 一、测试用例说明 #### 1.1 Python 单元测试 - test_compile_host_objs_skips_shared_cv_wrapper_source:验证 CV wrapper 源文件不再作为普通 host object 编译,改为生成 shared wrapper so。 - test_compile_host_objs_skips_split_shared_cv_wrapper_source:验证 split 文件名 BCubeKernelTilingWrapperCpp 也会走 shared wrapper 复用流程。 - test_ensure_shared_cv_wrapper_so_reuses_existing_so:验证命中缓存时不重复编译 wrapper。 - test_ensure_shared_cv_wrapper_so_serializes_concurrent_first_compile:验证并发首次编译通过文件锁串行化,只生成一次 wrapper so。 - test_build_device_so_ignores_shared_cv_wrapper_so_for_non_cv_compile:验证非 CV device 链接不会追加 stale shared CV wrapper so。 - test_link_host_target_ignores_shared_cv_wrapper_so_for_non_cv_compile:验证非 CV host 链接不会追加 stale shared CV wrapper so。 - test_clean_before_modify_keeps_shared_cv_wrapper_cache:验证静态 shape 重编译清理流程保留 wrapper cache。 - host include 相关用例验证新增 pkg_inc 路径和 include 优先级。 #### 1.2 C++ codegen 单元测试 - GenerateForInductorCvFusionShouldEmitCvTilingAndCubeWrapper:验证 CV fusion 仍生成主 tiling 和 cube wrapper 文件。 - GenerateForInductorCvFusionShouldCacheActualMatmulTilingBytes:验证 CV tiling 主流程仍保留 matmul tiling bytes 缓存逻辑。 - CubeWrapper*:验证 wrapper 源码结构、cache key、compile info、runtime shape fallback、tiling scratch 复用等关键行为。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已确认本次变更无需更新相关文档 - [x] 我在标题中使用了合适的类型标签 - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md) ## 其他信息 ### 影响范围 - 影响 Autofuse Python 编译辅助脚本中的 host 编译、host/device 链接和临时目录清理流程。 - 影响 Inductor CV fusion codegen 生成的 cube tiling wrapper 复用方式。 - 非 CV 编译流程保持原有 object/link library 行为,不追加 CV wrapper so。 - 不影响 SuperKernel、Runtime、Python/C++ 对外 API、ABI 或打包布局。 ### 注意事项 See merge request: cann/graph-autofusion!1700 | 2 个月前 | |
【PR】: [fix] 解决initializer list不支持int64转uint32的问题 Co-authored-by: xchu42<chuxing@huawei.com> # message auto-generated for no-merge-commit merge: !2691 merge dev into develop 【PR】: [fix] 解决initializer list不支持int64转uint32的问题 Created-by: xchu42 Commit-by: xchu42 Merged-by: cann-robot Description: # Pull Request ## 描述 fix: Concat/Split tiling结构体初始化列表增加uint32窄化转换,修复动态shape下int64表达式编译失败 tiler.Size/tiler.ActualSize生成的表达式类型可能为int64_t (如tile-inner向量化轴actual_size变量)或uint32_t(tiling_data字段), 而设备端ConcatParams/ConcatShape/ConcatTiling*/SplitTiling*结构体字段 均为uint32_t,聚合初始化禁止窄化转换,动态shape场景编译失败。 为ConcatApiCall(GenConcatParams/DefineConcatShape/ GenConcatTilingForAllAligned)及子类ConcatRegApiCall (DefineConcatTiling/DefineConcatTilingGather)、SplitRegApiCall (GenSplitTilingForAllAligned/DefineSplitTiling)中initializer list 场景的tiler.Size输出统一添加static_cast<uint32_t>(...), 与既有.num_rows处理方式对齐;同步更新v1/v35 UT golden。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的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!2691 | 2 天前 | |
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 | 4 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 4 个月前 | ||
| 3 个月前 | ||
| 4 个月前 | ||
| 3 个月前 | ||
| 4 个月前 | ||
| 1 个月前 | ||
| 4 个月前 | ||
| 1 天前 | ||
| 3 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 3 个月前 | ||
| 4 个月前 | ||
| 1 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 2 个月前 | ||
| 2 天前 | ||
| 4 个月前 |