| Files | Last commit | Last update |
|---|---|---|
!4829 merge fix/issue-551-model-extend-boundary-check into master fix: 校验模型扩展分区长度(#551) Created-by: ningjingyuan Commit-by: ningjingyuan Merged-by: cann-robot Description: # Pull Request ## 描述 修复 ParseModelDescExtend 未校验模型扩展分区内部长度的问题。 OM 文件中的 ModelExtendHead::len 来自外部输入。原实现直接将该长度传入 ParseTlvList,当声明长度超过扩展分区实际剩余空间时,子解析器可能读取分区边界之外的数据。 本次变更: - 在解析 TLV 列表前校验 extendDesc->len <= size - sizeof(ModelExtendHead),越界时返回 ACL_ERROR_GE_LOAD_MODEL。 - 为普通内存加载路径增加最小一字节越界回归用例,通过缩短分区表中的声明长度验证 GE 在解析阶段拒绝非法模型且不调用 Runtime。 - 为 LiteOS 文件查询路径增加最小一字节越界回归用例,验证按分区长度读取的缓冲区受到相同边界保护。 - 将既有 AbnormalInvalidLen 用例调整为 FifoMallocFailed:把扩展区长度由非法的 52 改为与实际 TLV 一致的 36,使其继续稳定覆盖 ProcFifoInfo 的 FIFO 地址数组分配失败分支。 ## 变更类型 - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue Closes #551 https://gitcode.com/cann/ge/issues/551 ## 如何测试 1. 增量编译 ut_ge_executor_c_utest,目标编译成功。 2. 执行 UtestGEExecutorTest.GeExecutorCaseParseModelDescExtend*,10/10 通过。 3. 执行 UtestGEExecutorLiteOSTest.GeExecutorCaseParseModelDescExtend*,3/3 通过。 4. 对变更测试文件执行 pre-commit 检查,clang-format、codespell、私钥检测和 OAT 等检查全部通过。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 本次变更无需更新文档(不改变公开 API、ABI 或 OM 格式) - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 本次修改仅在解析不合法 OM 扩展分区时提前返回错误,不改变合法模型的加载行为。 See merge request: cann/ge!4829 | 1 month ago | |
fix: Python自定义算子不再把框架库误打包进OM Co-authored-by: Chang-an-HW<machangan@huawei.com> # message auto-generated for no-merge-commit merge: !5358 merge fix/framework-hosted-custom-op-so-in-om into develop fix: Python自定义算子不再把框架库误打包进OM Created-by: Chang-an-HW Commit-by: Chang-an-HW Merged-by: cann-robot Description: # Pull Request ## 描述 PR #5034 放宽自定义算子 so 打包条件后,非 PortableOp 算子改由 GetAnyCustomOpInstance + 实例虚表 dladdr 定位实现 so。**Python 接口实现的自定义算子因此被误打包,导致 OM 加载失败**: - Python 算子的实例是框架库 libcustom_op_runtime.so 中的 PythonCustomOpAdapter(creator 由 python_custom_op_bridge_loader.cc 注册),dladdr 解析到的是**框架库自身**,被当作算子 so 收进 custom_op_so_set_ 并打进 SO_BINS; - 加载期 CustomOpRegistryBuilder::AddCreatorsFromSoHandles 需要从每个 kCustomOp so 中 dlsym GetRegisteredCustomOpCreatorAbiVersion / GetRegisteredCustomOpCreatorNum / GetRegisteredCustomOpCreators。只有静态链接 custom_op_registry_static 的算子 so 才导出这三个符号,产品版 libgraph.so 以 CUSTOM_OP_PULL_REGISTRY_HIDDEN_EXPORT 隐藏(graph_metadef/graph/CMakeLists.txt:238),框架库自身也不导出,于是报 [CUSTOM OP] pull creator ABI symbols are incomplete. 并使整个 OM 加载失败; - 交叉编译路径同样被波及:has_custom_op 置位后会去 ASCEND_CUSTOM_OPP_PATH 收集 so,把只含算子原型、不导出 pull creator ABI 的 proto so 误打包进 OM(同类加载失败)。 Python 算子本就没有"算子实现 so"这种交付物:实现体是 ASCEND_CUSTOM_OPP_PATH 下的 .py 加 GE 安装目录下的 bridge 产物。其离线场景之所以能跑通(examples/custom_op/python_compilable_add_custom/run_offline.sh),是因为 compile 回调在编译期已把 kernel 固化进 OM,执行期不需要自定义算子实例。 **本次修改**:新增标记接口 FrameworkHostedOp(inc/graph_metadef/graph/custom_op/framework_hosted_op.h)标识"实现由框架内适配器承载、没有可交付算子实现 so"的算子,PythonCustomOpAdapter 继承该接口;GeRootModel::CollectCustomOpSo() 识别后跳过 so 收集,且**不置 has_custom_op**,因此交叉编译下也不会因其触发 custom opp 路径收集。#5034 引入的"非 PortableOp 的 C++ 算子 so 同样打包"能力完整保留。 选用标记接口而非新增能力位/路径黑名单的原因:与 CustomOpCast 同一 dynamic_cast 机制(跨 so 已被现网验证);不污染半公开的 CustomOpCapability 掩码(避免 HasCapability 与 capabilities_ 不一致,以及 PythonCustomOpAdapter::IsValid() 的 impl_capabilities 判定被误伤);不依赖构建形态(开源构建的 libgraph.so 反而导出 pull 符号,基于符号可见性或路径的启发式在 dev 与产品上行为会不一致)。 同步更新 docs/zh|en/design/features/so_in_om.md 的 kCustomOp 触发条件与 3.2.4 节。 ## 变更类型 - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue 无(修复 PR #5034 引入的回归) ## 如何测试 1. 新增 UT(tests/ge/ut/ge/graph/load/model_helper_unittest.cc): - CheckAndSetNeedSoInOMFrameworkHostedOpShouldSkipSoCollect:同架构下框架承载算子不收集 so、不置 kCustomOp 标志位; - CheckAndSetNeedSoInOMCrossModeFrameworkHostedOpShouldSkipCustomOppCollect:交叉编译下不因该算子去 ASCEND_CUSTOM_OPP_PATH 收集 so(ASCEND_CUSTOM_OPP_PATH 为空时不再报错)。 2. 编译并执行 ut_libge_distinct_load_utest(分支基于 upstream/develop):CheckAndSetNeedSoInOM* / SaveCustomOpsPartition* / CollectCustomOpSo* / CheckSoArch* / LoadCustomOp* 共 **33 项全部通过**;custom op 相关全量 64 项中 62 项通过,剩余为 Om2PackageHelperUt 的 suite 级失败——本地 toolkit overlay 缺 exe_graph/runtime/resource_usage_context.h 导致 OM2 codegen 编译生成代码失败,属环境问题,与本改动无关。 3. pre-commit run --files(clang-format / codespell / OAT / end-of-file-fixer 等)全部 Passed。 4. 真机闭环建议:examples/custom_op/python_compilable_add_custom/run_offline.sh(AIR → ATC → OM → 脱离 Python 插件执行),预期恢复 PY_COMPILE_OFFLINE_OM=PASS;本 PR 未在真机执行。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 **已知限制(本 PR 不改变,仅记录)**:Python 的 eager_execute / host_cpu_execute / declare_launch_args 类算子在离线 OM 场景无法自包含——执行期需要 PythonCustomOpAdapter 实例回调 Python,而模型级 CustomOpRegistry 只从 SO_BINS/CUSTOM_OPS 构建且不回退全局 CustomOpFactory,故加载可通过但执行期会报 Failed to find custom op func for op type X。该行为在 #5034 之前即如此,是否收敛为编译期显式报错需产品侧确认。另:动态 shape + Python compile 类算子 + 离线的组合(RT2 在加载期 lowering 可能需要 FindCustomOp/InferShape)未做验证,如有真实使用场景建议单独确认。 See merge request: cann/ge!5358 | 26 days ago | |
fix: 清理clean code告警 Co-authored-by: likun104<likun104@h-partners.com> # message auto-generated for no-merge-commit merge: !5407 merge br_fix_clean_code_1015 into develop fix: 清理clean code告警 Created-by: likun104 Commit-by: likun104 Merged-by: cann-robot Description: # Pull Request ## 描述 清理clean code告警 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 流水线跑通过,且rdv跑通过 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!5407 | 24 days ago | |
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 | 4 months ago | |
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 | 4 months ago | |
revert: 回退 OPP deliverables 清单加载支持(!4929) Co-authored-by: 19851937626<zhuxincheng2@huawei.com> # message auto-generated for no-merge-commit merge: !5427 merge revert/mr-4929-ops-deliverables into develop revert: 回退 OPP deliverables 清单加载支持(!4929) Created-by: SeasonChu Commit-by: 19851937626 Merged-by: cann-robot Description: # Pull Request ## 描述 回退 MR !4929 引入的 OPP deliverables 清单加载支持,恢复原有 OPP 目录发现和算子库加载流程。 - 移除 OpsDeliverablesManager 及其在 GE 初始化、ACL Graph、Generator、Executor、Parser 和 ATC 框架插件加载入口的接入。 - 恢复通过 OppPackageUtils::LoadAllOppPackage() 加载 OPP 包,以及原有框架插件路径发现逻辑。 - 移除该特性的 UT/ST 与测试构建配置,并更新架构文档中的加载流程说明。 回退后,GE 不再读取 ASCEND_OPP_PATH/conf/ops_deliverables.json 来指定算子库和框架插件加载路径。 ## 变更类型 - [x] ↩️ 回退变更 - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue 对应原 MR !4929;无已知关联 Issue。 ## 如何测试 1. 在与 develop 相同的 CANN/OPP 环境中执行 GE 初始化及 ATC、Parser、Executor 相关测试,确认恢复原有 OPP 目录发现流程。 2. 执行仓库 CI,检查编译、UT/ST 和代码检查结果。 测试结果以 PR 页面最新的 CI 状态为准;本描述不将未完成的测试记为已通过。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [ ] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 回退提交:a7ccf32dfd312bddd339545fbaf0506d00e9ce6c。 See merge request: cann/ge!5427 | 23 days ago | |
!5338 merge develop into master 【PR】: sync develop to master 20261009 Created-by: Jett_Woo Commit-by: gentle-knight;Dazhou_Cao;tangqunzhang;lining23666;liyanrong_9;wuzheng-hw;KenChow;fary86;likun104 Merged-by: cann-robot Description: # Pull Request ## 描述 sync develop to master 20261009 ## 变更类型 请选择本次引入的变更类型: <!-- [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!5338 | 29 days ago | |
feat: 支持自定义算子能力识别与 Python 适配器 Co-authored-by: du-hua1024<duhua2@huawei.com> # message auto-generated for no-merge-commit merge: !3970 merge op-cpp into develop feat: 支持自定义算子能力识别与 Python 适配器 Created-by: du-hua1024 Commit-by: du-hua1024 Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 为 C++ 自定义算子补充能力标识和统一转型入口,并新增 Python custom op runtime adapter 的基础实现。 主要变更: - 新增 CustomOpCapability / CustomOpCast,让调用点按 capability 判断 EagerExecuteOp、CompilableOp、ShapeInferOp、PortableOp、ArgsUpdater。 - 将现有自定义算子执行、编译、shape 推导、序列化和地址刷新调用点从直接 dynamic_cast 切换为 CustomOpCast。 - 新增 custom_op_runtime 目标和 Python custom op adapter/registry 基础类型,用于承接 Python 自定义算子执行能力。 - 将 custom_op_runtime 纳入 ge-executor 构建和 ge-executor 包安装范围,并补充相关 UT 链接和用例。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无。 ## 如何测试 新增及历史ut运行正常 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已确认本 PR 不涉及文档更新 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 本 PR 是自定义算子 Python eager 执行能力的 C++ capability 和 adapter 基础部分,Python bridge/公开 Python surface 可在后续 PR 中继续拆分提交。 See merge request: cann/ge!3970 | 3 months ago |