| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
【PR】: aipp_check_param 文件 放到om2的so Co-authored-by: lidaoming1<lidaoming1@huawei.com> # message auto-generated for no-merge-commit merge: !4159 merge om2_aipp into develop 【PR】: aipp_check_param 文件 放到om2的so Created-by: lidaoming1 Commit-by: lidaoming1 Merged-by: cann-robot Description: # Pull Request ## 描述 请清晰准确地描述本次 Pull Request 的意图和变更内容。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [ ] 我的代码遵循了项目的代码风格 - [ ] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [ ] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!4159 | 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】: om2 支持aipp Co-authored-by: lidaoming1<lidaoming1@huawei.com> # message auto-generated for no-merge-commit merge: !4082 merge om2_aipp into develop 【feat】: om2 支持aipp Created-by: lidaoming1 Commit-by: lidaoming1 Merged-by: cann-robot Description: # Pull Request ## 描述 变更摘要 本次 PR 为 OM2 模型执行模式实现了完整的动态 AIPP(AI 预处理)支持。此前 OM2 路径下的 AIPP 相关接口均返回 ACL_ERROR_API_NOT_SUPPORT,本次变更将这些接口全部实现,涵盖编译期元数据提取、运行时 AIPP 查询与设置、以及设备端参数下发。同时,将原 OM1 专属文件中定义的一组静态辅助函数(如 SetAippInfo、GetNpuArch、SetIODims 及调试字符串函数)抽取到 model_common 模块,供 OM1 与 OM2 路径共享。 主要改动 实现 OM2 AIPP 核心接口:aclmdlSetInputAIPPImplOm2、aclmdlSetAIPPByInputIndexImplOm2、aclmdlGetAippTypeImplOm2、aclmdlGetFirstAippInfoImplOm2 从返回 ACL_ERROR_API_NOT_SUPPORT 的桩函数变为完整实现,包含索引校验、AIPP 类型检查、参数验证、输出形状校验及通过 Om2ModelExecutor::SetDynamicAippData 将参数拷贝至设备端。 抽取共享 AIPP 工具函数至 model_common:将 SetAippInfo、GetNpuArch、SetIODims、AippInfoDebugString、DimsDebugString、AippDimsDebugString、AippParmsDebugString、AippBatchParaDebugString 从 acl_aipp.cpp 的匿名命名空间移至 model_common.cpp/.h 的 acl 命名空间,供 OM1 和 OM2 路径共用。 新增 AIPP 元数据结构与编译期序列化:在 om2_model_data.h 中定义 Om2AippMeta 结构体,在 Om2ModelMeta 中增加 aipp_infos、is_dynamic_aipp、has_aipp 字段;在 om2_package_helper.cc 中新增 FillAippModelMetaInfo 函数,从模型图中提取 AIPP 配置信息并写入 model_meta.json。 运行时 AIPP 元数据解析与查询:在 om2_model_executor.cc 中实现 ParseAippJson 等 JSON 解析函数,以及 GetAippInfo、GetAippType、GetOrigInputInfo、GetAllAippInputOutputDims、IsDynamicAipp、GetBatchInfoSize、SetDynamicAippData 方法,完整支持 AIPP 信息的运行时查询与动态参数下发。 移除 OM2 编译期对动态 AIPP 的拦截:删除 ge_ir_build.cc 中 InsertAippOpUtil::ValidateStaticAippOnly 调用,允许 OM2 构建模式使用动态 AIPP。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [ ] 我的代码遵循了项目的代码风格 - [ ] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [ ] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!4082 | 1 个月前 | |
feat:支持融合结果上报的 Python 化 Co-authored-by: lfz2812<220252399@seu.edu.cn> # message auto-generated for no-merge-commit merge: !4070 merge develop into develop feat:支持融合结果上报的 Python 化 Created-by: lfz2812 Commit-by: lfz2812 Merged-by: cann-robot Description: # Pull Request ## 描述 在 PR3996 完成 can_fuse Python 化的基础上,本 PR 继续补齐 GE 融合结果上报能力,使 Python 融合 Pass 能够完成融合可行性 检查、改图和融合结果上报的完整流程。 本次修改包括: 1. 新增 report_fuse Python native 绑定: - 接收融合前、融合后的 Python Node 可迭代对象。 - 统一将 Python Node 转换为 C++ GNode 集合。 - 调用 GraphFuseInspectorUtils::ReportFuse 上报融合结果。 - 上报失败时将错误信息写入 PassContext,并向 Python 抛出 RuntimeError。 - 在 ge.passes 中公开 report_fuse,并补充类型声明。 2. 为 SubgraphRewriter.replace 增加带 context 的调用方式: - 原有 SubgraphRewriter.replace(boundary, replacement) 行为保持不变。 - 新增 SubgraphRewriter.replace(boundary, replacement, context=context)。 - 传入 context 后,由底层自动完成融合可行性检查、子图替换和融合结果上报。 - 执行失败时将错误信息写入 PassContext,并向 Python 抛出 RuntimeError。 3. 支持两种 Python 融合 Pass 改图流程: - 传统直接改图方式:用户依次调用 can_fuse、自定义 Graph 改图接口和 report_fuse。 - 基于子图替换的方式:用户传入 context 调用 SubgraphRewriter.replace,由底层统一完成检查、替换和上报。 4. 优化 Python 与 native 层的职责划分: - 节点可迭代对象的遍历、类型校验和 GNode 转换统一在 native 层完成,避免 Python 与 native 重复处理。 - can_fuse 保留 Python 包装,用 FuseCheckResult 封装检查结果。 - report_fuse 无需适配返回值,直接重导出 native 实现。 5. 更新 Python 融合 Pass 样例: - move_relu_before_concat_pass 使用带 context 的 SubgraphRewriter.replace。 - modify_conv_data_format_pass 演示 can_fuse、直接改图、report_fuse 和旧节点删除的调用顺序。 - 同步更新相关中英文 README。 6. 补充接口和设计文档: - 新增 report_fuse API 文档。 - 更新 SubgraphRewriter.replace API 文档,说明传入和不传入 context 时的行为差异。 - 更新 GE Python 中英文设计文档和 API 索引。 7. 补充和更新测试: - 校验 report_fuse 非法 PassContext 入参。 - 验证 Python Pass 通过 pybind 调用 report_fuse。 - 验证带 context 的融合结果上报流程。 - 保留 can_fuse 正常、异常和边界场景覆盖。 调用示例: python from ge.passes import can_fuse, report_fuse # 传统直接改图方式 result = can_fuse(nodes_before) if not result.ok: context.set_error_message(result.reason) return False # 用户直接调用Graph接口完成自定义改图。 report_fuse(nodes_before, nodes_after, context) from ge.passes import SubgraphRewriter # 基于子图替换的方式 SubgraphRewriter.replace( boundary, replacement, context=context, ) ## 变更类型 - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue 关联 Issue:#299 ## 如何测试 1. 执行 Python UT: bash tests/run_test.sh --ut=python 2. 执行 ut_fusion_pass_executor_utest,验证 Python Pass 通过 pybind 调用 report_fuse,并检查 PythonFusionBasePass_PybindBridge_RunSuccess 用例。 3. 检查相关 Python 融合 Pass 样例和中英文文档。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit 的合并等 ## 其他信息 - 原有 SubgraphRewriter.replace(boundary, replacement) 接口保持兼容。 - 传统直接改图场景必须在旧节点被删除或失效前调用 report_fuse。 - 本次仅新增 Python 融合结果上报和带 context 的标准化子图替换能力,不改变原有 Python Pass 注册及执行机制。 See merge request: cann/ge!4070 | 1 个月前 | |
fix: 修复Python自定义算子和自定义pass加载失败清理 Co-authored-by: du-hua1024<duhua2@huawei.com> # message auto-generated for no-merge-commit merge: !3850 merge develop into develop fix: 修复Python自定义算子和自定义pass加载失败清理 Created-by: du-hua1024 Commit-by: du-hua1024 Merged-by: cann-robot Description: # Pull Request ## 描述 修复 Python 自定义算子和 Python 自定义融合 pass 在加载失败路径上的错误处理与资源清理问题,避免无效环境变量被静默忽略、加载失败后遗留半初始化状态,以及 Python runtime finalizing 阶段因 pybind 对象未清理导致 core。 ## 问题及修改方案 1. ASCEND_CUSTOM_OPP_PATH 中存在无效路径时,Python 自定义算子入口探测原先 stat 失败只返回 false,导致 LoadCustomOps 跳过 Python 加载,和 Python pass 的失败语义不一致。 修改方案:将探测接口调整为 CheckNeedLoadPythonCustomOps(bool &need_load),非空路径项 stat 失败统一返回 FAILED;已有普通 .py 文件、Python 包或一级 .py 文件仍判定为需要加载;已有非 Python 文件不作为 Python 入口加载。 2. Python 自定义算子加载失败后只返回错误,可能留下已注册或半初始化的 Python custom op 状态,随后失败路径关闭 Python runtime 时,可能在 CPython finalizing 阶段因残留 pybind 对象触发 core。 修改方案:在 LoadPythonCustomOps 失败路径调用 RollbackPythonCustomOpsLoad(),执行 UnloadPythonCustomOps() 并复位 python_custom_ops_loaded_。 3. Python 自定义 pass 注册重名或加载异常时,RegisterPythonPassesFromPlugin() 返回失败但 pass bridge/module 未回滚;随后 GEInitialize、IR build 或 ATC 失败路径关闭 Python runtime 时,可能在 CPython finalizing 阶段因残留 pybind 对象触发 core。 修改方案:pass 加载失败时调用 RollbackPythonPassesLoad();GEInitialize、aclgrphBuildInitialize 和 ATC 主流程失败清理中按 ShutdownPassPluginsForProcess() -> ShutdownCustomOpsForProcess() -> ShutdownProcess() 顺序释放。 4. ir_build_so_in_om_multi_customize_priroity 测试修改 ASCEND_CUSTOM_OPP_PATH 后未恢复,且 setenv(..., 0) 可能受外部环境影响。 修改方案:测试保存并恢复原始 ASCEND_CUSTOM_OPP_PATH,设置测试路径时允许覆盖。 ## 变更类型 - [x] Bug 修复 - [ ] 新功能 - [ ] 代码风格更新 - [ ] 重构 - [ ] 构建过程或辅助工具的变动 - [ ] 文档内容更新 ## 关联的Issue 无 ## 如何测试 - 使用重名python 自定义pass、自定义算子,正常失败退出,没有core dump - 自定义算子环境变量设置非法路径、文件时,显示报错 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档:本次为加载失败路径修复,未新增公开接口说明 - [x] 我在标题中使用了合适的类型标签 - [x] 我已经详细阅读了贡献指南,并遵守了其中的提交要求 ## 其他信息 See merge request: cann/ge!3850 | 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 个月前 |