文件最后提交记录最后更新时间
【PR】: fix: 补充携带custom context入参的pattern fusion pass Co-authored-by: hugo111<zhaoxinxin1@huawei.com> # message auto-generated for no-merge-commit merge: !2647 merge pattern_fusion_v2 into develop 【PR】: fix: 补充携带custom context入参的pattern fusion pass Created-by: hugo111 Commit-by: hugo111 Merged-by: cann-robot Description: # Pull Request ## 描述 Commit 1: 【feat】: 新增 PatternFusionPassV2,钩子透传 CustomPassContext 新增 V2 类,MeetRequirements/Replacement 钩子带 CustomPassContext &,子类可读配置 / 写错误信息。抽出共享 helper RunPatternFusion 避免 V1/V2 主循环重复,V1 改为 wrapper 调 helper(行为不变)。V2 类合并进 V1 头,复用REG_FUSION_PASS。 --- Commit 2: 【feat】: 新增 DecomposePassV2,钩子透传 CustomPassContext 与 PatternFusionPassV2 对称:新增 V2 类,钩子带 CustomPassContext &。抽 RunDecomposePass helper 共享主循环,V1 改 wrapper。V2 类并入 V1 头,复用 REG_DECOMPOSE_PASS。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的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/ge!264712 天前
【PR】: fix 成环检测并发问题 Co-authored-by: hugo111<zhaoxinxin1@huawei.com> # message auto-generated for no-merge-commit merge: !3171 merge fix_core into develop 【PR】: fix 成环检测并发问题 Created-by: hugo111 Commit-by: hugo111 Merged-by: cann-robot Description: # Pull Request ## 描述 消除静态变量,将成环检测调整为无状态检测,并在每个pass执行后在debug级别增加拓扑排序的定届手段。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的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/ge!31711 天前
【PR】: fix: 补充携带custom context入参的pattern fusion pass Co-authored-by: hugo111<zhaoxinxin1@huawei.com> # message auto-generated for no-merge-commit merge: !2647 merge pattern_fusion_v2 into develop 【PR】: fix: 补充携带custom context入参的pattern fusion pass Created-by: hugo111 Commit-by: hugo111 Merged-by: cann-robot Description: # Pull Request ## 描述 Commit 1: 【feat】: 新增 PatternFusionPassV2,钩子透传 CustomPassContext 新增 V2 类,MeetRequirements/Replacement 钩子带 CustomPassContext &,子类可读配置 / 写错误信息。抽出共享 helper RunPatternFusion 避免 V1/V2 主循环重复,V1 改为 wrapper 调 helper(行为不变)。V2 类合并进 V1 头,复用REG_FUSION_PASS。 --- Commit 2: 【feat】: 新增 DecomposePassV2,钩子透传 CustomPassContext 与 PatternFusionPassV2 对称:新增 V2 类,钩子带 CustomPassContext &。抽 RunDecomposePass helper 共享主循环,V1 改 wrapper。V2 类并入 V1 头,复用 REG_DECOMPOSE_PASS。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的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/ge!264712 天前
【PR】: fix: 补充携带custom context入参的pattern fusion pass Co-authored-by: hugo111<zhaoxinxin1@huawei.com> # message auto-generated for no-merge-commit merge: !2647 merge pattern_fusion_v2 into develop 【PR】: fix: 补充携带custom context入参的pattern fusion pass Created-by: hugo111 Commit-by: hugo111 Merged-by: cann-robot Description: # Pull Request ## 描述 Commit 1: 【feat】: 新增 PatternFusionPassV2,钩子透传 CustomPassContext 新增 V2 类,MeetRequirements/Replacement 钩子带 CustomPassContext &,子类可读配置 / 写错误信息。抽出共享 helper RunPatternFusion 避免 V1/V2 主循环重复,V1 改为 wrapper 调 helper(行为不变)。V2 类合并进 V1 头,复用REG_FUSION_PASS。 --- Commit 2: 【feat】: 新增 DecomposePassV2,钩子透传 CustomPassContext 与 PatternFusionPassV2 对称:新增 V2 类,钩子带 CustomPassContext &。抽 RunDecomposePass helper 共享主循环,V1 改 wrapper。V2 类并入 V1 头,复用 REG_DECOMPOSE_PASS。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的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/ge!264712 天前
【PR】: fix 成环检测并发问题 Co-authored-by: hugo111<zhaoxinxin1@huawei.com> # message auto-generated for no-merge-commit merge: !3171 merge fix_core into develop 【PR】: fix 成环检测并发问题 Created-by: hugo111 Commit-by: hugo111 Merged-by: cann-robot Description: # Pull Request ## 描述 消除静态变量,将成环检测调整为无状态检测,并在每个pass执行后在debug级别增加拓扑排序的定届手段。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的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/ge!31711 天前
Initial commit 5 个月前
【PR】:ge一月份需求合入(包含整改dflow ST、自定义算子执行Context等) Co-authored-by: jikai-tyler<jikai5@huawei.com> # message auto-generated for no-merge-commit merge: !223 merge master into master 【PR】:ge一月份需求合入(包含整改dflow ST、自定义算子执行Context等) Created-by: jikai-tyler Commit-by: jikai-tyler Merged-by: cann-robot Description: # Pull Request ## 描述 ge一月份需求合入: 1、llt测试用例相关重复stub文件清理 2、Triton入图parser解析dlopen的handle关闭 - Triton入图parser解析dlopen的handle关闭 - 补充tensorflow 中其他的入参类型 - 优化parser 解析的的代码 3、UserGraphsManager suppport gert::Tensor - UserGraphsManager及JitExecutor等RunGraphAsync入参由ge::Tensor改为gert::Tensor - 老的兼容接口Session::RunGraph/RunGraphAsync在ge_api.cc 将ge::Tensor转换为gert::Tensor,然后调用InnerSession的接口。 4、整改dflow ST中的HELPER_RES_FILE_PATH - HELPER_RES_FILE_PATH配置文件已经废弃,需要删除并整改用例使用RESOURCE_CONFIG_PATH。 - rtGetIsHeterogenous接口已经废弃,需要删除并整改用例使用RESOURCE_CONFIG_PATH环境变量。 5、注册ge错误码 - 从error_code.json文件中拆分出GE错误码,通过ErrorManager模块的对外接口REG_FORMAT_ERROR_MSG宏完成GE错误码的注册 6、使能acl目录覆盖率拦截项 7、triton入图parser解析优化 8、告警规则处理 9、refactor parser/common/tuple.h 10、fix UserGraphControl SetCompiledFlag/SetCompiledFlag 11、修复Sample问题 - Include stdint and stddef for base mdl - move CheckRunGraphMode to ge_api_v2.cc 12、自定义算子执行Context 13、fix AllRealInputsAreTheSameOutAnchor error log issue - 在Session::AddGraph时会造一个UserGraphControl实例。因此在UserGraphControl中增加compiled_flag 14、bugfix:handling excessively long name - 避免因字符串过长导致二进制匹配耗尽资源而coredump,裁剪name,只保留最开始的128字符 15、acl code check告警处理 16、modify 3rd compile para 17、修改自定义ES_API Sample问题 && README.md 18、Refined inner session to no longer retrieve GraphNode or GraphOptions via graph_id from graph_manager. 19、ES关键类PIMPL实现 && 修改命名空间 - EsCGraphBuilder, CompliantNodeBuilder, EsCTensorHolder改为PIMPL实现 - 修改AddEdgeAndUpdatePeerDesc和CompliantNodeBuilder命名空间至ge::es 20、手动实现log功能, 实现debug_print函数来定位 ## 变更类型 请选择本次引入的变更类型: <!-- [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/ge!2233 个月前
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!19421 个月前
feat: 支持Python自定义Fusion Pass开发能力 Co-authored-by: kobemini<gengchao4@huawei.com> # message auto-generated for no-merge-commit merge: !1892 merge python_pass_f_0002 into develop feat: 支持Python自定义Fusion Pass开发能力 Created-by: kobemini Commit-by: kobemini Merged-by: cann-robot Description: 20260326评审通过 # Pull Request ## 描述 本PR引入GE Python自定义Fusion Pass开发能力(V1),使用户可以通过纯Python编写FusionBasePass并通过装饰器@register_fusion_pass注册,GE编译器在初始化阶段自动发现并执行Python pass。 ### 核心设计 - **独立bridge .so架构**:将Python版本敏感逻辑(pybind11、Python.h、libpython)收敛到独立的libge_python_pass_bridge.so中,ge_compiler.so保持Python ABI中立 - **复用现有执行框架**:Python pass注册到现有PassRegistry,由FusionPassExecutor统一调度执行,不新建第二套调度体系 - **环境变量发现机制**:通过ASCEND_GE_PY_PASS_PATH指定pass文件/目录路径,编译器自动扫描加载 ### 主要变更模块 **Python侧(新增 ge.passes 包)** - base.py:三类pass的纯Python基类(FusionBasePass、PatternFusionPass、DecomposePass)及PassStage、PassContext等数据类 - registry.py:Python侧pass注册表,提供@register_fusion_pass装饰器 - bootstrap.py:插件发现入口,从ASCEND_GE_PY_PASS_PATH扫描加载pass模块 - _bridge.py:Python与C++ bridge的协议层,管理pass holder生命周期 **C++侧(新增+修改)** - pass_plugin_loader:统一pass插件加载入口 - pass_registry:扩展全局注册表,新增PythonPassDescriptor、RegisterPythonPass等 - python_fusion_base_pass_adapter:Python pass的C++ adapter - python_fusion_base_pass_bridge_c_api:Bridge SO的稳定C ABI - python_fusion_base_pass_bridge_loader:Bridge SO的运行时加载器(dlopen/dlsym) - python_fusion_base_pass_pybind_bridge:Bridge SO的pybind11实现(嵌入式Python解释器) **构建系统** - 新增ge_python_pass_bridge共享库目标 - 重构Python依赖查找逻辑,新增ge_python_embed INTERFACE目标 **初始化入口改造** - ge_api_v2.ccge_ir_build.ccge_generator.cc:统一替换为LoadPassPlugins()/ShutdownPassPluginsForProcess() **测试** - 新增7个C++单元测试(adapter生命周期、pybind bridge端到端、TLS上下文等) - 新增Python侧集成测试(bootstrap发现、holder创建运行销毁) **文档** - 新增详细设计文档docs/ge_python/design/ge_python_pass_design.md(约1650行) ## 变更类型 - [ ] Bug 修复 - [x] 新功能 - [ ] 代码风格更新 - [ ] 重构 - [ ] 构建过程或辅助工具的变动 - [x] 文档内容更新 ## 如何测试 1. 编译ge_compiler组件:bash build.sh --ge_compiler 2. 编译运行UT测试:bash tests/run_test.sh --ut=ge 3. 重点验证UT用例:PythonFusionBasePass_Run_CreateExecuteDestroy、PythonFusionBasePass_Run_Failed、PythonFusionBasePass_PybindBridge_RunSuccess等 4. 验证Python侧测试:python_pass_bootstrap_test.py ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(feat:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md) ## 其他信息 本PR为"GE Pass Python化 V1"功能的首次提交,仅支持FusionBasePass类型。PatternFusionPassDecomposePass的桥接将在后续PR中实现。 See merge request: cann/ge!18921 个月前
feat: 支持Python自定义Fusion Pass开发能力 Co-authored-by: kobemini<gengchao4@huawei.com> # message auto-generated for no-merge-commit merge: !1892 merge python_pass_f_0002 into develop feat: 支持Python自定义Fusion Pass开发能力 Created-by: kobemini Commit-by: kobemini Merged-by: cann-robot Description: 20260326评审通过 # Pull Request ## 描述 本PR引入GE Python自定义Fusion Pass开发能力(V1),使用户可以通过纯Python编写FusionBasePass并通过装饰器@register_fusion_pass注册,GE编译器在初始化阶段自动发现并执行Python pass。 ### 核心设计 - **独立bridge .so架构**:将Python版本敏感逻辑(pybind11、Python.h、libpython)收敛到独立的libge_python_pass_bridge.so中,ge_compiler.so保持Python ABI中立 - **复用现有执行框架**:Python pass注册到现有PassRegistry,由FusionPassExecutor统一调度执行,不新建第二套调度体系 - **环境变量发现机制**:通过ASCEND_GE_PY_PASS_PATH指定pass文件/目录路径,编译器自动扫描加载 ### 主要变更模块 **Python侧(新增 ge.passes 包)** - base.py:三类pass的纯Python基类(FusionBasePass、PatternFusionPass、DecomposePass)及PassStage、PassContext等数据类 - registry.py:Python侧pass注册表,提供@register_fusion_pass装饰器 - bootstrap.py:插件发现入口,从ASCEND_GE_PY_PASS_PATH扫描加载pass模块 - _bridge.py:Python与C++ bridge的协议层,管理pass holder生命周期 **C++侧(新增+修改)** - pass_plugin_loader:统一pass插件加载入口 - pass_registry:扩展全局注册表,新增PythonPassDescriptor、RegisterPythonPass等 - python_fusion_base_pass_adapter:Python pass的C++ adapter - python_fusion_base_pass_bridge_c_api:Bridge SO的稳定C ABI - python_fusion_base_pass_bridge_loader:Bridge SO的运行时加载器(dlopen/dlsym) - python_fusion_base_pass_pybind_bridge:Bridge SO的pybind11实现(嵌入式Python解释器) **构建系统** - 新增ge_python_pass_bridge共享库目标 - 重构Python依赖查找逻辑,新增ge_python_embed INTERFACE目标 **初始化入口改造** - ge_api_v2.ccge_ir_build.ccge_generator.cc:统一替换为LoadPassPlugins()/ShutdownPassPluginsForProcess() **测试** - 新增7个C++单元测试(adapter生命周期、pybind bridge端到端、TLS上下文等) - 新增Python侧集成测试(bootstrap发现、holder创建运行销毁) **文档** - 新增详细设计文档docs/ge_python/design/ge_python_pass_design.md(约1650行) ## 变更类型 - [ ] Bug 修复 - [x] 新功能 - [ ] 代码风格更新 - [ ] 重构 - [ ] 构建过程或辅助工具的变动 - [x] 文档内容更新 ## 如何测试 1. 编译ge_compiler组件:bash build.sh --ge_compiler 2. 编译运行UT测试:bash tests/run_test.sh --ut=ge 3. 重点验证UT用例:PythonFusionBasePass_Run_CreateExecuteDestroy、PythonFusionBasePass_Run_Failed、PythonFusionBasePass_PybindBridge_RunSuccess等 4. 验证Python侧测试:python_pass_bootstrap_test.py ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(feat:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md) ## 其他信息 本PR为"GE Pass Python化 V1"功能的首次提交,仅支持FusionBasePass类型。PatternFusionPassDecomposePass的桥接将在后续PR中实现。 See merge request: cann/ge!18921 个月前
feat: 支持Python自定义Fusion Pass开发能力 Co-authored-by: kobemini<gengchao4@huawei.com> # message auto-generated for no-merge-commit merge: !1892 merge python_pass_f_0002 into develop feat: 支持Python自定义Fusion Pass开发能力 Created-by: kobemini Commit-by: kobemini Merged-by: cann-robot Description: 20260326评审通过 # Pull Request ## 描述 本PR引入GE Python自定义Fusion Pass开发能力(V1),使用户可以通过纯Python编写FusionBasePass并通过装饰器@register_fusion_pass注册,GE编译器在初始化阶段自动发现并执行Python pass。 ### 核心设计 - **独立bridge .so架构**:将Python版本敏感逻辑(pybind11、Python.h、libpython)收敛到独立的libge_python_pass_bridge.so中,ge_compiler.so保持Python ABI中立 - **复用现有执行框架**:Python pass注册到现有PassRegistry,由FusionPassExecutor统一调度执行,不新建第二套调度体系 - **环境变量发现机制**:通过ASCEND_GE_PY_PASS_PATH指定pass文件/目录路径,编译器自动扫描加载 ### 主要变更模块 **Python侧(新增 ge.passes 包)** - base.py:三类pass的纯Python基类(FusionBasePass、PatternFusionPass、DecomposePass)及PassStage、PassContext等数据类 - registry.py:Python侧pass注册表,提供@register_fusion_pass装饰器 - bootstrap.py:插件发现入口,从ASCEND_GE_PY_PASS_PATH扫描加载pass模块 - _bridge.py:Python与C++ bridge的协议层,管理pass holder生命周期 **C++侧(新增+修改)** - pass_plugin_loader:统一pass插件加载入口 - pass_registry:扩展全局注册表,新增PythonPassDescriptor、RegisterPythonPass等 - python_fusion_base_pass_adapter:Python pass的C++ adapter - python_fusion_base_pass_bridge_c_api:Bridge SO的稳定C ABI - python_fusion_base_pass_bridge_loader:Bridge SO的运行时加载器(dlopen/dlsym) - python_fusion_base_pass_pybind_bridge:Bridge SO的pybind11实现(嵌入式Python解释器) **构建系统** - 新增ge_python_pass_bridge共享库目标 - 重构Python依赖查找逻辑,新增ge_python_embed INTERFACE目标 **初始化入口改造** - ge_api_v2.ccge_ir_build.ccge_generator.cc:统一替换为LoadPassPlugins()/ShutdownPassPluginsForProcess() **测试** - 新增7个C++单元测试(adapter生命周期、pybind bridge端到端、TLS上下文等) - 新增Python侧集成测试(bootstrap发现、holder创建运行销毁) **文档** - 新增详细设计文档docs/ge_python/design/ge_python_pass_design.md(约1650行) ## 变更类型 - [ ] Bug 修复 - [x] 新功能 - [ ] 代码风格更新 - [ ] 重构 - [ ] 构建过程或辅助工具的变动 - [x] 文档内容更新 ## 如何测试 1. 编译ge_compiler组件:bash build.sh --ge_compiler 2. 编译运行UT测试:bash tests/run_test.sh --ut=ge 3. 重点验证UT用例:PythonFusionBasePass_Run_CreateExecuteDestroy、PythonFusionBasePass_Run_Failed、PythonFusionBasePass_PybindBridge_RunSuccess等 4. 验证Python侧测试:python_pass_bootstrap_test.py ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(feat:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md) ## 其他信息 本PR为"GE Pass Python化 V1"功能的首次提交,仅支持FusionBasePass类型。PatternFusionPassDecomposePass的桥接将在后续PR中实现。 See merge request: cann/ge!18921 个月前
【PR】: fix: 补充携带custom context入参的pattern fusion pass Co-authored-by: hugo111<zhaoxinxin1@huawei.com> # message auto-generated for no-merge-commit merge: !2647 merge pattern_fusion_v2 into develop 【PR】: fix: 补充携带custom context入参的pattern fusion pass Created-by: hugo111 Commit-by: hugo111 Merged-by: cann-robot Description: # Pull Request ## 描述 Commit 1: 【feat】: 新增 PatternFusionPassV2,钩子透传 CustomPassContext 新增 V2 类,MeetRequirements/Replacement 钩子带 CustomPassContext &,子类可读配置 / 写错误信息。抽出共享 helper RunPatternFusion 避免 V1/V2 主循环重复,V1 改为 wrapper 调 helper(行为不变)。V2 类合并进 V1 头,复用REG_FUSION_PASS。 --- Commit 2: 【feat】: 新增 DecomposePassV2,钩子透传 CustomPassContext 与 PatternFusionPassV2 对称:新增 V2 类,钩子带 CustomPassContext &。抽 RunDecomposePass helper 共享主循环,V1 改 wrapper。V2 类并入 V1 头,复用 REG_DECOMPOSE_PASS。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的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/ge!264712 天前
【PR】: fix: 补充携带custom context入参的pattern fusion pass Co-authored-by: hugo111<zhaoxinxin1@huawei.com> # message auto-generated for no-merge-commit merge: !2647 merge pattern_fusion_v2 into develop 【PR】: fix: 补充携带custom context入参的pattern fusion pass Created-by: hugo111 Commit-by: hugo111 Merged-by: cann-robot Description: # Pull Request ## 描述 Commit 1: 【feat】: 新增 PatternFusionPassV2,钩子透传 CustomPassContext 新增 V2 类,MeetRequirements/Replacement 钩子带 CustomPassContext &,子类可读配置 / 写错误信息。抽出共享 helper RunPatternFusion 避免 V1/V2 主循环重复,V1 改为 wrapper 调 helper(行为不变)。V2 类合并进 V1 头,复用REG_FUSION_PASS。 --- Commit 2: 【feat】: 新增 DecomposePassV2,钩子透传 CustomPassContext 与 PatternFusionPassV2 对称:新增 V2 类,钩子带 CustomPassContext &。抽 RunDecomposePass helper 共享主循环,V1 改 wrapper。V2 类并入 V1 头,复用 REG_DECOMPOSE_PASS。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的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/ge!264712 天前
【PR】: fix 成环检测并发问题 Co-authored-by: hugo111<zhaoxinxin1@huawei.com> # message auto-generated for no-merge-commit merge: !3171 merge fix_core into develop 【PR】: fix 成环检测并发问题 Created-by: hugo111 Commit-by: hugo111 Merged-by: cann-robot Description: # Pull Request ## 描述 消除静态变量,将成环检测调整为无状态检测,并在每个pass执行后在debug级别增加拓扑排序的定届手段。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的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/ge!31711 天前
【PR】: fix: 补充携带custom context入参的pattern fusion pass Co-authored-by: hugo111<zhaoxinxin1@huawei.com> # message auto-generated for no-merge-commit merge: !2647 merge pattern_fusion_v2 into develop 【PR】: fix: 补充携带custom context入参的pattern fusion pass Created-by: hugo111 Commit-by: hugo111 Merged-by: cann-robot Description: # Pull Request ## 描述 Commit 1: 【feat】: 新增 PatternFusionPassV2,钩子透传 CustomPassContext 新增 V2 类,MeetRequirements/Replacement 钩子带 CustomPassContext &,子类可读配置 / 写错误信息。抽出共享 helper RunPatternFusion 避免 V1/V2 主循环重复,V1 改为 wrapper 调 helper(行为不变)。V2 类合并进 V1 头,复用REG_FUSION_PASS。 --- Commit 2: 【feat】: 新增 DecomposePassV2,钩子透传 CustomPassContext 与 PatternFusionPassV2 对称:新增 V2 类,钩子带 CustomPassContext &。抽 RunDecomposePass helper 共享主循环,V1 改 wrapper。V2 类并入 V1 头,复用 REG_DECOMPOSE_PASS。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的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/ge!264712 天前
feat: 实现DecomposePass的Python化支持(part3-1) Co-authored-by: kobemini<gengchao4@huawei.com> # message auto-generated for no-merge-commit merge: !2256 merge python_pass_f_0003_clean into develop feat: 实现DecomposePass的Python化支持(part3-1) Created-by: kobemini Commit-by: kobemini Merged-by: cann-robot Description: # Pull Request ## 描述 本次PR实现了DecomposePass的Python化支持,完善了Python PatternFusionPass的基础设施。 ### 主要变更 1. **新增DecomposePass C++ Adapter** - 实现 PythonDecomposePassAdapter 类 - 支持DecomposePass的C++端执行逻辑 - 通过op_types进行算子匹配 2. **完善Python DecomposePass接口** - 增加详细的文档说明,明确执行流程 - 添加 __init_subclass__ 防止错误实现 - 明确 meet_requirements()replacement() 的调用时机 3. **完善Python Pass基础设施** - 增强类型约束和类型安全 - 新增 borrow_node 等底层接口支持 - 完善注册和桥接机制 4. **新增测试用例** - 添加 python_decompose_pass_test.py - 增强 fusion_pass_executor_unittest.cc 5. **更新文档** - 更新架构文档和设计文档 - 完善Python Pass设计说明 ## 变更类型 请选择本次引入的变更类型: - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 如何测试 ### 编译测试 ```bash bash build.sh --ge_compiler ``` ### UT测试 ```bash # 运行DecomposePass测试 fusion_pass_executor_unittest --gtest_filter=*DecomposePass* ``` ### Python测试 ```bash cd tests/ge/ut/ge/graph/pyge_tests python3 python_decompose_pass_test.py ``` ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md) ## 其他信息 这是PatternFusionPass Python化支持的第三部分实现,主要完成了DecomposePass的完整流程。 ### 相关PR - Part1: PatternFusionPass基础框架 - Part2: PatternFusionPass Python示例实现 See merge request: cann/ge!22561 个月前
feat: 实现DecomposePass的Python化支持(part3-1) Co-authored-by: kobemini<gengchao4@huawei.com> # message auto-generated for no-merge-commit merge: !2256 merge python_pass_f_0003_clean into develop feat: 实现DecomposePass的Python化支持(part3-1) Created-by: kobemini Commit-by: kobemini Merged-by: cann-robot Description: # Pull Request ## 描述 本次PR实现了DecomposePass的Python化支持,完善了Python PatternFusionPass的基础设施。 ### 主要变更 1. **新增DecomposePass C++ Adapter** - 实现 PythonDecomposePassAdapter 类 - 支持DecomposePass的C++端执行逻辑 - 通过op_types进行算子匹配 2. **完善Python DecomposePass接口** - 增加详细的文档说明,明确执行流程 - 添加 __init_subclass__ 防止错误实现 - 明确 meet_requirements()replacement() 的调用时机 3. **完善Python Pass基础设施** - 增强类型约束和类型安全 - 新增 borrow_node 等底层接口支持 - 完善注册和桥接机制 4. **新增测试用例** - 添加 python_decompose_pass_test.py - 增强 fusion_pass_executor_unittest.cc 5. **更新文档** - 更新架构文档和设计文档 - 完善Python Pass设计说明 ## 变更类型 请选择本次引入的变更类型: - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 如何测试 ### 编译测试 ```bash bash build.sh --ge_compiler ``` ### UT测试 ```bash # 运行DecomposePass测试 fusion_pass_executor_unittest --gtest_filter=*DecomposePass* ``` ### Python测试 ```bash cd tests/ge/ut/ge/graph/pyge_tests python3 python_decompose_pass_test.py ``` ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md) ## 其他信息 这是PatternFusionPass Python化支持的第三部分实现,主要完成了DecomposePass的完整流程。 ### 相关PR - Part1: PatternFusionPass基础框架 - Part2: PatternFusionPass Python示例实现 See merge request: cann/ge!22561 个月前
fix: 修复Python Pass Bridge的MISRA规范问题及内存安全隐患 Co-authored-by: kobemini<gengchao4@huawei.com> # message auto-generated for no-merge-commit merge: !2339 merge fix/python-pass-bridge-misra into develop fix: 修复Python Pass Bridge的MISRA规范问题及内存安全隐患 Created-by: kobemini Commit-by: kobemini Merged-by: cann-robot Description: # Pull Request ## 描述 本次PR修复了 Python Pass Bridge 模块中的 MISRA C++ 规范问题及潜在的内存安全隐患,主要涉及以下变更: 1. **回调函数类型安全性**:将 PythonFusionBasePassRunFn 等回调函数指针的第一个参数从 void* 改为 const void*,防止回调函数内部意外修改 holder 对象 2. **头文件依赖修正**:用 pybind11/detail/common.h 替代直接引用 Python.h,减少对 CPython 内部实现的直接依赖 3. **内存安全改进**:BuildPythonNode 中使用 std::make_unique 管理内存,避免裸 new 操作带来的异常安全问题 4. **路径安全校验**:dlopen 加载动态库前增加 RealPath 校验,防止无效路径或路径注入 5. **代码重构**:将 GetCallbacks 函数拆分为 SetCommonCallbacks、SetFusionBaseCallbacks、SetPatternFusionCallbacks、SetDecomposeCallbacks 四个职责单一的函数,提高可读性和可维护性 6. **缺失头文件补充**:添加 memory 和 ge/ge_api_types.h 头文件包含 ## 变更类型 请选择本次引入的变更类型(勾选对应项): - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无 ## 如何测试 1. 编译 compiler/graph/fusion/pass 目录下的相关模块 2. 运行 Python Pass 相关的单元测试 3. 验证 Python Pass Bridge 加载和执行功能正常 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md) ## 其他信息 本次变更符合 MISRA C++ 编码规范要求,提升了 Python Pass Bridge 的类型安全性和内存安全性。 See merge request: cann/ge!23391 个月前
【fix】: Fix CodeCheck Co-authored-by: chengyutao3<chengyutao3@huawei.com> # message auto-generated for no-merge-commit merge: !3178 merge develop into develop 【fix】: Fix CodeCheck Created-by: chengyutao3 Commit-by: chengyutao3 Merged-by: cann-robot Description: # Pull Request ## 描述 Fix CodeCheck ## 变更类型 请选择本次引入的变更类型: <!-- [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/ge!31785 天前
feat: add python pass native artifact matrix Co-authored-by: zhangfeifan0709<zhangfeifan7@huawei.com> # message auto-generated for no-merge-commit merge: !3142 merge python-pass-natvie-matrix into develop feat: add python pass native artifact matrix Created-by: zhangfeifan0709 Commit-by: zhangfeifan0709 Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 是 Python pass 兼容性拆分方案的第一部分:多版本预制构建矩阵与 native 子 wheel。 主要变更: - ge-py 主 wheel 保持 Python 接口和原有 wheel 名 ge_py-0.0.1-py3-none-any.whl,native artifact 拆到 ge-py-pass-bridge 子 wheel。 - 新增 cp39cp314 native wheel matrix builder,CI/发布环境可自动嗅探 PATH 中可用 Python,并补充 Conda env 嗅探能力,尽力构建可用 Python minor 版本。 - ge-compiler run 包继续安装原有 ge_py wheel,并额外把 matrix 输出的 ge_py_pass_bridge-*.whl 安装到 ge-compiler/lib64。 - loader 运行时按当前 Python tag、平台 tag、bridge ABI 匹配预制 artifact,未命中时回退同目录 legacy bridge。 - 新增 artifact manifest 字段和匹配机制说明,补充 selector 单测,并把 selector UT 接入根 select_targets。 本 PR 不包含 runtime fallback codegen,codegen 会作为第二个 PR 单独提交。 ## 变更类型 请选择本次引入的变更类型: - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue 无 ## 如何测试 NA ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 后续第二个 PR 将接入 runtime fallback codegen,避免和本 PR 的预制矩阵交付面混在一起。 See merge request: cann/ge!31428 天前
feat: add python pass native artifact matrix Co-authored-by: zhangfeifan0709<zhangfeifan7@huawei.com> # message auto-generated for no-merge-commit merge: !3142 merge python-pass-natvie-matrix into develop feat: add python pass native artifact matrix Created-by: zhangfeifan0709 Commit-by: zhangfeifan0709 Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 是 Python pass 兼容性拆分方案的第一部分:多版本预制构建矩阵与 native 子 wheel。 主要变更: - ge-py 主 wheel 保持 Python 接口和原有 wheel 名 ge_py-0.0.1-py3-none-any.whl,native artifact 拆到 ge-py-pass-bridge 子 wheel。 - 新增 cp39cp314 native wheel matrix builder,CI/发布环境可自动嗅探 PATH 中可用 Python,并补充 Conda env 嗅探能力,尽力构建可用 Python minor 版本。 - ge-compiler run 包继续安装原有 ge_py wheel,并额外把 matrix 输出的 ge_py_pass_bridge-*.whl 安装到 ge-compiler/lib64。 - loader 运行时按当前 Python tag、平台 tag、bridge ABI 匹配预制 artifact,未命中时回退同目录 legacy bridge。 - 新增 artifact manifest 字段和匹配机制说明,补充 selector 单测,并把 selector UT 接入根 select_targets。 本 PR 不包含 runtime fallback codegen,codegen 会作为第二个 PR 单独提交。 ## 变更类型 请选择本次引入的变更类型: - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue 无 ## 如何测试 NA ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 后续第二个 PR 将接入 runtime fallback codegen,避免和本 PR 的预制矩阵交付面混在一起。 See merge request: cann/ge!31428 天前
【fix】: Fix CodeCheck Co-authored-by: chengyutao3<chengyutao3@huawei.com> # message auto-generated for no-merge-commit merge: !3178 merge develop into develop 【fix】: Fix CodeCheck Created-by: chengyutao3 Commit-by: chengyutao3 Merged-by: cann-robot Description: # Pull Request ## 描述 Fix CodeCheck ## 变更类型 请选择本次引入的变更类型: <!-- [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/ge!31785 天前
feat: add python pass native artifact matrix Co-authored-by: zhangfeifan0709<zhangfeifan7@huawei.com> # message auto-generated for no-merge-commit merge: !3142 merge python-pass-natvie-matrix into develop feat: add python pass native artifact matrix Created-by: zhangfeifan0709 Commit-by: zhangfeifan0709 Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 是 Python pass 兼容性拆分方案的第一部分:多版本预制构建矩阵与 native 子 wheel。 主要变更: - ge-py 主 wheel 保持 Python 接口和原有 wheel 名 ge_py-0.0.1-py3-none-any.whl,native artifact 拆到 ge-py-pass-bridge 子 wheel。 - 新增 cp39cp314 native wheel matrix builder,CI/发布环境可自动嗅探 PATH 中可用 Python,并补充 Conda env 嗅探能力,尽力构建可用 Python minor 版本。 - ge-compiler run 包继续安装原有 ge_py wheel,并额外把 matrix 输出的 ge_py_pass_bridge-*.whl 安装到 ge-compiler/lib64。 - loader 运行时按当前 Python tag、平台 tag、bridge ABI 匹配预制 artifact,未命中时回退同目录 legacy bridge。 - 新增 artifact manifest 字段和匹配机制说明,补充 selector 单测,并把 selector UT 接入根 select_targets。 本 PR 不包含 runtime fallback codegen,codegen 会作为第二个 PR 单独提交。 ## 变更类型 请选择本次引入的变更类型: - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue 无 ## 如何测试 NA ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 后续第二个 PR 将接入 runtime fallback codegen,避免和本 PR 的预制矩阵交付面混在一起。 See merge request: cann/ge!31428 天前
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!19421 个月前
feat: 实现PatternFusionPass的Python化支持(part2:py部分) Co-authored-by: kobemini<gengchao4@huawei.com> # message auto-generated for no-merge-commit merge: !2056 merge python_pass_f_0003 into develop feat: 实现PatternFusionPass的Python化支持(part2:py部分) Created-by: kobemini Commit-by: kobemini Merged-by: cann-robot Description: # Pull Request ## 描述 本次变更为 GE (Graph Engine) 实现 PatternFusionPass 的 Python 化支持,完成从 bring-up 阶段到正式 native-backed 阶段的收口。用户可以通过纯 Python 编写基于模式匹配的融合 pass(PatternFusionPass),并能被 C++ 侧的 GE 编译器框架正确发现、注册和执行。 ### 核心变更 1. 新增 pattern.py: 提供 NodeIo、Pattern、capture_tensor()、create_pattern()、ensure_pattern() 等类型和工厂函数 2. 新增 replacement.py: 提供替换图构建辅助函数 create_replacement() 3. 扩展 pass_context_wrapper.cc: 新增 Pattern、MatchResult(borrowed语义)、PatternMatcherConfig、PatternMatcherConfigBuilder 的 native pybind11 绑定 4. 更新 _bridge.py: 实现 PatternFusionPass 桥接协议的三个关键函数:get_pass_patterns()、call_meet_requirements()、call_replacement() 5. 移除 MatchResult 纯 Python 占位实现: 统一使用 _ge_pass_native.so 提供的 native-backed 版本 6. 更新 python_pass_pybind_bridge.cc: 将 PatternFusionPass 桥接从占位实现升级为正式实现(uintptr_t 所有权转移协议) 7. 新增 Python 单测和 C++ 单测: 覆盖 Pattern 创建、张量捕获、bridge 协议端到端测试 8. 同步更新设计文档: 新增阶段 2 收口要求说明和公共接口列表更新 ### 设计要点 - 所有权转移使用 uintptr_t + release() 模式,Python 侧在回调返回后不持有对象引用 - MatchResult 使用借用语义(borrowed),回调结束后自动 _invalidate(),过期访问抛出 RuntimeError - 用户 pass 基类保持纯 Python,不要求继承 C++ 基类 ## 变更类型 - [ ] Bug 修复 - [x] 新功能 - [x] 代码风格更新(格式化,局部变量) - [x] 重构(既不修复错误也不增加功能的代码变动) - [x] 构建过程或辅助工具的变动 - [x] 文档内容更新 ## 如何测试 1. 编译 GE 项目,确保 _ge_pass_native.so 正确生成 2. 运行 Python 单测:python tests/ge/ut/ge/graph/pyge_tests/python_pattern_pass_test.py 3. 运行 C++ 单测:fusion_pass_executor_unittest 4. 参考 examples/fusion_pass/pattern_base_pass/4_add_zero_pass/ 中的示例进行端到端验证 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:、fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md) ## 其他信息 本次提交涉及 18 个文件,新增 889 行,删除 68 行。 See merge request: cann/ge!20561 个月前