| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
性能建模回退 Co-authored-by: hamburgerbobo<gaoyubo4@huawei.com> # message auto-generated for no-merge-commit merge: !2052 merge revert-mr-1812-1789089741892-auto into develop 性能建模回退 Created-by: hamburgerbobo Commit-by: hamburgerbobo Merged-by: cann-robot Description: # Pull Request 性能建模回退 See merge request: cann/graph-autofusion!2052 | 2 天前 | |
【PR】: AF日志易用性整改 Co-authored-by: s00357600sgd<shenguodong1@huawei.com> # message auto-generated for no-merge-commit merge: !1864 merge autofusion_log_daily_develop into develop 【PR】: AF日志易用性整改 Created-by: s003576sgd Commit-by: s00357600sgd Merged-by: cann-robot Description: # Pull Request ## 描述 整改工具扫描的日志中存在的拼写错误、中文、缺少度量单位等低级问题,并排查类似问题统一修改 ## 变更类型 请选择本次引入的变更类型: <!-- [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!1864 | 14 天前 | |
【PR】: [fix] [autofuse] modify the header files with the same names as ge and metadef. Co-authored-by: xingzhixiong<xingzhixiong@huawei.com> # message auto-generated for no-merge-commit merge: !1300 merge develop_change_same_name_headers into develop 【PR】: [fix] [autofuse] modify the header files with the same names as ge and metadef. Created-by: xingzhixiong Commit-by: xingzhixiong Merged-by: cann-robot Description: # Pull Request ## 描述 修改gaf仓与ge仓以及metadef仓同名的头文件。 ## 变更类型 请选择本次引入的变更类型: <!-- [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!1300 | 1 个月前 | |
【PR】: [fix] [autofuse] modify the header files with the same names as ge and metadef. Co-authored-by: xingzhixiong<xingzhixiong@huawei.com> # message auto-generated for no-merge-commit merge: !1300 merge develop_change_same_name_headers into develop 【PR】: [fix] [autofuse] modify the header files with the same names as ge and metadef. Created-by: xingzhixiong Commit-by: xingzhixiong Merged-by: cann-robot Description: # Pull Request ## 描述 修改gaf仓与ge仓以及metadef仓同名的头文件。 ## 变更类型 请选择本次引入的变更类型: <!-- [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!1300 | 1 个月前 | |
feat: 完善 IndirectLoad SIMD 和 SIMT 支持 Co-authored-by: xiebangrui<xiebangrui@huawei.com> # message auto-generated for no-merge-commit merge: !1542 merge IL into develop feat: 完善 IndirectLoad SIMD 和 SIMT 支持 Created-by: xiebangrui2025 Commit-by: xiebangrui Merged-by: cann-robot Description: ## 描述 完善 IndirectLoad 的 SIMD/SIMT 调度与代码生成链路:新增独立 regbase 实现,补充模板角色、轴与 direct-GM 处理,并扩展 Cast、BF16、UINT32 等 E2E 覆盖。同步补齐统一测试脚本中的全部 IndirectLoad E2E target。 ## 变更类型 - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无。 ## 如何测试 1. optimize_ut --gtest_filter='*IndirectLoad*':12/12 通过;Python IndirectLoad UT/ST 各 1/1 通过。 2. 全部 20 个 IndirectLoad codegen ST 和 20 个 generated kernel E2E 通过;generated tiling/kernel 编译通过,日志无非预期错误。 3. 目标文件 pre-commit、clang-format、codespell 和 staged OAT 检查通过。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已确认本次变更无需更新对外文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 SIMD 路径使用 Gather offset 表,SIMT 路径使用 direct-GM scalar transform;新增 BF16+INT64、UINT32+INT32 以及 Cast 穿过 IndirectLoad 的数值 E2E。 See merge request: cann/graph-autofusion!1542 | 1 个月前 | |
[chore]: Support Q2 building optimization - Support cmake targets 'runtime_headers' 'metadef_headers' Co-authored-by: zhuhaoran5<zhuhaoran5@huawei.com> # message auto-generated for no-merge-commit merge: !337 merge support_Q2_building_optimization into master 【chore】: 支持Q2工程优化 Created-by: zhuhaoran5 Commit-by: zhuhaoran5 Merged-by: cann-robot Description: # Pull Request ## 描述 支持Q2工程优化: 1. 支持 cmake targets 'runtime_headers' 'metadef_headers' ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 按照 README 部署构建环境 2. 执行所有构建场景的脚本命令,能执行成功并且产物包内容与先前一致 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!337 | 4 个月前 | |
fix: adapt graph-autofusion for gcc15 and gcc16 Co-authored-by: Ling-DT<lingxing@huawei.com> # message auto-generated for no-merge-commit merge: !1859 merge fix/gcc15-16-adapt-develop-pr into develop fix: adapt graph-autofusion for gcc15 and gcc16 Created-by: ling-DT Commit-by: Ling-DT Merged-by: cann-robot Description: --- title: "fix: adapt graph-autofusion for gcc15 and gcc16" labels: ["enhancement"] assignees: "ling-DT" --- # Pull Request ## 描述 将 gcc15/gcc16 适配相关修改重新整理为单个提交并发起 PR,包含 workflow 的 gcc_version 透传、AutoFuse 测试/代码生成适配、以及 SuperKernel 兼容头文件补充。 ## 变更类型 - [x] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 如何测试 1. git cherry-pick 732f14b2 已验证可干净应用到 upstream/develop。 2. git push origin fix/gcc15-16-adapt-develop-pr -u 已完成,Git hooks 检查通过。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定 See merge request: cann/graph-autofusion!1859 | 15 天前 | |
【fix】: Asin/Acos/Remainder修改为Simt接口 Co-authored-by: gcw_V3YyYBt1<gaoxin32@huawei.com> # message auto-generated for no-merge-commit merge: !2045 merge fix/asin-acos-simt into develop 【fix】: Asin/Acos/Remainder修改为Simt接口 Created-by: gcw_V3YyYBt1 Commit-by: gcw_V3YyYBt1 Merged-by: cann-robot Description: # Pull Request ## 描述 将 Autofuse V2 的 **Asin/Acos** 与 **Remainder(int32)** 算子执行路径切换为 SIMT 接口实现,与既有 Sin/Cos/Expm1 的 SIMT 机制对齐:SIMT kernel( __simt_vf__ + LAUNCH_BOUND(1024),线程按 threadIdx.x 步进 blockDim.x 逐元素计算)通过 AscendC::Simt::VF_CALL 启动,并配套 40 KiB SIMT dcache 预留。外部 ASCIR 类型、Python API、ATT 注册、tmp buffer 计算和 ApiCall 调用 ABI 均保持不变。 ## 问题 1. **Asin/Acos**:此前直接调用 AscendC 高阶 API(adv_api/math/asin.h/acos.h),性能比单算子差。 2. **Remainder(int32)**:原实现基于 AscendC::Reg:: 向量指令,性能比单算子差。 ## 修改方案 1. **新增 asin.h/acos.h regbase**:AsinSimtCompute/AcosSimtCompute(调用 Simt::Asin/Simt::Acos)+ AsinExtend/AcosExtend wrapper;CMake 生成 raw string 并在 ascendc_reg_base_api_register.cpp 注册;Codegen 类 GetApiName() 切换为 AsinExtend/AcosExtend,LoadApiHeaderFiles() 加载 asin_reg_base.h/acos_reg_base.h,IncludeApiHeaderFiles() 增加 SIMT 官方头;GetConversionDtype() 增加 FP16→FLOAT 转换(与 BF16→FLOAT 一致)。 2. **remainder.h int32 路径替换为 SIMT**:新增 RemainderIntSimtCompute(参考 ops-math 仓 FloorModInt_1:% 取余 + 符号差异修正 rem + src2,保证 floor 语义),通过 AscendC::Simt::VF_CALL 启动;删除 AscendC::Reg:: 向量实现 RemainderIntImplVF;Codegen IncludeApiHeaderFiles() 增加 simt_api/cpp/kernel_simt_intf.h。float 路径保持不变。 3. **图信息补全**(ascgraph_info_complete.cpp):CompleteElewiseApiInfo 为 Asin/Acos 及 int32 输入的 Remainder 设置 40 KiB SIMT dcache 预留;kOpTypeToComputeType 补全 Asin/Acos/Remainder 的 kComputeElewise 条目。 4. **测试断言增强**:asin/acos backend generator 断言 AsinExtend/AcosExtend、*SimtCompute、SIMT 头文件和 tiling dcache(40960);remainder int32 generator 同步增加 RemainderIntSimtCompute 与 dcache 断言。 ## 变更类型 - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue ## 如何测试 1. cmake --build build --target aihac_codegen -j 8 编译通过。 2. 运行 asin_bf16_test_codegen_v2 / acos_bf16_test_codegen_v2:断言 Extend/SimtCompute/SIMT 头/tiling dcache 全部通过。 3. 运行 remainder_int32_store_test_e2e_v2:ICPU(ascend950 模拟)3/3 通过,覆盖对齐/非对齐/较大 shape,输入含正负除数符号修正场景,golden 独立计算 floor 语义。 4. 回归:optimize_ut 651/651、test_main 878/878(0 failed)、regbase UT RemainderFloor_Test 通过;clang-format(v18.1.8 pre-commit 与 v21.1.4 双版本)检查通过。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 See merge request: cann/graph-autofusion!2045 | 1 天前 | |
fix:【 ABI约束】保证后端生成AutofuseTiling时使用前端的符号和顺序 Co-authored-by: zhang_shengjie<804425610@qq.com> # message auto-generated for no-merge-commit merge: !1753 merge fix/frontend-shape-abi-sync into develop fix:【 ABI约束】保证后端生成AutofuseTiling时使用前端的符号和顺序 Created-by: zhang_shengjie Commit-by: zhang_shengjie Merged-by: cann-robot Description: # Pull Request ## 1. 主要解决的问题 动态 shape 场景下,前端调用 AutofuseTiling(s0, s1, ...) 获取 tiling 解。后端经过 ASC 图序列化、优化和 impl graph 生成后,可能丢失原始前端 shape symbol,导致前后端对动态/静态 shape 的判断和 AutofuseTiling ABI 不一致: - 后端 impl graph 残留符号较少,可能生成无 shape 参数或参数不完整的 AutofuseTiling; - 前端仍按原始 ASC 图的完整符号列表调用; - 前端按照数字后缀自然排序,后端按照字符串排序,对于ks0, ks1, ks2, ks10的符号,前后端的顺序就会出现不一致; - host 调用时函数参数布局错位,最终触发 coredump/SegFault。 此外,ASC 图可能通过 CreateAxis(..., Symbol("s0")) 直接保存 shape symbol,而不注册到 GetAllSizeVar()。如果只读取 GetAllSizeVar(),会错误生成零动态参数的接口。 ## 2. 修改方案 ### 2.1 前端 ABI 符号捕获与排序 - 在图优化、RemoveDanglingNodes 等可能改写或丢失符号之前,从原始 ASC 图捕获前端 shape symbol; - 同时收集显式 SizeVar 以及轴、repeat、stride 等表达式中的自由符号,覆盖 Symbol("sN") 直存场景; - 对 ksN 按数字后缀自然排序:ks0, ks1, ks2, ks10;非 ksN 符号保持确定性字符串排序; - 通过 frontend_shape_vars_collected 区分“前端确实没有动态符号”和“旧结果未采集元数据”。 ### 2.2 对外接口与内部 tiling data 分离 - 对外 AutofuseTiling、Inductor/Pgo 入口、shape 参数、缓存 key 和静态 shape 接口使用完整前端 symbol 列表; - GetFrontendShapeVars() 作为兼容访问入口,旧结果回退到 origin_vars; - 内部 tiling data 生成仍保持原有逻辑:IsStaticSchedResult() 继续基于 impl graph 的 origin_vars 判断,避免因前端额外 symbol 生成过多 tiling data; - IsFrontendStaticSchedResult() 仅用于对外 ABI 的静态/动态接口判断,保证函数签名与前端调用一致。 ### 2.3 代码流程图 mermaid flowchart TD A[原始 ASC 图] --> B[收集 SizeVar 和表达式自由符号] B --> C[ksN 自然排序/去重] C --> D[frontend_shape_vars] D --> E[对外 AutofuseTiling ABI 和静态判定] D --> F[shape 参数、Pgo、cache key] G[优化后的 impl graph origin_vars] --> H[内部 tiling data 静态/动态判定] ## 3. 代码修改流程 - autofuse/common/ascgraph_info_complete.* - 增加原始 ASC 图 frontend symbol 捕获、ksN 排序和直接表达式 symbol 恢复; - autofuse/optimize/optimize.cpp - 在优化前保存 frontend symbol metadata; - autofuse/common/schedule_result.h、common_utils.* - 增加 frontend symbol 字段、兼容访问器和 frontend ABI 静态判定; - autofuse/codegen/codegen_tiling*.cpp - 对外接口相关代码使用 frontend symbol;内部 tiling data 静态逻辑保持 origin_vars; - 测试文件 - 增加 frontend symbol 优先级、回退、自然排序、ASC 表达式 symbol 恢复及端到端 ABI 顺序验证。 ## 4. 测试用例说明 ### 本地验证 - cmake --build build --target optimize_ut -j 8:通过; - cmake --build build --target pgo_add_abs_inductor_test_codegen -j 8:通过; - 相关 E2E 目标代码编译通过;本地直接运行受已有 CANN 动态库混装影响,出现 libascir.so 未定义符号,非本次代码编译错误。 ### 远端流水线 - 流水线:#1044214; - 提交:694862c4; - 结果:success; - ST_Test_autofuse_ascendc_api:通过; - PR 当前已恢复 ci-pipeline-passed label。 ### 新增/覆盖用例 - FrontendShapeVarsTakePrecedenceOverImplVars:impl graph 丢失符号时仍保持前端完整列表; - FrontendShapeVarsFallbackToOriginVars:旧结果兼容回退; - NormalizeKsNamesUsesNaturalOrder:验证 ks10/ks2/ks0/ks1 排序; - CollectsOriginalAscGraphSymbolsBeforeOptimization:验证原始 ASC 图符号捕获; - CollectsSymbolsEmbeddedInAxisExpressions:验证轴表达式直接使用 Symbol("s0"); - FrontendShapeAbiKeepsNaturalKsOrderWhenImplDropsSymbols:端到端验证 AutofuseTiling 签名和顺序。 ## 5. 核对清单 - [x] 已定位动态 shape 前后端 ABI 不一致根因 - [x] 已保持内部 tiling data 生成逻辑不变 - [x] 已补充符号恢复、排序和 ABI 回归测试 - [x] 已执行 clang-format、pre-commit 和 OAT 检查 - [x] 远端 ST_Test_autofuse_ascendc_api 已通过 - [ ] 未执行 /workspace/CANN-DevTool/att_gene bbit 验证:该路径不存在,实际目录为 /workspace/CANN-DevTools/att_generalization ## 6. 其他信息 - 本次修复不需要修改前端调用约定;后端从原始 ASC 图恢复完整 symbol 并统一顺序。 - 未修改 /workspace/CANN-DevTools 工作区中的既有用户改动。 - 未新增 tiling data,只修正对外接口使用的 shape symbol 集合和顺序。 See merge request: cann/graph-autofusion!1753 | 25 天前 | |
【PR】feat: sync develop to master 20260708 Co-authored-by: j18351891940<jiangrun3@hisilicon.com> Co-authored-by: xingzhixiong<xingzhixiong@huawei.com> # message auto-generated for no-merge-commit merge: !1235 merge develop into master 【PR】feat: sync develop to master 20260708 Created-by: zhanj Commit-by: xingzhixiong;j18351891940 Merged-by: cann-robot Description: # Pull Request ## 描述 【PR】feat: sync develop to master 20260708 ## 变更类型 请选择本次引入的变更类型: <!-- [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!1235 | 2 个月前 | |
【PR】feat: sync develop to master 20260708 Co-authored-by: j18351891940<jiangrun3@hisilicon.com> Co-authored-by: xingzhixiong<xingzhixiong@huawei.com> # message auto-generated for no-merge-commit merge: !1235 merge develop into master 【PR】feat: sync develop to master 20260708 Created-by: zhanj Commit-by: xingzhixiong;j18351891940 Merged-by: cann-robot Description: # Pull Request ## 描述 【PR】feat: sync develop to master 20260708 ## 变更类型 请选择本次引入的变更类型: <!-- [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!1235 | 2 个月前 | |
【PR】: [feat] [autofuse] optimization of gaf open headers. Co-authored-by: xingzhixiong<xingzhixiong@huawei.com> # message auto-generated for no-merge-commit merge: !1087 merge develop_pkg_inc into develop 【PR】: [feat] [autofuse] optimization of gaf open headers. Created-by: xingzhixiong Commit-by: xingzhixiong Merged-by: cann-robot Description: # Pull Request ## 描述 优化ge仓与gaf仓之间的头文件依赖关系,便于后续移除gaf仓开放到cann包中的头文件,等ascir标准化需求落地后再开放标准API。 ## 变更类型 请选择本次引入的变更类型: <!-- [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!1087 | 2 个月前 | |
【PR】: [feat] [autofuse] optimization of gaf open headers. Co-authored-by: xingzhixiong<xingzhixiong@huawei.com> # message auto-generated for no-merge-commit merge: !1087 merge develop_pkg_inc into develop 【PR】: [feat] [autofuse] optimization of gaf open headers. Created-by: xingzhixiong Commit-by: xingzhixiong Merged-by: cann-robot Description: # Pull Request ## 描述 优化ge仓与gaf仓之间的头文件依赖关系,便于后续移除gaf仓开放到cann包中的头文件,等ascir标准化需求落地后再开放标准API。 ## 变更类型 请选择本次引入的变更类型: <!-- [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!1087 | 2 个月前 | |
【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 个月前 | |
【PR】: [fix] [autofuse] modify the header files with the same names as ge and metadef. Co-authored-by: xingzhixiong<xingzhixiong@huawei.com> # message auto-generated for no-merge-commit merge: !1300 merge develop_change_same_name_headers into develop 【PR】: [fix] [autofuse] modify the header files with the same names as ge and metadef. Created-by: xingzhixiong Commit-by: xingzhixiong Merged-by: cann-robot Description: # Pull Request ## 描述 修改gaf仓与ge仓以及metadef仓同名的头文件。 ## 变更类型 请选择本次引入的变更类型: <!-- [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!1300 | 1 个月前 | |
【fix】: 修复FusedBackend场景的一些问题 Co-authored-by: 李玥玮<liyuewei1@huawei.com> # message auto-generated for no-merge-commit merge: !1834 merge 0_local into develop 【fix】: 修复FusedBackend场景的一些问题 Created-by: liyuewei Commit-by: 李玥玮 Merged-by: cann-robot Description: # Pull Request ## 描述 1、ATT没有过滤workspace节点同时是整图output节点的情况,导致编译错误。这种情况复用output的GM即可,不必另外申请workspace。 2、ATT生成tiling代码时没有考虑多AscBackend节点的情况,导致编译错误。这种情况tiling_data结构体是多级的,不能默认在最外层结构体调用成员变量。 3、把tiling_data中的workspace_size改为workspace_offset语义,kernel代码里就不需要累加了,也不会生成多余的GlobalTensor。 4、workspace连接两张子图,通过两张子图的切分情况都可以计算出workspace大小,但是ATT没有取最大值,应该修改为取max作为结果。 ## 变更类型 请选择本次引入的变更类型: <!-- [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!1834 | 10 天前 | |
【fix】: 修复FusedBackend场景的一些问题 Co-authored-by: 李玥玮<liyuewei1@huawei.com> # message auto-generated for no-merge-commit merge: !1834 merge 0_local into develop 【fix】: 修复FusedBackend场景的一些问题 Created-by: liyuewei Commit-by: 李玥玮 Merged-by: cann-robot Description: # Pull Request ## 描述 1、ATT没有过滤workspace节点同时是整图output节点的情况,导致编译错误。这种情况复用output的GM即可,不必另外申请workspace。 2、ATT生成tiling代码时没有考虑多AscBackend节点的情况,导致编译错误。这种情况tiling_data结构体是多级的,不能默认在最外层结构体调用成员变量。 3、把tiling_data中的workspace_size改为workspace_offset语义,kernel代码里就不需要累加了,也不会生成多余的GlobalTensor。 4、workspace连接两张子图,通过两张子图的切分情况都可以计算出workspace大小,但是ATT没有取最大值,应该修改为取max作为结果。 ## 变更类型 请选择本次引入的变更类型: <!-- [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!1834 | 10 天前 | |
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 个月前 | |
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 | 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 | 2 天前 | |
【PR】: [feat] 只对Load节点做L2CacheHint Co-authored-by: xchu42<chuxing@huawei.com> # message auto-generated for no-merge-commit merge: !2011 merge devel into develop 【PR】: [feat] 只对Load节点做L2CacheHint Created-by: xchu42 Commit-by: xchu42 Merged-by: cann-robot Description: # Pull Request ## 描述 请清晰准确地描述本次 Pull Request 的意图和变更内容。 Nddma节点禁用L2Cache可能会导致性能劣化,暂只对Load节点做L2CacheHint ## 变更类型 请选择本次引入的变更类型: <!-- [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!2011 | 4 天前 | |
【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 个月前 | |
【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:【 ABI约束】保证后端生成AutofuseTiling时使用前端的符号和顺序 Co-authored-by: zhang_shengjie<804425610@qq.com> # message auto-generated for no-merge-commit merge: !1753 merge fix/frontend-shape-abi-sync into develop fix:【 ABI约束】保证后端生成AutofuseTiling时使用前端的符号和顺序 Created-by: zhang_shengjie Commit-by: zhang_shengjie Merged-by: cann-robot Description: # Pull Request ## 1. 主要解决的问题 动态 shape 场景下,前端调用 AutofuseTiling(s0, s1, ...) 获取 tiling 解。后端经过 ASC 图序列化、优化和 impl graph 生成后,可能丢失原始前端 shape symbol,导致前后端对动态/静态 shape 的判断和 AutofuseTiling ABI 不一致: - 后端 impl graph 残留符号较少,可能生成无 shape 参数或参数不完整的 AutofuseTiling; - 前端仍按原始 ASC 图的完整符号列表调用; - 前端按照数字后缀自然排序,后端按照字符串排序,对于ks0, ks1, ks2, ks10的符号,前后端的顺序就会出现不一致; - host 调用时函数参数布局错位,最终触发 coredump/SegFault。 此外,ASC 图可能通过 CreateAxis(..., Symbol("s0")) 直接保存 shape symbol,而不注册到 GetAllSizeVar()。如果只读取 GetAllSizeVar(),会错误生成零动态参数的接口。 ## 2. 修改方案 ### 2.1 前端 ABI 符号捕获与排序 - 在图优化、RemoveDanglingNodes 等可能改写或丢失符号之前,从原始 ASC 图捕获前端 shape symbol; - 同时收集显式 SizeVar 以及轴、repeat、stride 等表达式中的自由符号,覆盖 Symbol("sN") 直存场景; - 对 ksN 按数字后缀自然排序:ks0, ks1, ks2, ks10;非 ksN 符号保持确定性字符串排序; - 通过 frontend_shape_vars_collected 区分“前端确实没有动态符号”和“旧结果未采集元数据”。 ### 2.2 对外接口与内部 tiling data 分离 - 对外 AutofuseTiling、Inductor/Pgo 入口、shape 参数、缓存 key 和静态 shape 接口使用完整前端 symbol 列表; - GetFrontendShapeVars() 作为兼容访问入口,旧结果回退到 origin_vars; - 内部 tiling data 生成仍保持原有逻辑:IsStaticSchedResult() 继续基于 impl graph 的 origin_vars 判断,避免因前端额外 symbol 生成过多 tiling data; - IsFrontendStaticSchedResult() 仅用于对外 ABI 的静态/动态接口判断,保证函数签名与前端调用一致。 ### 2.3 代码流程图 mermaid flowchart TD A[原始 ASC 图] --> B[收集 SizeVar 和表达式自由符号] B --> C[ksN 自然排序/去重] C --> D[frontend_shape_vars] D --> E[对外 AutofuseTiling ABI 和静态判定] D --> F[shape 参数、Pgo、cache key] G[优化后的 impl graph origin_vars] --> H[内部 tiling data 静态/动态判定] ## 3. 代码修改流程 - autofuse/common/ascgraph_info_complete.* - 增加原始 ASC 图 frontend symbol 捕获、ksN 排序和直接表达式 symbol 恢复; - autofuse/optimize/optimize.cpp - 在优化前保存 frontend symbol metadata; - autofuse/common/schedule_result.h、common_utils.* - 增加 frontend symbol 字段、兼容访问器和 frontend ABI 静态判定; - autofuse/codegen/codegen_tiling*.cpp - 对外接口相关代码使用 frontend symbol;内部 tiling data 静态逻辑保持 origin_vars; - 测试文件 - 增加 frontend symbol 优先级、回退、自然排序、ASC 表达式 symbol 恢复及端到端 ABI 顺序验证。 ## 4. 测试用例说明 ### 本地验证 - cmake --build build --target optimize_ut -j 8:通过; - cmake --build build --target pgo_add_abs_inductor_test_codegen -j 8:通过; - 相关 E2E 目标代码编译通过;本地直接运行受已有 CANN 动态库混装影响,出现 libascir.so 未定义符号,非本次代码编译错误。 ### 远端流水线 - 流水线:#1044214; - 提交:694862c4; - 结果:success; - ST_Test_autofuse_ascendc_api:通过; - PR 当前已恢复 ci-pipeline-passed label。 ### 新增/覆盖用例 - FrontendShapeVarsTakePrecedenceOverImplVars:impl graph 丢失符号时仍保持前端完整列表; - FrontendShapeVarsFallbackToOriginVars:旧结果兼容回退; - NormalizeKsNamesUsesNaturalOrder:验证 ks10/ks2/ks0/ks1 排序; - CollectsOriginalAscGraphSymbolsBeforeOptimization:验证原始 ASC 图符号捕获; - CollectsSymbolsEmbeddedInAxisExpressions:验证轴表达式直接使用 Symbol("s0"); - FrontendShapeAbiKeepsNaturalKsOrderWhenImplDropsSymbols:端到端验证 AutofuseTiling 签名和顺序。 ## 5. 核对清单 - [x] 已定位动态 shape 前后端 ABI 不一致根因 - [x] 已保持内部 tiling data 生成逻辑不变 - [x] 已补充符号恢复、排序和 ABI 回归测试 - [x] 已执行 clang-format、pre-commit 和 OAT 检查 - [x] 远端 ST_Test_autofuse_ascendc_api 已通过 - [ ] 未执行 /workspace/CANN-DevTool/att_gene bbit 验证:该路径不存在,实际目录为 /workspace/CANN-DevTools/att_generalization ## 6. 其他信息 - 本次修复不需要修改前端调用约定;后端从原始 ASC 图恢复完整 symbol 并统一顺序。 - 未修改 /workspace/CANN-DevTools 工作区中的既有用户改动。 - 未新增 tiling data,只修正对外接口使用的 shape symbol 集合和顺序。 See merge request: cann/graph-autofusion!1753 | 25 天前 | |
【PR】: fix: 调整 tensor layout 工具归属和搬运模式 Co-authored-by: qq_40517592<panhailin@huawei.com> # message auto-generated for no-merge-commit merge: !1932 merge develop_0902 into develop 【PR】: fix: 调整 tensor layout 工具归属和搬运模式 Created-by: qq_40517592 Commit-by: qq_40517592 Merged-by: cann-robot Description: # Pull Request ## 描述 当前codegen和schedule对数据搬运 padding mode方式判断不一致,需要进行归一;调整 tensor layout 工具(TensorLayoutUtils)的归属位置,并重构搬运(DMA)时 padding 模式的判定逻辑:GetPaddingMode 不再依赖 tpipe 与 DataCopyParams,而是通过 TensorLayoutUtils::AnalyzeLoadDiscontinuity 分析 UB tensor 的布局属性(axis、axis_size、axis_strides、vectorized_axis)决定使用 Compact 还是 Normal 模式,同时新增对应单元测试并更新既有 codegen 测试期望 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 修复后 执行用例tc_af_tf_autofuse_pointwise_696_Cast_RealDiv_SelectV2_1170成功,精度和性能问题满足用例要求 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 变更摘要 本 PR 主要调整 tensor layout 工具(TensorLayoutUtils)的归属位置,并重构搬运(DMA)时 padding 模式的判定逻辑:GetPaddingMode 不再依赖 tpipe 与 DataCopyParams,而是通过 TensorLayoutUtils::AnalyzeLoadDiscontinuity 分析 UB tensor 的布局属性(axis、axis_size、axis_strides、vectorized_axis)决定使用 Compact 还是 Normal 模式,同时新增对应单元测试并更新既有 codegen 测试期望。 主要改动 工具归属调整: 将 tensor_layout_utils.cpp/.h 迁移至 autofuse/common/ 目录,并在 .cpp 中移除对 schedule_utils.h 的依赖。 重写 GetPaddingMode 判定逻辑: 函数签名由 GetPaddingMode(const TPipe &tpipe, const Tensor &ub_tensor, const DataCopyParams &data_copy_param) 简化为 GetPaddingMode(const Tensor &ub_tensor),改为调用 TensorLayoutUtils::AnalyzeLoadDiscontinuity 分析 UB tensor 布局:分析成功且无多重不连续(has_multiple_discontinuities 为假)时返回 kCompactPddingMode,否则返回 kNormalPddingMode;头文件声明及 CreateEnhanceDmaCall、BuildDataCopyApiParamInNormal 两处调用点同步更新。 新增单元测试: 新增 autofuse/tests/ut/common/test_tensor_layout_utils.cpp,覆盖连续布局、单一/多重不连续、尾轴不连续、广播轴忽略,以及 vectorized_axis 缺失、布局属性长度不足返回失败等场景。 更新 codegen 测试期望: 调整 test_codegen_load_reg_api_call.cpp 与 test_codegen_store_reg_api_call.cpp 中 DataCopyPadExtend 的 PaddingMode 期望值(部分用例由 Normal 改为 Compact,部分反之),以匹配新的 padding 模式选择逻辑。 See merge request: cann/graph-autofusion!1932 | 9 天前 | |
【PR】: fix: 调整 tensor layout 工具归属和搬运模式 Co-authored-by: qq_40517592<panhailin@huawei.com> # message auto-generated for no-merge-commit merge: !1932 merge develop_0902 into develop 【PR】: fix: 调整 tensor layout 工具归属和搬运模式 Created-by: qq_40517592 Commit-by: qq_40517592 Merged-by: cann-robot Description: # Pull Request ## 描述 当前codegen和schedule对数据搬运 padding mode方式判断不一致,需要进行归一;调整 tensor layout 工具(TensorLayoutUtils)的归属位置,并重构搬运(DMA)时 padding 模式的判定逻辑:GetPaddingMode 不再依赖 tpipe 与 DataCopyParams,而是通过 TensorLayoutUtils::AnalyzeLoadDiscontinuity 分析 UB tensor 的布局属性(axis、axis_size、axis_strides、vectorized_axis)决定使用 Compact 还是 Normal 模式,同时新增对应单元测试并更新既有 codegen 测试期望 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 修复后 执行用例tc_af_tf_autofuse_pointwise_696_Cast_RealDiv_SelectV2_1170成功,精度和性能问题满足用例要求 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 变更摘要 本 PR 主要调整 tensor layout 工具(TensorLayoutUtils)的归属位置,并重构搬运(DMA)时 padding 模式的判定逻辑:GetPaddingMode 不再依赖 tpipe 与 DataCopyParams,而是通过 TensorLayoutUtils::AnalyzeLoadDiscontinuity 分析 UB tensor 的布局属性(axis、axis_size、axis_strides、vectorized_axis)决定使用 Compact 还是 Normal 模式,同时新增对应单元测试并更新既有 codegen 测试期望。 主要改动 工具归属调整: 将 tensor_layout_utils.cpp/.h 迁移至 autofuse/common/ 目录,并在 .cpp 中移除对 schedule_utils.h 的依赖。 重写 GetPaddingMode 判定逻辑: 函数签名由 GetPaddingMode(const TPipe &tpipe, const Tensor &ub_tensor, const DataCopyParams &data_copy_param) 简化为 GetPaddingMode(const Tensor &ub_tensor),改为调用 TensorLayoutUtils::AnalyzeLoadDiscontinuity 分析 UB tensor 布局:分析成功且无多重不连续(has_multiple_discontinuities 为假)时返回 kCompactPddingMode,否则返回 kNormalPddingMode;头文件声明及 CreateEnhanceDmaCall、BuildDataCopyApiParamInNormal 两处调用点同步更新。 新增单元测试: 新增 autofuse/tests/ut/common/test_tensor_layout_utils.cpp,覆盖连续布局、单一/多重不连续、尾轴不连续、广播轴忽略,以及 vectorized_axis 缺失、布局属性长度不足返回失败等场景。 更新 codegen 测试期望: 调整 test_codegen_load_reg_api_call.cpp 与 test_codegen_store_reg_api_call.cpp 中 DataCopyPadExtend 的 PaddingMode 期望值(部分用例由 Normal 改为 Compact,部分反之),以匹配新的 padding 模式选择逻辑。 See merge request: cann/graph-autofusion!1932 | 9 天前 | |
feat: 【编译性能优化】TilingFunc支持按需引用头文件 Co-authored-by: zhang_shengjie<804425610@qq.com> # message auto-generated for no-merge-commit merge: !1530 merge fix/tiling-func-split-header-resubmit into develop feat: 【编译性能优化】TilingFunc支持按需引用头文件 Created-by: zhang_shengjie Commit-by: zhang_shengjie Merged-by: cann-robot Description: # Pull Request ## 描述 TilingFunc 拆分编译场景中,每个翻译单元原先都会展开完整的 autofuse_tiling_func_common.h,多 group 并发编译时会重复解析与当前 .cpp 无关的标准库、运行时声明和结构体定义。本 PR 引入显式源码依赖模型,将公共内容拆为自包含原子头,并按生成代码的实际依赖渲染每个翻译单元,降低 host 编译的预处理、解析时间和峰值内存。 ## 修改方案 ### 显式依赖模型 新增 autofuse/common/tiling_source_dependencies.h,统一描述和渲染生成源码: | 接口 | 作用 | | --- | --- | | GeneratedCode | 保存代码正文及直接依赖 | | SourceDependencies | 分别登记标准头、外部头和生成头 | | AppendGeneratedCode | 合并正文及依赖并集 | | RenderTranslationUnit | 输出仅包含直接依赖的 .cpp | | RenderGeneratedHeader | 输出自包含原子头 | ### 自包含原子头与按需 include - 生成 State、Log、PGO、Solver、API 五类原子头,autofuse_tiling_data.h 保持独立。 - 原子头之间不互相 include,仅包含定义自身所必需的标准头和外部头。 - group、tail、solver、entry 根据实际生成的代码片段登记依赖;可选的变量关系、PGO runtime、CV fusion、workspace 表达式仅在使用对应能力时引入相关头文件。 - Operator Cache 的 HIT/MISS/SAVE 日志、命中计数和缓存老化行为保持不变。 ### TF、Inductor 与兼容路径 - TF 路径由 asc_codegen_compile.py 按固定 key 将原子头和 .cpp 直接落盘;原子格式不再落盘 autofuse_tiling_func_common.h。 - Inductor 路径通过 marker stream 传输固定 key,由 compile_adapter.py 解析并落盘;marker 不进入实际编译文件。 - 未携带 State key 的既有输入继续使用 common 格式;Base、Entry、Tail key 保留为历史输入兼容项。 mermaid flowchart LR A[ATT 与 Codegen 生成代码片段] --> B[登记正文与直接依赖] B --> C[统一合并去重与渲染] C --> D[State Log PGO Solver API 原子头] C --> E[按需 include 的翻译单元] D --> F{消费路径} E --> F F -->|TF| G[按固定 key 直接落盘] F -->|Inductor| H[marker 解析后落盘] F -->|Legacy| I[common 格式兼容] G --> J[host compile] H --> J I --> J ## 变更类型 - [ ] Bug 修复 - [x] 新功能 - [ ] 代码风格更新 - [x] 重构 - [x] 构建过程或辅助工具的变动 - [ ] 文档内容更新 ## 关联的 Issue 无。 ## 测试验证 | 范围 | 结果 | 覆盖点 | | --- | --- | --- | | ATT UT | 997/997 通过 | 依赖登记、原子头生成、Operator Cache 行为 | | Codegen UT | 699 通过,6 跳过 | renderer、TF/Inductor entry、marker、兼容路径和 CV fusion | | Optimize UT | 484 通过,8 跳过 | 既有功能回归 | | Common UT | 78/78 通过 | 既有功能回归 | | Python UT | 43/43 通过 | 固定 key 落盘、marker 解析和兼容路径 | | Inductor split compile E2E | 1/1 通过 | 多翻译单元独立编译、链接和运行 | | 静态检查 | 通过 | clang-format、git diff check、pre-commit、OAT | ## 编译性能收益 使用相同生成正文和相同翻译单元数量,以“每个翻译单元包含完整 common 头”为基线。测试环境为 CANN 9.1、GCC 9;串行编译 5 轮、8 并发编译 7 轮,取中位数;RSS 为单个编译进程峰值。 | 场景 | TU | 预处理行数 | 串行编译 | 8 并发编译 | max RSS | | --- | ---: | ---: | ---: | ---: | ---: | | TF 多 group | 8 | 741912 → 634617,下降 14.5% | 7.435 s → 5.548 s,提升 25.4% | 1.783 s → 1.279 s,提升 28.3% | 192172 KB → 154488 KB,下降 19.6% | | Inductor 多 group | 6 | 574836 → 452723,下降 21.2% | 6.792 s → 4.840 s,提升 28.7% | 2.014 s → 1.635 s,提升 18.8% | 225052 KB → 179872 KB,下降 20.1% | TF 和 Inductor 场景的预处理展开代码分别减少约 10.7 万行和 12.2 万行,include tree 节点分别下降 15.4% 和 21.4%。 五组原子头 marker 的协议开销为 460 bytes,相对单组 marker 净增约 368 bytes;在 unique topn 和 multi concat 的 host_impl 中分别约占 0.22% 和 0.15%。marker 解析后不进入 .h/.cpp,不影响 host 编译。 ## 核对清单 - [x] 代码遵循项目代码风格 - [x] 已完成相关自测和回归测试 - [x] 已更新相关测试 - [x] 标题使用合适的类型标签 - [x] 已阅读并遵守贡献指南 ## 变更范围 | 范围 | 说明 | | --- | --- | | autofuse/common/ | 显式依赖模型和统一 renderer | | autofuse/att/、autofuse/codegen/ | 登记直接依赖并生成自包含原子头和按需翻译单元 | | autofuse/compiler/python/ | TF/Inductor 原子文件落盘和既有格式兼容 | | autofuse/tests/ | 覆盖原子头、按需依赖、缓存行为、marker、兼容路径和多 group 编译 | See merge request: cann/graph-autofusion!1530 | 1 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 天前 | ||
| 14 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 4 个月前 | ||
| 15 天前 | ||
| 1 天前 | ||
| 25 天前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 10 天前 | ||
| 10 天前 | ||
| 2 个月前 | ||
| 2 天前 | ||
| 2 天前 | ||
| 4 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 25 天前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 1 个月前 |