| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix: precommit整改 Co-authored-by: yelongjian<yelongjian1@huawei.com> # message auto-generated for no-merge-commit merge: !3726 merge dev-precommit into develop fix: precommit整改 Created-by: yelongjian Commit-by: yelongjian Merged-by: cann-robot Description: # Pull Request ## 描述 precommit整改 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1.NA ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!3726 | 2 个月前 | |
fix: precommit整改 Co-authored-by: yelongjian<yelongjian1@huawei.com> # message auto-generated for no-merge-commit merge: !3726 merge dev-precommit into develop fix: precommit整改 Created-by: yelongjian Commit-by: yelongjian Merged-by: cann-robot Description: # Pull Request ## 描述 precommit整改 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1.NA ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!3726 | 2 个月前 | |
fix: precommit整改 Co-authored-by: yelongjian<yelongjian1@huawei.com> # message auto-generated for no-merge-commit merge: !3726 merge dev-precommit into develop fix: precommit整改 Created-by: yelongjian Commit-by: yelongjian Merged-by: cann-robot Description: # Pull Request ## 描述 precommit整改 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1.NA ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!3726 | 2 个月前 | |
fix: precommit整改 Co-authored-by: yelongjian<yelongjian1@huawei.com> # message auto-generated for no-merge-commit merge: !3726 merge dev-precommit into develop fix: precommit整改 Created-by: yelongjian Commit-by: yelongjian Merged-by: cann-robot Description: # Pull Request ## 描述 precommit整改 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1.NA ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!3726 | 2 个月前 | |
fix: fix clean code warnings Co-authored-by: likun104<likun104@h-partners.com> # message auto-generated for no-merge-commit merge: !3941 merge br_fix_clean_code_warnings_0709 into develop fix: fix clean code warnings Created-by: likun104 Commit-by: likun104 Merged-by: cann-robot Description: # Pull Request ## 描述 清理ge仓中的clean code告警 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 流水线跑通过 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!3941 | 18 天前 | |
fix: precommit整改 Co-authored-by: yelongjian<yelongjian1@huawei.com> # message auto-generated for no-merge-commit merge: !3726 merge dev-precommit into develop fix: precommit整改 Created-by: yelongjian Commit-by: yelongjian Merged-by: cann-robot Description: # Pull Request ## 描述 precommit整改 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1.NA ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!3726 | 2 个月前 | |
fix: precommit整改 Co-authored-by: yelongjian<yelongjian1@huawei.com> # message auto-generated for no-merge-commit merge: !3726 merge dev-precommit into develop fix: precommit整改 Created-by: yelongjian Commit-by: yelongjian Merged-by: cann-robot Description: # Pull Request ## 描述 precommit整改 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1.NA ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!3726 | 2 个月前 | |
feat: 为 PassPluginLoader Load/Unload 补充 active_users_ 日志 Co-authored-by: qq_45842700<caodazhou@huawei.com> # message auto-generated for no-merge-commit merge: !4409 merge feat/add-pass-plugin-active-users-log into develop feat: 为 PassPluginLoader Load/Unload 补充 active_users_ 日志 Created-by: Dazhou_Cao Commit-by: qq_45842700 Merged-by: cann-robot Description: --- title: "feat: 为 PassPluginLoader Load/Unload 补充 active_users_ 日志" labels: ["enhancement"] assignees: "Dazhou_Cao" --- # Pull Request ## 描述 对齐 Custom Op 侧 runtime/custom_op/custom_op_loader.cc 的日志风格,在 compiler/graph/fusion/pass/pass_plugin_loader.cc 的 PassPluginLoader::Load() 和 PassPluginLoader::Unload() 中,于 active_users_ 计数增减后补充 GELOGD 日志,便于 pass 插件加载/卸载链路的问题定位。 变更点: - Load():active_users_++ 后新增 GELOGD("LoadPassPlugins active_users_=%zu", active_users_) - Unload():active_users_-- 后新增 GELOGD("UnloadPassPlugins active_users_=%zu", active_users_) ## 变更类型 - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue ## 如何测试 1. 配置 Debug 日志级别后加载模型触发 pass 插件加载,确认日志中出现 LoadPassPlugins active_users_=1 2. 反复加载/卸载,确认计数正确增减并打印 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 日志级别使用 GELOGD 与 Custom Op 侧现有日志保持一致,仅在 Debug 级别下输出,不会影响正常运行日志体量。 See merge request: cann/ge!4409 | 20 天前 | |
fix: 修复aclop与图模式混跑时自定义Pass资源被提前释放的问题 Co-authored-by: qq_45842700<caodazhou@huawei.com> # message auto-generated for no-merge-commit merge: !4243 merge fix/custom-pass-lifecycle-v2 into develop fix: 修复aclop与图模式混跑时自定义Pass资源被提前释放的问题 Created-by: qq_45842700 Commit-by: qq_45842700 Merged-by: cann-robot Description: ## 描述 修复 aclop 单算子编译与 GeSession 图编译混跑时,自定义 Pass 资源被提前释放的问题。 **问题根因**: GeGenerator::Finalize() 调用 ShutdownPassPluginsForProcess() 执行进程级 Pass 卸载,清空 registration_datas_ 并 dlclose 动态库句柄。aclop 单算子编译结束后会释放仍被 GeSession 图编译依赖的 Pass 资源,导致后续图编译中自定义 Pass 不再执行。 **解决方案**: 1. PassPluginLoader 引入引用计数 active_users_: - LoadPassPlugins(): active_users_==0 时首次加载 C++/Python Pass,每次调用 +1 - UnloadPassPlugins(): 每次调用 -1,仅 active_users_==0 时真正卸载 + 进程级清理 2. GeGenerator::Finalize() 改用 UnloadPassPlugins() 替代 ShutdownPassPluginsForProcess(),只递减引用计数,不强制卸载进程级资源 3. GeGenerator 增加 pass_plugins_loaded_ flag + GE_DISMISSABLE_GUARD,保证 Initialize 失败时自动释放 Pass 引用 4. 所有调用方(GEInitialize/GEFinalize/GeGenerator/ATC/aclgrphBuild)统一用 Load/Unload 5. 移除 PassPluginLease 类、AcquirePassPlugins/ReleasePassPlugins/ShutdownPassPluginsForProcess 6. CustomPassHelper::Insert() 去掉 unique_lock,防止 Load() 持锁时 dlopen 触发 PassReceiver 构造函数 → Insert() 重入导致同线程死锁(std::shared_mutex 不支持递归) ## 变更类型 - [x] 🐛 Bug 修复 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定 See merge request: cann/ge!4243 | 1 个月前 | |
fix: precommit整改 Co-authored-by: yelongjian<yelongjian1@huawei.com> # message auto-generated for no-merge-commit merge: !3726 merge dev-precommit into develop fix: precommit整改 Created-by: yelongjian Commit-by: yelongjian Merged-by: cann-robot Description: # Pull Request ## 描述 precommit整改 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1.NA ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!3726 | 2 个月前 | |
fix: precommit整改 Co-authored-by: yelongjian<yelongjian1@huawei.com> # message auto-generated for no-merge-commit merge: !3726 merge dev-precommit into develop fix: precommit整改 Created-by: yelongjian Commit-by: yelongjian Merged-by: cann-robot Description: # Pull Request ## 描述 precommit整改 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1.NA ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!3726 | 2 个月前 | |
fix: precommit整改 Co-authored-by: yelongjian<yelongjian1@huawei.com> # message auto-generated for no-merge-commit merge: !3726 merge dev-precommit into develop fix: precommit整改 Created-by: yelongjian Commit-by: yelongjian Merged-by: cann-robot Description: # Pull Request ## 描述 precommit整改 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1.NA ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!3726 | 2 个月前 | |
fix: precommit整改 Co-authored-by: yelongjian<yelongjian1@huawei.com> # message auto-generated for no-merge-commit merge: !3726 merge dev-precommit into develop fix: precommit整改 Created-by: yelongjian Commit-by: yelongjian Merged-by: cann-robot Description: # Pull Request ## 描述 precommit整改 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1.NA ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!3726 | 2 个月前 | |
fix: precommit整改 Co-authored-by: yelongjian<yelongjian1@huawei.com> # message auto-generated for no-merge-commit merge: !3726 merge dev-precommit into develop fix: precommit整改 Created-by: yelongjian Commit-by: yelongjian Merged-by: cann-robot Description: # Pull Request ## 描述 precommit整改 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1.NA ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!3726 | 2 个月前 | |
fix: precommit整改 Co-authored-by: yelongjian<yelongjian1@huawei.com> # message auto-generated for no-merge-commit merge: !3726 merge dev-precommit into develop fix: precommit整改 Created-by: yelongjian Commit-by: yelongjian Merged-by: cann-robot Description: # Pull Request ## 描述 precommit整改 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1.NA ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!3726 | 2 个月前 | |
feat: 支持 Python PatternFusionPass 和 DecomposePass 获取 PassContext Co-authored-by: lfz2812<220252399@seu.edu.cn> # message auto-generated for no-merge-commit merge: !4147 merge v2 into develop feat: 支持 Python PatternFusionPass 和 DecomposePass 获取 PassContext Created-by: lfz2812 Commit-by: lfz2812 Merged-by: cann-robot Description: # Pull Request ## 描述 将 C++ PatternFusionPassV2、DecomposePassV2中携带CustomPassContext的判断和替换能力开放至 Python,使 Python PatternFusionPass和DecomposePass可以在meet_requirements、replacement方法中按需接收PassContext。 本次修改支持以下写法: - PatternFusionPass graph-building style: - meet_requirements(self, match_result, context) - replacement(self, match_result, context) - PatternFusionPass expression style: - replacement(self, inputs, context) - replacement(self, inputs, match_result, context) - DecomposePass: - meet_requirements(self, node, context) - replacement(self, node, context) 未声明context的原有方法签名保持兼容,不新增 Python V2 类。 ## Python 化过程 1. C++ Adapter 接入 V2 Pass: - PythonPatternFusionPassAdapter改为继承PatternFusionPassV2。 - PythonDecomposePassAdapter改为继承DecomposePassV2。 - PatternFusionPass 和 DecomposePass 的判断、替换回调增加CustomPassContext&参数。 2. pybind bridge 透传上下文: - 将 C++ CustomPassContext转换为 Python PassContext视图。 - 调用 Python 的判断和替换方法时传入context。 - 捕获 Python 异常,将错误信息写入CustomPassContext,判断方法返回false,替换方法返回FAILED。 3. Python 层兼容新旧签名: - 在 Pass 子类定义阶段检查并适配meet_requirements、replacement方法签名。 - 未声明context时按原有参数调用;声明context时由引擎自动注入。 - 缓存方法是否接收context的判断结果,避免每次匹配重复解析签名。 - 为基类默认方法增加context标记,支持子类不重写meet_requirements的常见场景。 4. expression-style replacement 参数消歧: - replacement(self, inputs, context)的第三个参数只有命名为context时才按PassContext处理。 - 第三个参数不是context时保持原有match_result语义。 - 四参数形式必须为replacement(self, inputs, match_result, context)。 - 不支持的参数组合在类定义阶段抛出TypeError。 5. 接口与文档更新: - 更新 Python 类型声明和 PassContext 使用说明。 - 更新 PatternFusionPass、DecomposePass API 文档及 Python Fusion Pass 开发指南。 调用示例: python from ge.passes import PassContext, PatternFusionPass class MyPatternFusionPass(PatternFusionPass): def meet_requirements(self, match_result, context: PassContext): return context.get_option_value("ge.custom.enable_rule") == "1" def replacement(self, match_result, context: PassContext): return build_replacement_graph(match_result) python from ge.passes import DecomposePass, PassContext class MyDecomposePass(DecomposePass): def meet_requirements(self, node, context: PassContext): return node.get_attr("groups") != 1 def replacement(self, node, context: PassContext): return build_replacement_graph(node) ## 变更类型 - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue 关联 Issue:#299 ## 如何测试 1. 新增 Python UT,覆盖以下场景: - PatternFusionPass 和 DecomposePass 新签名能够接收context。 - 未声明context的旧签名保持兼容。 - 子类未重写meet_requirements时调用基类默认实现。 - expression-style replacement 的context、match_result参数消歧。 - 不支持的参数组合抛出TypeError。 - replacement 返回非法类型时正确报错。 2. 新增 C++ UT/ST,覆盖以下场景: - PatternFusionPass 和 DecomposePass Adapter 透传同一个CustomPassContext。 - Python 判断、替换方法抛出异常时,错误信息写入CustomPassContext。 - Python 异常分别转换为false和FAILED。 3. 执行以下检查: - Python 语法检查。 - Ruff 检查和格式检查。 - clang-format 检查。 - pre-commit 检查。 - Python Pass 相关 UT/ST。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于 commit message 的格式、无效 commit 的合并等 ## 其他信息 1. Python 公开类仍为PatternFusionPass和DecomposePass,不暴露PatternFusionPassV2、DecomposePassV2,避免增加重复的 Python API。 2. 原有 Python Pass 方法签名和执行行为保持兼容。 3. 本次修改复用现有PassContext绑定,不修改 C++ CustomPassContext的原有实现。 See merge request: cann/ge!4147 | 1 个月前 | |
fix: precommit整改 Co-authored-by: yelongjian<yelongjian1@huawei.com> # message auto-generated for no-merge-commit merge: !3726 merge dev-precommit into develop fix: precommit整改 Created-by: yelongjian Commit-by: yelongjian Merged-by: cann-robot Description: # Pull Request ## 描述 precommit整改 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1.NA ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!3726 | 2 个月前 | |
feat: 支持 Python PatternFusionPass 和 DecomposePass 获取 PassContext Co-authored-by: lfz2812<220252399@seu.edu.cn> # message auto-generated for no-merge-commit merge: !4147 merge v2 into develop feat: 支持 Python PatternFusionPass 和 DecomposePass 获取 PassContext Created-by: lfz2812 Commit-by: lfz2812 Merged-by: cann-robot Description: # Pull Request ## 描述 将 C++ PatternFusionPassV2、DecomposePassV2中携带CustomPassContext的判断和替换能力开放至 Python,使 Python PatternFusionPass和DecomposePass可以在meet_requirements、replacement方法中按需接收PassContext。 本次修改支持以下写法: - PatternFusionPass graph-building style: - meet_requirements(self, match_result, context) - replacement(self, match_result, context) - PatternFusionPass expression style: - replacement(self, inputs, context) - replacement(self, inputs, match_result, context) - DecomposePass: - meet_requirements(self, node, context) - replacement(self, node, context) 未声明context的原有方法签名保持兼容,不新增 Python V2 类。 ## Python 化过程 1. C++ Adapter 接入 V2 Pass: - PythonPatternFusionPassAdapter改为继承PatternFusionPassV2。 - PythonDecomposePassAdapter改为继承DecomposePassV2。 - PatternFusionPass 和 DecomposePass 的判断、替换回调增加CustomPassContext&参数。 2. pybind bridge 透传上下文: - 将 C++ CustomPassContext转换为 Python PassContext视图。 - 调用 Python 的判断和替换方法时传入context。 - 捕获 Python 异常,将错误信息写入CustomPassContext,判断方法返回false,替换方法返回FAILED。 3. Python 层兼容新旧签名: - 在 Pass 子类定义阶段检查并适配meet_requirements、replacement方法签名。 - 未声明context时按原有参数调用;声明context时由引擎自动注入。 - 缓存方法是否接收context的判断结果,避免每次匹配重复解析签名。 - 为基类默认方法增加context标记,支持子类不重写meet_requirements的常见场景。 4. expression-style replacement 参数消歧: - replacement(self, inputs, context)的第三个参数只有命名为context时才按PassContext处理。 - 第三个参数不是context时保持原有match_result语义。 - 四参数形式必须为replacement(self, inputs, match_result, context)。 - 不支持的参数组合在类定义阶段抛出TypeError。 5. 接口与文档更新: - 更新 Python 类型声明和 PassContext 使用说明。 - 更新 PatternFusionPass、DecomposePass API 文档及 Python Fusion Pass 开发指南。 调用示例: python from ge.passes import PassContext, PatternFusionPass class MyPatternFusionPass(PatternFusionPass): def meet_requirements(self, match_result, context: PassContext): return context.get_option_value("ge.custom.enable_rule") == "1" def replacement(self, match_result, context: PassContext): return build_replacement_graph(match_result) python from ge.passes import DecomposePass, PassContext class MyDecomposePass(DecomposePass): def meet_requirements(self, node, context: PassContext): return node.get_attr("groups") != 1 def replacement(self, node, context: PassContext): return build_replacement_graph(node) ## 变更类型 - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue 关联 Issue:#299 ## 如何测试 1. 新增 Python UT,覆盖以下场景: - PatternFusionPass 和 DecomposePass 新签名能够接收context。 - 未声明context的旧签名保持兼容。 - 子类未重写meet_requirements时调用基类默认实现。 - expression-style replacement 的context、match_result参数消歧。 - 不支持的参数组合抛出TypeError。 - replacement 返回非法类型时正确报错。 2. 新增 C++ UT/ST,覆盖以下场景: - PatternFusionPass 和 DecomposePass Adapter 透传同一个CustomPassContext。 - Python 判断、替换方法抛出异常时,错误信息写入CustomPassContext。 - Python 异常分别转换为false和FAILED。 3. 执行以下检查: - Python 语法检查。 - Ruff 检查和格式检查。 - clang-format 检查。 - pre-commit 检查。 - Python Pass 相关 UT/ST。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于 commit message 的格式、无效 commit 的合并等 ## 其他信息 1. Python 公开类仍为PatternFusionPass和DecomposePass,不暴露PatternFusionPassV2、DecomposePassV2,避免增加重复的 Python API。 2. 原有 Python Pass 方法签名和执行行为保持兼容。 3. 本次修改复用现有PassContext绑定,不修改 C++ CustomPassContext的原有实现。 See merge request: cann/ge!4147 | 1 个月前 | |
fix: precommit整改 Co-authored-by: yelongjian<yelongjian1@huawei.com> # message auto-generated for no-merge-commit merge: !3726 merge dev-precommit into develop fix: precommit整改 Created-by: yelongjian Commit-by: yelongjian Merged-by: cann-robot Description: # Pull Request ## 描述 precommit整改 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1.NA ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!3726 | 2 个月前 | |
feat: 支持 Python 自定义算子桥接加载 Co-authored-by: du-hua1024<duhua2@huawei.com> # message auto-generated for no-merge-commit merge: !3974 merge op-cpp into develop feat: 支持 Python 自定义算子桥接加载 Created-by: du-hua1024 Commit-by: du-hua1024 Merged-by: cann-robot Description: # Pull Request ## 描述 支持 Python 自定义算子在编译与执行链路中的桥接加载和注册。主要变更如下: 1. 新增 runtime/custom_op 自定义算子加载能力,包括 custom op loader、Python bridge loader、pybind bridge 和桥接 C API。 2. 在 ATC、session、compiler、runtime v1 等入口接入 Python 自定义算子加载流程,覆盖编译前加载与执行侧注册。 3. 将 Python artifact 选择逻辑迁移到 base/common/python_runtime,新增通用 python_bridge_loader_utils.h,复用 Python bridge 动态加载能力。 4. 扩展 graph_metadef 自定义算子 factory/registry 能力,并调整 Python pass fallback、fusion pass loader 等相关调用。 5. 补充和调整 Python runtime artifact、fusion pass executor、custom op factory 相关 UT 构建与用例。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧“关联Issue”部分添加相应Issue链接,并勾选“合并后关闭已关联的 Issue”选项。 --> 未关联 Issue。 ## 如何测试 新增及历史UT ST任务正常执行 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 See merge request: cann/ge!3974 | 1 个月前 | |
feat: 支持 Python 自定义算子桥接加载 Co-authored-by: du-hua1024<duhua2@huawei.com> # message auto-generated for no-merge-commit merge: !3974 merge op-cpp into develop feat: 支持 Python 自定义算子桥接加载 Created-by: du-hua1024 Commit-by: du-hua1024 Merged-by: cann-robot Description: # Pull Request ## 描述 支持 Python 自定义算子在编译与执行链路中的桥接加载和注册。主要变更如下: 1. 新增 runtime/custom_op 自定义算子加载能力,包括 custom op loader、Python bridge loader、pybind bridge 和桥接 C API。 2. 在 ATC、session、compiler、runtime v1 等入口接入 Python 自定义算子加载流程,覆盖编译前加载与执行侧注册。 3. 将 Python artifact 选择逻辑迁移到 base/common/python_runtime,新增通用 python_bridge_loader_utils.h,复用 Python bridge 动态加载能力。 4. 扩展 graph_metadef 自定义算子 factory/registry 能力,并调整 Python pass fallback、fusion pass loader 等相关调用。 5. 补充和调整 Python runtime artifact、fusion pass executor、custom op factory 相关 UT 构建与用例。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧“关联Issue”部分添加相应Issue链接,并勾选“合并后关闭已关联的 Issue”选项。 --> 未关联 Issue。 ## 如何测试 新增及历史UT ST任务正常执行 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 See merge request: cann/ge!3974 | 1 个月前 | |
feat: 支持 Python 自定义算子桥接加载 Co-authored-by: du-hua1024<duhua2@huawei.com> # message auto-generated for no-merge-commit merge: !3974 merge op-cpp into develop feat: 支持 Python 自定义算子桥接加载 Created-by: du-hua1024 Commit-by: du-hua1024 Merged-by: cann-robot Description: # Pull Request ## 描述 支持 Python 自定义算子在编译与执行链路中的桥接加载和注册。主要变更如下: 1. 新增 runtime/custom_op 自定义算子加载能力,包括 custom op loader、Python bridge loader、pybind bridge 和桥接 C API。 2. 在 ATC、session、compiler、runtime v1 等入口接入 Python 自定义算子加载流程,覆盖编译前加载与执行侧注册。 3. 将 Python artifact 选择逻辑迁移到 base/common/python_runtime,新增通用 python_bridge_loader_utils.h,复用 Python bridge 动态加载能力。 4. 扩展 graph_metadef 自定义算子 factory/registry 能力,并调整 Python pass fallback、fusion pass loader 等相关调用。 5. 补充和调整 Python runtime artifact、fusion pass executor、custom op factory 相关 UT 构建与用例。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧“关联Issue”部分添加相应Issue链接,并勾选“合并后关闭已关联的 Issue”选项。 --> 未关联 Issue。 ## 如何测试 新增及历史UT ST任务正常执行 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 See merge request: cann/ge!3974 | 1 个月前 | |
feat: 支持 Python PatternFusionPass 和 DecomposePass 获取 PassContext Co-authored-by: lfz2812<220252399@seu.edu.cn> # message auto-generated for no-merge-commit merge: !4147 merge v2 into develop feat: 支持 Python PatternFusionPass 和 DecomposePass 获取 PassContext Created-by: lfz2812 Commit-by: lfz2812 Merged-by: cann-robot Description: # Pull Request ## 描述 将 C++ PatternFusionPassV2、DecomposePassV2中携带CustomPassContext的判断和替换能力开放至 Python,使 Python PatternFusionPass和DecomposePass可以在meet_requirements、replacement方法中按需接收PassContext。 本次修改支持以下写法: - PatternFusionPass graph-building style: - meet_requirements(self, match_result, context) - replacement(self, match_result, context) - PatternFusionPass expression style: - replacement(self, inputs, context) - replacement(self, inputs, match_result, context) - DecomposePass: - meet_requirements(self, node, context) - replacement(self, node, context) 未声明context的原有方法签名保持兼容,不新增 Python V2 类。 ## Python 化过程 1. C++ Adapter 接入 V2 Pass: - PythonPatternFusionPassAdapter改为继承PatternFusionPassV2。 - PythonDecomposePassAdapter改为继承DecomposePassV2。 - PatternFusionPass 和 DecomposePass 的判断、替换回调增加CustomPassContext&参数。 2. pybind bridge 透传上下文: - 将 C++ CustomPassContext转换为 Python PassContext视图。 - 调用 Python 的判断和替换方法时传入context。 - 捕获 Python 异常,将错误信息写入CustomPassContext,判断方法返回false,替换方法返回FAILED。 3. Python 层兼容新旧签名: - 在 Pass 子类定义阶段检查并适配meet_requirements、replacement方法签名。 - 未声明context时按原有参数调用;声明context时由引擎自动注入。 - 缓存方法是否接收context的判断结果,避免每次匹配重复解析签名。 - 为基类默认方法增加context标记,支持子类不重写meet_requirements的常见场景。 4. expression-style replacement 参数消歧: - replacement(self, inputs, context)的第三个参数只有命名为context时才按PassContext处理。 - 第三个参数不是context时保持原有match_result语义。 - 四参数形式必须为replacement(self, inputs, match_result, context)。 - 不支持的参数组合在类定义阶段抛出TypeError。 5. 接口与文档更新: - 更新 Python 类型声明和 PassContext 使用说明。 - 更新 PatternFusionPass、DecomposePass API 文档及 Python Fusion Pass 开发指南。 调用示例: python from ge.passes import PassContext, PatternFusionPass class MyPatternFusionPass(PatternFusionPass): def meet_requirements(self, match_result, context: PassContext): return context.get_option_value("ge.custom.enable_rule") == "1" def replacement(self, match_result, context: PassContext): return build_replacement_graph(match_result) python from ge.passes import DecomposePass, PassContext class MyDecomposePass(DecomposePass): def meet_requirements(self, node, context: PassContext): return node.get_attr("groups") != 1 def replacement(self, node, context: PassContext): return build_replacement_graph(node) ## 变更类型 - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue 关联 Issue:#299 ## 如何测试 1. 新增 Python UT,覆盖以下场景: - PatternFusionPass 和 DecomposePass 新签名能够接收context。 - 未声明context的旧签名保持兼容。 - 子类未重写meet_requirements时调用基类默认实现。 - expression-style replacement 的context、match_result参数消歧。 - 不支持的参数组合抛出TypeError。 - replacement 返回非法类型时正确报错。 2. 新增 C++ UT/ST,覆盖以下场景: - PatternFusionPass 和 DecomposePass Adapter 透传同一个CustomPassContext。 - Python 判断、替换方法抛出异常时,错误信息写入CustomPassContext。 - Python 异常分别转换为false和FAILED。 3. 执行以下检查: - Python 语法检查。 - Ruff 检查和格式检查。 - clang-format 检查。 - pre-commit 检查。 - Python Pass 相关 UT/ST。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于 commit message 的格式、无效 commit 的合并等 ## 其他信息 1. Python 公开类仍为PatternFusionPass和DecomposePass,不暴露PatternFusionPassV2、DecomposePassV2,避免增加重复的 Python API。 2. 原有 Python Pass 方法签名和执行行为保持兼容。 3. 本次修改复用现有PassContext绑定,不修改 C++ CustomPassContext的原有实现。 See merge request: cann/ge!4147 | 1 个月前 | |
feat: 支持 PatternFusionPass 类型并重构 Python Pass 基础设施(part2:c++部分) Co-authored-by: kobemini<gengchao4@huawei.com> # message auto-generated for no-merge-commit merge: !1942 merge python_pass_f_0003 into develop feat: 支持 PatternFusionPass 类型并重构 Python Pass 基础设施(part2:c++部分) Created-by: kobemini Commit-by: kobemini Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 为 GE 的 Python Pass 机制新增 PatternFusionPass 类型支持,并对现有基础设施进行了全面重构,使其能够统一处理 FusionBasePass 和 PatternFusionPass 两种 Python Pass 类型。 ### 主要变更: 1. **新增 PythonPatternFusionPassAdapter** - 新增类继承 PatternFusionPass,override Patterns/MeetRequirements/Replacement 通过回调桥接 Python 2. **重构文件和类命名,去除 Base 后缀** - python_fusion_base_pass_adapter.h → python_pass_adapter.h 等 3. **提取 PythonPassHolder 公共类并扩展 bridge** - 消除重复 Impl 和生命周期代码,Bridge 新增 GetPatterns/CallMeetRequirements/CallReplacement 桥接方法,补充 4 个 UT 4. **更新 ge_python 文档** - 更新 README.md 和新增设计文档 ## 变更类型 - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新 - [x] ♻️ 重构 - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue ## 如何测试 1. 编译 ge_compiler 组件:bash build.sh --ge_compiler 2. 运行 fusion pass 相关单测:编译并执行 FusionPassExecutorTest 单元测试 3. 验证新增的 4 个 UT 用例通过 4. 验证现有 FusionBasePass 功能无回归 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签 - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md) ## 其他信息 本 PR 包含 4 个 commit,涵盖新功能实现、代码重构和文档更新。 See merge request: cann/ge!1942 | 4 个月前 | |
feat: 支持 Python PatternFusionPass 和 DecomposePass 获取 PassContext Co-authored-by: lfz2812<220252399@seu.edu.cn> # message auto-generated for no-merge-commit merge: !4147 merge v2 into develop feat: 支持 Python PatternFusionPass 和 DecomposePass 获取 PassContext Created-by: lfz2812 Commit-by: lfz2812 Merged-by: cann-robot Description: # Pull Request ## 描述 将 C++ PatternFusionPassV2、DecomposePassV2中携带CustomPassContext的判断和替换能力开放至 Python,使 Python PatternFusionPass和DecomposePass可以在meet_requirements、replacement方法中按需接收PassContext。 本次修改支持以下写法: - PatternFusionPass graph-building style: - meet_requirements(self, match_result, context) - replacement(self, match_result, context) - PatternFusionPass expression style: - replacement(self, inputs, context) - replacement(self, inputs, match_result, context) - DecomposePass: - meet_requirements(self, node, context) - replacement(self, node, context) 未声明context的原有方法签名保持兼容,不新增 Python V2 类。 ## Python 化过程 1. C++ Adapter 接入 V2 Pass: - PythonPatternFusionPassAdapter改为继承PatternFusionPassV2。 - PythonDecomposePassAdapter改为继承DecomposePassV2。 - PatternFusionPass 和 DecomposePass 的判断、替换回调增加CustomPassContext&参数。 2. pybind bridge 透传上下文: - 将 C++ CustomPassContext转换为 Python PassContext视图。 - 调用 Python 的判断和替换方法时传入context。 - 捕获 Python 异常,将错误信息写入CustomPassContext,判断方法返回false,替换方法返回FAILED。 3. Python 层兼容新旧签名: - 在 Pass 子类定义阶段检查并适配meet_requirements、replacement方法签名。 - 未声明context时按原有参数调用;声明context时由引擎自动注入。 - 缓存方法是否接收context的判断结果,避免每次匹配重复解析签名。 - 为基类默认方法增加context标记,支持子类不重写meet_requirements的常见场景。 4. expression-style replacement 参数消歧: - replacement(self, inputs, context)的第三个参数只有命名为context时才按PassContext处理。 - 第三个参数不是context时保持原有match_result语义。 - 四参数形式必须为replacement(self, inputs, match_result, context)。 - 不支持的参数组合在类定义阶段抛出TypeError。 5. 接口与文档更新: - 更新 Python 类型声明和 PassContext 使用说明。 - 更新 PatternFusionPass、DecomposePass API 文档及 Python Fusion Pass 开发指南。 调用示例: python from ge.passes import PassContext, PatternFusionPass class MyPatternFusionPass(PatternFusionPass): def meet_requirements(self, match_result, context: PassContext): return context.get_option_value("ge.custom.enable_rule") == "1" def replacement(self, match_result, context: PassContext): return build_replacement_graph(match_result) python from ge.passes import DecomposePass, PassContext class MyDecomposePass(DecomposePass): def meet_requirements(self, node, context: PassContext): return node.get_attr("groups") != 1 def replacement(self, node, context: PassContext): return build_replacement_graph(node) ## 变更类型 - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue 关联 Issue:#299 ## 如何测试 1. 新增 Python UT,覆盖以下场景: - PatternFusionPass 和 DecomposePass 新签名能够接收context。 - 未声明context的旧签名保持兼容。 - 子类未重写meet_requirements时调用基类默认实现。 - expression-style replacement 的context、match_result参数消歧。 - 不支持的参数组合抛出TypeError。 - replacement 返回非法类型时正确报错。 2. 新增 C++ UT/ST,覆盖以下场景: - PatternFusionPass 和 DecomposePass Adapter 透传同一个CustomPassContext。 - Python 判断、替换方法抛出异常时,错误信息写入CustomPassContext。 - Python 异常分别转换为false和FAILED。 3. 执行以下检查: - Python 语法检查。 - Ruff 检查和格式检查。 - clang-format 检查。 - pre-commit 检查。 - Python Pass 相关 UT/ST。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于 commit message 的格式、无效 commit 的合并等 ## 其他信息 1. Python 公开类仍为PatternFusionPass和DecomposePass,不暴露PatternFusionPassV2、DecomposePassV2,避免增加重复的 Python API。 2. 原有 Python Pass 方法签名和执行行为保持兼容。 3. 本次修改复用现有PassContext绑定,不修改 C++ CustomPassContext的原有实现。 See merge request: cann/ge!4147 | 1 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 18 天前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 20 天前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 4 个月前 | ||
| 1 个月前 |