| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat: 语言无关Custom Task Info 适配 OM2 Co-authored-by: fary86<fary.fanrui@huawei.com> # message auto-generated for no-merge-commit merge: !4407 merge dev_custom_op_new into develop feat: 语言无关Custom Task Info 适配 OM2 Created-by: fary86 Commit-by: fary86 Merged-by: cann-robot Description: # Pull Request ## 描述 ### 变更摘要 此 PR 为 OM2 模型管线新增了自定义算子(Custom Op)的完整支持。在数据结构侧, Om2ModelData 新增 custom_kernel_binaries 与 custom_shared_libs 字段;在打包阶段,Om2PackageHelper 新增 CollectUsedCustomOpTypes 遍历图中自定义算子类型并调用 PortableOp::Serialize 序列化算子二进制,同时封装自定义算子动态库入库;在代码生成阶段,新增 MODEL_TASK_CUSTOM_KERNEL 任务类型与 CustomTaskCodeBuilder 类,生成 KernelCustTaskDistribute 分发函数及 DeserializeCustKernelBinaries 反序列化辅助函数;在运行时阶段,om2_model_executor.cc 新增对自定义 so 的 mmDlopen 加载及自定义内核二进制到 kernel_bin_info 的合并。 **主要改动** - **新增 CustomTaskCodeBuilder 类与 DISPATCH_CUSTOM_KERNEL 分发类型**:新增 custom_task_code_builder.cc/h,实现 CustomTaskCodeBuilder 类处理 MODEL_TASK_CUSTOM_KERNEL 任务,生成 RenderDispatchCustomKernel 等分发逻辑;OpDispatchType 枚举扩展增加 DISPATCH_CUSTOM_KERNEL = 21,TaskDispatchInfo 联合体新增 CustomDispatchInfo custom 字段 - **新增自定义算子二进制收集与序列化逻辑**:Om2PackageHelper 新增 CollectUsedCustomOpTypes(遍历 root 图及游离子图收集 CustomOpFactory 注册的自定义算子类型)、BuildCustomKernelBinaries(调用 PortableOp::Serialize 序列化)、BuildCustomSharedLibs(读取自定义 op so 文件),并集成到 BuildOm2ModelData 流程中;同时重构多个 Build 方法接口,将分散的 Om2ProgramBody/Om2ModelMeta/Om2ConstantsData 等参数统一改为传递 Om2ModelData 引用 - **新增代码生成中的自定义算子运行时辅助代码**:stable_part_provider.cc 新增 kCreateClassCustomOpFactory 与 kCustomTaskHelpers 两个 StablePart,分别生成 CustomOpFactory 类声明和 CustKernelContextHolder、KernelCustTaskDistribute、DeserializeCustKernelBinaries 等辅助函数;program_generator.cc 在存在自定义 kernel 时引入 graph/custom_op.h 头文件并嵌入相应 StablePart - **运行时支持自定义 so 加载与内核反序列化**:om2_model_executor.cc 新增 CustSharedLibInfo 结构体,在 HandleArchiveEntry 中解析 data/custom_ops/shared_libs 和 data/custom_ops/binaries_* 条目;模型加载时对自定义 so 执行 mmDlopen,并将 custom_kernel_binaries 合并到 kernel_bin_info 供后续 DeserializeCustKernelBinaries 使用 - **新增 OM2_CUSTOM_KERNELS_DIR_FORMAT 路径常量与 ZIP 序列化方法**:om2_package_contants.h 新增 OM2_CUSTOM_KERNELS_DIR_FORMAT 宏;om2_zip_saver.cc 新增 SerializeCustomKernelBinaries 和 SerializeCustomKernelSharedLibs,分别将自定义算子二进制和共享库写入 data/custom_ops/ 目录下的 ZIP 条目 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [ ] 我的代码遵循了项目的代码风格 - [ ] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [ ] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!4407 | 1 个月前 | |
feat: OM2 so C 接口整改 Co-authored-by: fanrui<fary.fanrui@huawei.com> # message auto-generated for no-merge-commit merge: !4559 merge dev_om2_interface_part2 into develop feat: OM2 so C 接口整改 Created-by: fary86 Commit-by: fanrui Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR( feat: remove Om2Tensor)将 OM2 模型的对外加载/运行接口从旧的 Om2ModelCreate/Om2ModelLoad/Om2ModelRun/Om2ModelRunAsync/Om2ModelDestroy 一套分离式 API,重构为统一使用 Config/Output 结构体的 GertModelLoad/GertModelRun/GertModelRunAsync/GertModelUnload 新接口,模型句柄类型 om2::Om2ModelHandle 相应更名为 GertModelHandle;codegen 代码生成、Om2ModelExecutor 执行器及对应单元/集成测试的 mock 接口均同步适配。 **主要改动** - **接口重构为统一 Config/Output 结构体**: 新增 GertModelLoadConfig、GertModelRunConfig、GertModelUnloadConfig 与 GertModelLoadOutput、GertModelRunOutput、GertModelUnloadOutput 六个结构体,首字段均为 struct_size 版本号,将原 Om2ModelCreate 的众多分散参数合并到 GertModelLoadConfig 中;GertModelLoad 将原 Create+Load 两步合并,GertModelUnload 取代 Om2ModelDestroy。 - **句柄类型重命名**: om2::Om2ModelHandle 全局替换为 GertModelHandle(仍为 void * 类型别名),同时移除 interface_file_code_generator 中的 BuildOm2ModelHandleAlias、BuildOm2ProfInfosStruct 等构造函数及 program_generator.cc 中对应生成逻辑。 - **Om2ProfInfos 结构调整**: model_dump_c_api.h 中将 version/count 字段由 uint32_t 改为 uint64_t struct_size/uint64_t count,并补充默认初始化值。 - **Om2ModelExecutor 适配新接口**: runtime/om2/om2_model_executor.cc 中 ResolveSymbols 改为按新符号名 GertModelLoad/GertModelRun/GertModelRunAsync/GertModelUnload 解析,加载流程用 GertModelLoadConfig 组装参数并通过 GertModelLoadOutput 回传 rt_model_handle,同步/异步运行改为传入 config/output 结构体,资源释放改用 unload_func,并移除独立的 LoadModel() 方法。 - **codegen 生成内容与测试同步更新**: stable_part_provider.cc 中新增生成 GertModelLoad/GertModelRun/GertModelRunAsync/GertModelUnload 及上述结构体的代码(底层仍转发调用 Om2ModelCreate 等实现),多个 UT/ST 测试(如 test_om2.cc、control_task_code_builder_unittest.cc、om2_model_executor_unittest.cc 等)的 mock .so 源码与断言均改为新接口。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [ ] 我的代码遵循了项目的代码风格 - [ ] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [ ] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!4559 | 1 个月前 | |
feat: OM2 so C 接口整改 Co-authored-by: fanrui<fary.fanrui@huawei.com> # message auto-generated for no-merge-commit merge: !4559 merge dev_om2_interface_part2 into develop feat: OM2 so C 接口整改 Created-by: fary86 Commit-by: fanrui Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR( feat: remove Om2Tensor)将 OM2 模型的对外加载/运行接口从旧的 Om2ModelCreate/Om2ModelLoad/Om2ModelRun/Om2ModelRunAsync/Om2ModelDestroy 一套分离式 API,重构为统一使用 Config/Output 结构体的 GertModelLoad/GertModelRun/GertModelRunAsync/GertModelUnload 新接口,模型句柄类型 om2::Om2ModelHandle 相应更名为 GertModelHandle;codegen 代码生成、Om2ModelExecutor 执行器及对应单元/集成测试的 mock 接口均同步适配。 **主要改动** - **接口重构为统一 Config/Output 结构体**: 新增 GertModelLoadConfig、GertModelRunConfig、GertModelUnloadConfig 与 GertModelLoadOutput、GertModelRunOutput、GertModelUnloadOutput 六个结构体,首字段均为 struct_size 版本号,将原 Om2ModelCreate 的众多分散参数合并到 GertModelLoadConfig 中;GertModelLoad 将原 Create+Load 两步合并,GertModelUnload 取代 Om2ModelDestroy。 - **句柄类型重命名**: om2::Om2ModelHandle 全局替换为 GertModelHandle(仍为 void * 类型别名),同时移除 interface_file_code_generator 中的 BuildOm2ModelHandleAlias、BuildOm2ProfInfosStruct 等构造函数及 program_generator.cc 中对应生成逻辑。 - **Om2ProfInfos 结构调整**: model_dump_c_api.h 中将 version/count 字段由 uint32_t 改为 uint64_t struct_size/uint64_t count,并补充默认初始化值。 - **Om2ModelExecutor 适配新接口**: runtime/om2/om2_model_executor.cc 中 ResolveSymbols 改为按新符号名 GertModelLoad/GertModelRun/GertModelRunAsync/GertModelUnload 解析,加载流程用 GertModelLoadConfig 组装参数并通过 GertModelLoadOutput 回传 rt_model_handle,同步/异步运行改为传入 config/output 结构体,资源释放改用 unload_func,并移除独立的 LoadModel() 方法。 - **codegen 生成内容与测试同步更新**: stable_part_provider.cc 中新增生成 GertModelLoad/GertModelRun/GertModelRunAsync/GertModelUnload 及上述结构体的代码(底层仍转发调用 Om2ModelCreate 等实现),多个 UT/ST 测试(如 test_om2.cc、control_task_code_builder_unittest.cc、om2_model_executor_unittest.cc 等)的 mock .so 源码与断言均改为新接口。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [ ] 我的代码遵循了项目的代码风格 - [ ] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [ ] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!4559 | 1 个月前 | |
【feat】新增OM2静态图执行地址刷新功能 Co-authored-by: wang-bin-789<wangbin153@huawei.com> # message auto-generated for no-merge-commit merge: !4363 merge develop_0815_addr_refresh_test into develop 【feat】新增OM2静态图执行地址刷新功能 Created-by: wang-bin-789 Commit-by: wang-bin-789 Merged-by: cann-robot Description: # Pull Request ## 描述 新增OM2静态图地址刷新个功能,用于在运行时可以对模型需要的地址进行刷新操作 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1.验证 OM2 模型编译和运行时功能正常 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 涉及 58 个文件变更,新增约 8000行代码。 See merge request: cann/ge!4363 | 1 个月前 | |
【Fix】:ATC生成OM2模型文件失败问题修复 Co-authored-by: wang-bin-789<wangbin153@huawei.com> # message auto-generated for no-merge-commit merge: !4510 merge develop_dts into develop 【Fix】:ATC生成OM2模型文件失败问题修复 Created-by: wang-bin-789 Commit-by: wang-bin-789 Merged-by: cann-robot Description: # Pull Request ## 描述 OM2 代码生成模块中 KernelTaskCodeBuilder 的内核任务构建逻辑:为原子算子(atomic)新增输出与工作空间地址的收集及填充能力,补充单独清理任务标志位的设置,在初始化阶段增加对预处理内核组合的校验,并在参数解析处增加调试日志 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!4510 | 1 个月前 | |
【feat】:OM2 Args支持VA2PA转换 Co-authored-by: wang-bin-789<wangbin153@huawei.com> # message auto-generated for no-merge-commit merge: !4436 merge develop_va2pa into develop 【feat】:OM2 Args支持VA2PA转换 Created-by: wang-bin-789 Commit-by: wang-bin-789 Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 为 OM2 代码生成流程引入 VA2PA(虚拟地址转物理地址)支持:在模型构建阶段通过运行时接口 rtNeedDevVA2PA 探测是否需要地址转换,并将结果存入 Om2CodegenModel 新增字段 is_need_va2pa;据此在生成的参数拷贝方法 CopyArgsToDevice 中,于 H2D 拷贝后追加 rtDevVA2PA 调用(新增 stream、is_async 参数),同时更新接口声明、加载运行代码生成及相应测试用例。 主要改动 新增 VA2PA 能力探测:Om2CodegenModelBuilder 新增 BuildVA2PAInfo 方法,在 Build 流程中调用 rtNeedDevVA2PA 查询运行时需求,将结果写入 Om2CodegenModel::is_need_va2pa 字段。 新增 rtDevVA2PA 代码生成入口:CodeGeneratorBase 新增 RtDevVA2PA 辅助方法,用于生成 rtDevVA2PA(dev_addr, len, stream, is_async) 调用表达式。 扩展 CopyArgsToDevice 接口与实现:BuildCopyArgsToDeviceMethod 改为接收 Om2CodegenModel,接口及声明新增 void *stream、bool is_async 参数;当 is_need_va2pa 为真时在 aclrtMemcpy 后追加 rtDevVA2PA 调用,否则仅保留 memcpy 并对新参数做 (void) 忽略。 运行流程按需传入流参数:BuildRunBodyPhaseModelExecute 新增 is_need_va2pa 参数,需要 VA2PA 且异步时以 exe_stream 调用 CopyArgsToDevice,否则传 nullptr。 同步更新测试用例:test_om2.cc 等新增 ST/UT 用例,校验生成的 g1_args_manager.cpp、g1_load_and_run.cpp、g1_interface.h 中包含新签名及 rtDevVA2PA/CopyArgsToDevice(exe_stream, true) 等调用分支。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!4436 | 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 | 3 个月前 | |
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 | 3 个月前 | |
【PR】: 【refactor】OM2实现全内存加载 Co-authored-by: 谢正恺<xiezhengkai@huawei.com> # message auto-generated for no-merge-commit merge: !2613 merge om2_mem_load into develop 【PR】: 【refactor】OM2实现全内存加载 Created-by: ClarkXie Commit-by: 谢正恺 Merged-by: cann-robot Description: # Pull Request ## 描述 实现om2的全内存编译及加载。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. atc转om2并加载 2. 观察过程中是否有文件落盘 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!2613 | 4 个月前 | |
feat(om2): add OM2 logging macros and lifecycle logging support Co-authored-by: wuzheng-hw<wuzheng14@huawei.com> # message auto-generated for no-merge-commit merge: !3593 merge om2log into develop feat(om2): add OM2 logging macros and lifecycle logging support Created-by: wuzheng-hw Commit-by: wuzheng-hw Merged-by: cann-robot Description: # Pull Request ## 描述 为 OM2 模块添加完整的日志能力,包括日志宏定义(OM2_LOGD/I/W/E)、生命周期日志注入、错误检查增强,以及相关单元测试。 ## 变更内容 - 新增 kOm2LogMacros StablePart 及 StablePartId 枚举值 - 实现 OM2_LOGD/OM2_LOGI/OM2_LOGW/OM2_LOGE 日志宏 - 增强 OM2_CHK_* 宏,失败时输出 OM2_LOGE 日志 - 外部 C API 稳定部分添加 OM2_LOGI/OM2_LOGE - 为 kernel_reg.cpp、resources、load_and_run、interface.h 生成器注入生命周期日志 - Makefile 添加 -lslog 链接依赖 - 新增日志功能单元测试 - 修复 OM2 生成 Makefile 的编译和链接问题 ## 变更类型 - [x] ✨ 新功能 - [x] 🐛 Bug 修复(Makefile编译链接修复) - [x] 🧪 测试相关 ## 关联的Issue ## 如何测试 运行 OM2 日志功能单元测试验证日志宏和生命周期日志的正确性。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我在标题中使用了合适的类型标签 - [x] 我已阅读了贡献指南(CONTRIBUTING.md) See merge request: cann/ge!3593 | 3 个月前 | |
【fix】: 修复OM2错误码和编译临时文件清理 Co-authored-by: 谢正恺<xiezhengkai@huawei.com> # message auto-generated for no-merge-commit merge: !4536 merge om2_rm_tmp_workspace into develop 【fix】: 修复OM2错误码和编译临时文件清理 Created-by: ClarkXie Commit-by: 谢正恺 Merged-by: cann-robot Description: ## 描述 修复 OM2 相关失败处理问题: 1. --mode=6 展示 OM2 模型信息时上报对外错误码 E10055。 2. 删除编译失败后写入 /tmp/.tmp_om2_workspace/ 的诊断 dump,避免临时文件残留。 3. 在 CompileGeneratedCppToSo 调用点增加带模型名的错误提示。 ## 变更类型 <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无。 ## 如何测试 1. 已完成静态差异检查。 2. 按需求未编译,未运行 UT/ST。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守其中的相关要求 ## 其他信息 本次不修改 docs/zh/design/features/atc_raw_ge_options.md。/tmp/.om2_<pid>_<so-name>_XXXXXX 和 /proc/<pid>/fd/<fd> 的现有 RAII 清理逻辑保持不变。 See merge request: cann/ge!4536 | 1 个月前 | |
feat: 语言无关Custom Task Info 适配 OM2 Co-authored-by: fary86<fary.fanrui@huawei.com> # message auto-generated for no-merge-commit merge: !4407 merge dev_custom_op_new into develop feat: 语言无关Custom Task Info 适配 OM2 Created-by: fary86 Commit-by: fary86 Merged-by: cann-robot Description: # Pull Request ## 描述 ### 变更摘要 此 PR 为 OM2 模型管线新增了自定义算子(Custom Op)的完整支持。在数据结构侧, Om2ModelData 新增 custom_kernel_binaries 与 custom_shared_libs 字段;在打包阶段,Om2PackageHelper 新增 CollectUsedCustomOpTypes 遍历图中自定义算子类型并调用 PortableOp::Serialize 序列化算子二进制,同时封装自定义算子动态库入库;在代码生成阶段,新增 MODEL_TASK_CUSTOM_KERNEL 任务类型与 CustomTaskCodeBuilder 类,生成 KernelCustTaskDistribute 分发函数及 DeserializeCustKernelBinaries 反序列化辅助函数;在运行时阶段,om2_model_executor.cc 新增对自定义 so 的 mmDlopen 加载及自定义内核二进制到 kernel_bin_info 的合并。 **主要改动** - **新增 CustomTaskCodeBuilder 类与 DISPATCH_CUSTOM_KERNEL 分发类型**:新增 custom_task_code_builder.cc/h,实现 CustomTaskCodeBuilder 类处理 MODEL_TASK_CUSTOM_KERNEL 任务,生成 RenderDispatchCustomKernel 等分发逻辑;OpDispatchType 枚举扩展增加 DISPATCH_CUSTOM_KERNEL = 21,TaskDispatchInfo 联合体新增 CustomDispatchInfo custom 字段 - **新增自定义算子二进制收集与序列化逻辑**:Om2PackageHelper 新增 CollectUsedCustomOpTypes(遍历 root 图及游离子图收集 CustomOpFactory 注册的自定义算子类型)、BuildCustomKernelBinaries(调用 PortableOp::Serialize 序列化)、BuildCustomSharedLibs(读取自定义 op so 文件),并集成到 BuildOm2ModelData 流程中;同时重构多个 Build 方法接口,将分散的 Om2ProgramBody/Om2ModelMeta/Om2ConstantsData 等参数统一改为传递 Om2ModelData 引用 - **新增代码生成中的自定义算子运行时辅助代码**:stable_part_provider.cc 新增 kCreateClassCustomOpFactory 与 kCustomTaskHelpers 两个 StablePart,分别生成 CustomOpFactory 类声明和 CustKernelContextHolder、KernelCustTaskDistribute、DeserializeCustKernelBinaries 等辅助函数;program_generator.cc 在存在自定义 kernel 时引入 graph/custom_op.h 头文件并嵌入相应 StablePart - **运行时支持自定义 so 加载与内核反序列化**:om2_model_executor.cc 新增 CustSharedLibInfo 结构体,在 HandleArchiveEntry 中解析 data/custom_ops/shared_libs 和 data/custom_ops/binaries_* 条目;模型加载时对自定义 so 执行 mmDlopen,并将 custom_kernel_binaries 合并到 kernel_bin_info 供后续 DeserializeCustKernelBinaries 使用 - **新增 OM2_CUSTOM_KERNELS_DIR_FORMAT 路径常量与 ZIP 序列化方法**:om2_package_contants.h 新增 OM2_CUSTOM_KERNELS_DIR_FORMAT 宏;om2_zip_saver.cc 新增 SerializeCustomKernelBinaries 和 SerializeCustomKernelSharedLibs,分别将自定义算子二进制和共享库写入 data/custom_ops/ 目录下的 ZIP 条目 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [ ] 我的代码遵循了项目的代码风格 - [ ] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [ ] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!4407 | 1 个月前 | |
【feat】:OM2 Args支持VA2PA转换 Co-authored-by: wang-bin-789<wangbin153@huawei.com> # message auto-generated for no-merge-commit merge: !4436 merge develop_va2pa into develop 【feat】:OM2 Args支持VA2PA转换 Created-by: wang-bin-789 Commit-by: wang-bin-789 Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 为 OM2 代码生成流程引入 VA2PA(虚拟地址转物理地址)支持:在模型构建阶段通过运行时接口 rtNeedDevVA2PA 探测是否需要地址转换,并将结果存入 Om2CodegenModel 新增字段 is_need_va2pa;据此在生成的参数拷贝方法 CopyArgsToDevice 中,于 H2D 拷贝后追加 rtDevVA2PA 调用(新增 stream、is_async 参数),同时更新接口声明、加载运行代码生成及相应测试用例。 主要改动 新增 VA2PA 能力探测:Om2CodegenModelBuilder 新增 BuildVA2PAInfo 方法,在 Build 流程中调用 rtNeedDevVA2PA 查询运行时需求,将结果写入 Om2CodegenModel::is_need_va2pa 字段。 新增 rtDevVA2PA 代码生成入口:CodeGeneratorBase 新增 RtDevVA2PA 辅助方法,用于生成 rtDevVA2PA(dev_addr, len, stream, is_async) 调用表达式。 扩展 CopyArgsToDevice 接口与实现:BuildCopyArgsToDeviceMethod 改为接收 Om2CodegenModel,接口及声明新增 void *stream、bool is_async 参数;当 is_need_va2pa 为真时在 aclrtMemcpy 后追加 rtDevVA2PA 调用,否则仅保留 memcpy 并对新参数做 (void) 忽略。 运行流程按需传入流参数:BuildRunBodyPhaseModelExecute 新增 is_need_va2pa 参数,需要 VA2PA 且异步时以 exe_stream 调用 CopyArgsToDevice,否则传 nullptr。 同步更新测试用例:test_om2.cc 等新增 ST/UT 用例,校验生成的 g1_args_manager.cpp、g1_load_and_run.cpp、g1_interface.h 中包含新签名及 rtDevVA2PA/CopyArgsToDevice(exe_stream, true) 等调用分支。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!4436 | 1 个月前 | |
【feat】:OM2 Args支持VA2PA转换 Co-authored-by: wang-bin-789<wangbin153@huawei.com> # message auto-generated for no-merge-commit merge: !4436 merge develop_va2pa into develop 【feat】:OM2 Args支持VA2PA转换 Created-by: wang-bin-789 Commit-by: wang-bin-789 Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 为 OM2 代码生成流程引入 VA2PA(虚拟地址转物理地址)支持:在模型构建阶段通过运行时接口 rtNeedDevVA2PA 探测是否需要地址转换,并将结果存入 Om2CodegenModel 新增字段 is_need_va2pa;据此在生成的参数拷贝方法 CopyArgsToDevice 中,于 H2D 拷贝后追加 rtDevVA2PA 调用(新增 stream、is_async 参数),同时更新接口声明、加载运行代码生成及相应测试用例。 主要改动 新增 VA2PA 能力探测:Om2CodegenModelBuilder 新增 BuildVA2PAInfo 方法,在 Build 流程中调用 rtNeedDevVA2PA 查询运行时需求,将结果写入 Om2CodegenModel::is_need_va2pa 字段。 新增 rtDevVA2PA 代码生成入口:CodeGeneratorBase 新增 RtDevVA2PA 辅助方法,用于生成 rtDevVA2PA(dev_addr, len, stream, is_async) 调用表达式。 扩展 CopyArgsToDevice 接口与实现:BuildCopyArgsToDeviceMethod 改为接收 Om2CodegenModel,接口及声明新增 void *stream、bool is_async 参数;当 is_need_va2pa 为真时在 aclrtMemcpy 后追加 rtDevVA2PA 调用,否则仅保留 memcpy 并对新参数做 (void) 忽略。 运行流程按需传入流参数:BuildRunBodyPhaseModelExecute 新增 is_need_va2pa 参数,需要 VA2PA 且异步时以 exe_stream 调用 CopyArgsToDevice,否则传 nullptr。 同步更新测试用例:test_om2.cc 等新增 ST/UT 用例,校验生成的 g1_args_manager.cpp、g1_load_and_run.cpp、g1_interface.h 中包含新签名及 rtDevVA2PA/CopyArgsToDevice(exe_stream, true) 等调用分支。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!4436 | 1 个月前 | |
【feat】:OM2 Args支持VA2PA转换 Co-authored-by: wang-bin-789<wangbin153@huawei.com> # message auto-generated for no-merge-commit merge: !4436 merge develop_va2pa into develop 【feat】:OM2 Args支持VA2PA转换 Created-by: wang-bin-789 Commit-by: wang-bin-789 Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 为 OM2 代码生成流程引入 VA2PA(虚拟地址转物理地址)支持:在模型构建阶段通过运行时接口 rtNeedDevVA2PA 探测是否需要地址转换,并将结果存入 Om2CodegenModel 新增字段 is_need_va2pa;据此在生成的参数拷贝方法 CopyArgsToDevice 中,于 H2D 拷贝后追加 rtDevVA2PA 调用(新增 stream、is_async 参数),同时更新接口声明、加载运行代码生成及相应测试用例。 主要改动 新增 VA2PA 能力探测:Om2CodegenModelBuilder 新增 BuildVA2PAInfo 方法,在 Build 流程中调用 rtNeedDevVA2PA 查询运行时需求,将结果写入 Om2CodegenModel::is_need_va2pa 字段。 新增 rtDevVA2PA 代码生成入口:CodeGeneratorBase 新增 RtDevVA2PA 辅助方法,用于生成 rtDevVA2PA(dev_addr, len, stream, is_async) 调用表达式。 扩展 CopyArgsToDevice 接口与实现:BuildCopyArgsToDeviceMethod 改为接收 Om2CodegenModel,接口及声明新增 void *stream、bool is_async 参数;当 is_need_va2pa 为真时在 aclrtMemcpy 后追加 rtDevVA2PA 调用,否则仅保留 memcpy 并对新参数做 (void) 忽略。 运行流程按需传入流参数:BuildRunBodyPhaseModelExecute 新增 is_need_va2pa 参数,需要 VA2PA 且异步时以 exe_stream 调用 CopyArgsToDevice,否则传 nullptr。 同步更新测试用例:test_om2.cc 等新增 ST/UT 用例,校验生成的 g1_args_manager.cpp、g1_load_and_run.cpp、g1_interface.h 中包含新签名及 rtDevVA2PA/CopyArgsToDevice(exe_stream, true) 等调用分支。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!4436 | 1 个月前 | |
feat: 语言无关Custom Task Info 适配 OM2 Co-authored-by: fary86<fary.fanrui@huawei.com> # message auto-generated for no-merge-commit merge: !4407 merge dev_custom_op_new into develop feat: 语言无关Custom Task Info 适配 OM2 Created-by: fary86 Commit-by: fary86 Merged-by: cann-robot Description: # Pull Request ## 描述 ### 变更摘要 此 PR 为 OM2 模型管线新增了自定义算子(Custom Op)的完整支持。在数据结构侧, Om2ModelData 新增 custom_kernel_binaries 与 custom_shared_libs 字段;在打包阶段,Om2PackageHelper 新增 CollectUsedCustomOpTypes 遍历图中自定义算子类型并调用 PortableOp::Serialize 序列化算子二进制,同时封装自定义算子动态库入库;在代码生成阶段,新增 MODEL_TASK_CUSTOM_KERNEL 任务类型与 CustomTaskCodeBuilder 类,生成 KernelCustTaskDistribute 分发函数及 DeserializeCustKernelBinaries 反序列化辅助函数;在运行时阶段,om2_model_executor.cc 新增对自定义 so 的 mmDlopen 加载及自定义内核二进制到 kernel_bin_info 的合并。 **主要改动** - **新增 CustomTaskCodeBuilder 类与 DISPATCH_CUSTOM_KERNEL 分发类型**:新增 custom_task_code_builder.cc/h,实现 CustomTaskCodeBuilder 类处理 MODEL_TASK_CUSTOM_KERNEL 任务,生成 RenderDispatchCustomKernel 等分发逻辑;OpDispatchType 枚举扩展增加 DISPATCH_CUSTOM_KERNEL = 21,TaskDispatchInfo 联合体新增 CustomDispatchInfo custom 字段 - **新增自定义算子二进制收集与序列化逻辑**:Om2PackageHelper 新增 CollectUsedCustomOpTypes(遍历 root 图及游离子图收集 CustomOpFactory 注册的自定义算子类型)、BuildCustomKernelBinaries(调用 PortableOp::Serialize 序列化)、BuildCustomSharedLibs(读取自定义 op so 文件),并集成到 BuildOm2ModelData 流程中;同时重构多个 Build 方法接口,将分散的 Om2ProgramBody/Om2ModelMeta/Om2ConstantsData 等参数统一改为传递 Om2ModelData 引用 - **新增代码生成中的自定义算子运行时辅助代码**:stable_part_provider.cc 新增 kCreateClassCustomOpFactory 与 kCustomTaskHelpers 两个 StablePart,分别生成 CustomOpFactory 类声明和 CustKernelContextHolder、KernelCustTaskDistribute、DeserializeCustKernelBinaries 等辅助函数;program_generator.cc 在存在自定义 kernel 时引入 graph/custom_op.h 头文件并嵌入相应 StablePart - **运行时支持自定义 so 加载与内核反序列化**:om2_model_executor.cc 新增 CustSharedLibInfo 结构体,在 HandleArchiveEntry 中解析 data/custom_ops/shared_libs 和 data/custom_ops/binaries_* 条目;模型加载时对自定义 so 执行 mmDlopen,并将 custom_kernel_binaries 合并到 kernel_bin_info 供后续 DeserializeCustKernelBinaries 使用 - **新增 OM2_CUSTOM_KERNELS_DIR_FORMAT 路径常量与 ZIP 序列化方法**:om2_package_contants.h 新增 OM2_CUSTOM_KERNELS_DIR_FORMAT 宏;om2_zip_saver.cc 新增 SerializeCustomKernelBinaries 和 SerializeCustomKernelSharedLibs,分别将自定义算子二进制和共享库写入 data/custom_ops/ 目录下的 ZIP 条目 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [ ] 我的代码遵循了项目的代码风格 - [ ] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [ ] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!4407 | 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 | 3 个月前 | |
feat(om2): support ACL_MDL_PRIORITY_INT32 in aclmdlLoadWithConfig Co-authored-by: lidaoming1<lidaoming1@huawei.com> # message auto-generated for no-merge-commit merge: !4417 merge om2_priority into develop feat(om2): support ACL_MDL_PRIORITY_INT32 in aclmdlLoadWithConfig Created-by: lidaoming1 Commit-by: lidaoming1 Merged-by: cann-robot Description: # Pull Request ## 描述 OM2场景下 aclmdlLoadWithConfig支持通过ACL_MDL_PRIORITY_INT32设置模型流优先级。 用户通过aclmdlSetConfigOpt(handle, ACL_MDL_PRIORITY_INT32, &priority, sizeof(int32_t))设置优先级后,priority经ACL配置层→加载层→执行器层→codegen生成SO,最终传递到rtStreamCreateWithFlags(stream, priority_, flags)创建带优先级的下沉流。 ### 改动内容 1. **ACL配置白名单**:将ACL_MDL_PRIORITY_INT32添加到kOm2SupportedLoadConfigOpts,使CheckOm2UserLoadConfigOptValid不再拒绝该配置项 2. **参数传递链路**:Om2ModelLoadArg新增priority字段,ConstructOm2ModelLoadArg传递priority参数(LoadFromFile/LoadFromMem传0,LoadFromFileWithMem/LoadFromMemWithMem传handle->priority) 3. **执行器层**:CreateFunc typedef和Om2ModelExecutor::Load末尾新增int32_t priority参数 4. **Codegen层**:Om2ModelCreate函数签名、Om2Model构造函数接收并存储priority_成员变量,InitResources中rtStreamCreateWithFlags使用priority_创建下沉流 5. **测试同步**:更新所有UT/ST测试桩函数签名和expected字符串 ### 兼容性 - Om2ModelCreate函数签名变更(末尾新增int32_t priority),不兼容旧OM2模型SO - OM2是新特性,无存量部署模型,codegen模板已同步更新 ## 变更类型 - [x] ✨ 新功能 ## 关联的Issue ## 如何测试 1. 编译om2_executor目标:make om2_executor 2. 编译UT测试桩:make ut_libge_distinct_load_utest(受限于预存的toolkit版本问题) 3. 验证aclmdlSetConfigOpt(handle, ACL_MDL_PRIORITY_INT32, &priority, sizeof(int32_t))不再返回ACL_ERROR_INVALID_PARAM 4. 验证aclmdlLoadWithConfig加载OM2模型时priority传递到rtStreamCreateWithFlags ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - aclmdlRIBuildBegin(model, 0)的第二参数是flag标志位(非priority),保持传0不变 - sync_prof_stream_是profiling专用流,保持默认优先级0 - 预存的toolkit版本问题(super_kernel_pass.h缺少aclskScopeVerify*类型)阻塞UT完整链接,与本次修改无关 See merge request: cann/ge!4417 | 1 个月前 | |
feat(om2): support ACL_MDL_PRIORITY_INT32 in aclmdlLoadWithConfig Co-authored-by: lidaoming1<lidaoming1@huawei.com> # message auto-generated for no-merge-commit merge: !4417 merge om2_priority into develop feat(om2): support ACL_MDL_PRIORITY_INT32 in aclmdlLoadWithConfig Created-by: lidaoming1 Commit-by: lidaoming1 Merged-by: cann-robot Description: # Pull Request ## 描述 OM2场景下 aclmdlLoadWithConfig支持通过ACL_MDL_PRIORITY_INT32设置模型流优先级。 用户通过aclmdlSetConfigOpt(handle, ACL_MDL_PRIORITY_INT32, &priority, sizeof(int32_t))设置优先级后,priority经ACL配置层→加载层→执行器层→codegen生成SO,最终传递到rtStreamCreateWithFlags(stream, priority_, flags)创建带优先级的下沉流。 ### 改动内容 1. **ACL配置白名单**:将ACL_MDL_PRIORITY_INT32添加到kOm2SupportedLoadConfigOpts,使CheckOm2UserLoadConfigOptValid不再拒绝该配置项 2. **参数传递链路**:Om2ModelLoadArg新增priority字段,ConstructOm2ModelLoadArg传递priority参数(LoadFromFile/LoadFromMem传0,LoadFromFileWithMem/LoadFromMemWithMem传handle->priority) 3. **执行器层**:CreateFunc typedef和Om2ModelExecutor::Load末尾新增int32_t priority参数 4. **Codegen层**:Om2ModelCreate函数签名、Om2Model构造函数接收并存储priority_成员变量,InitResources中rtStreamCreateWithFlags使用priority_创建下沉流 5. **测试同步**:更新所有UT/ST测试桩函数签名和expected字符串 ### 兼容性 - Om2ModelCreate函数签名变更(末尾新增int32_t priority),不兼容旧OM2模型SO - OM2是新特性,无存量部署模型,codegen模板已同步更新 ## 变更类型 - [x] ✨ 新功能 ## 关联的Issue ## 如何测试 1. 编译om2_executor目标:make om2_executor 2. 编译UT测试桩:make ut_libge_distinct_load_utest(受限于预存的toolkit版本问题) 3. 验证aclmdlSetConfigOpt(handle, ACL_MDL_PRIORITY_INT32, &priority, sizeof(int32_t))不再返回ACL_ERROR_INVALID_PARAM 4. 验证aclmdlLoadWithConfig加载OM2模型时priority传递到rtStreamCreateWithFlags ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - aclmdlRIBuildBegin(model, 0)的第二参数是flag标志位(非priority),保持传0不变 - sync_prof_stream_是profiling专用流,保持默认优先级0 - 预存的toolkit版本问题(super_kernel_pass.h缺少aclskScopeVerify*类型)阻塞UT完整链接,与本次修改无关 See merge request: cann/ge!4417 | 1 个月前 | |
【feat】新增OM2静态图执行地址刷新功能 Co-authored-by: wang-bin-789<wangbin153@huawei.com> # message auto-generated for no-merge-commit merge: !4363 merge develop_0815_addr_refresh_test into develop 【feat】新增OM2静态图执行地址刷新功能 Created-by: wang-bin-789 Commit-by: wang-bin-789 Merged-by: cann-robot Description: # Pull Request ## 描述 新增OM2静态图地址刷新个功能,用于在运行时可以对模型需要的地址进行刷新操作 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1.验证 OM2 模型编译和运行时功能正常 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 涉及 58 个文件变更,新增约 8000行代码。 See merge request: cann/ge!4363 | 1 个月前 | |
feat(om2): 新增OM2运行时变量管理器(RTVarManager) Co-authored-by: wuzheng-hw<wuzheng14@huawei.com> # message auto-generated for no-merge-commit merge: !4297 merge om2_varmanager into develop feat(om2): 新增OM2运行时变量管理器(RTVarManager) Created-by: wuzheng-hw Commit-by: wuzheng-hw Merged-by: cann-robot Description: # Pull Request ## 描述 新增OM2运行时变量管理器(RTVarManager),用于在运行时管理变量的内存分配、地址映射、格式转换及数据拷贝。 主要变更: - 新增 RTVarResource 数据结构,描述运行时变量条目(RTVarEntry),包含变量名、逻辑地址、tensor描述、格式转换路径等 - 新增 BuildRTVarResource 接口,从编译期 VarManager 构建运行时变量资源并序列化到 OM2 模型文件 - 新增 Om2RTVarManager,负责运行时变量内存分配、地址管理、格式转换及数据拷贝 - 新增 Om2RTVarManagerPool 单例池,按 session 管理 RTVarManager 实例 - OM2 codegen 侧新增变量元数据序列化 - 模型执行器集成 RTVarManager,支持从 OM2 文件解析变量资源并初始化 - 任务码构建适配变量地址刷新逻辑 - 新增完整的 UT/ST 测试用例 ## 变更类型 - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue ## 如何测试 1. 运行 UT 用例:om2_rt_var_manager_unittest、rt_var_resource_unittest、om2_var_resource_builder_unittest 2. 运行 ST 用例:test_om2、test_om2_online 3. 验证 OM2 模型编译和运行时变量管理功能正常 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定 ## 其他信息 涉及 57 个文件变更,新增约 4500 行代码。 See merge request: cann/ge!4297 | 1 个月前 | |
feat: OM2 so C 接口整改 Co-authored-by: fanrui<fary.fanrui@huawei.com> # message auto-generated for no-merge-commit merge: !4559 merge dev_om2_interface_part2 into develop feat: OM2 so C 接口整改 Created-by: fary86 Commit-by: fanrui Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR( feat: remove Om2Tensor)将 OM2 模型的对外加载/运行接口从旧的 Om2ModelCreate/Om2ModelLoad/Om2ModelRun/Om2ModelRunAsync/Om2ModelDestroy 一套分离式 API,重构为统一使用 Config/Output 结构体的 GertModelLoad/GertModelRun/GertModelRunAsync/GertModelUnload 新接口,模型句柄类型 om2::Om2ModelHandle 相应更名为 GertModelHandle;codegen 代码生成、Om2ModelExecutor 执行器及对应单元/集成测试的 mock 接口均同步适配。 **主要改动** - **接口重构为统一 Config/Output 结构体**: 新增 GertModelLoadConfig、GertModelRunConfig、GertModelUnloadConfig 与 GertModelLoadOutput、GertModelRunOutput、GertModelUnloadOutput 六个结构体,首字段均为 struct_size 版本号,将原 Om2ModelCreate 的众多分散参数合并到 GertModelLoadConfig 中;GertModelLoad 将原 Create+Load 两步合并,GertModelUnload 取代 Om2ModelDestroy。 - **句柄类型重命名**: om2::Om2ModelHandle 全局替换为 GertModelHandle(仍为 void * 类型别名),同时移除 interface_file_code_generator 中的 BuildOm2ModelHandleAlias、BuildOm2ProfInfosStruct 等构造函数及 program_generator.cc 中对应生成逻辑。 - **Om2ProfInfos 结构调整**: model_dump_c_api.h 中将 version/count 字段由 uint32_t 改为 uint64_t struct_size/uint64_t count,并补充默认初始化值。 - **Om2ModelExecutor 适配新接口**: runtime/om2/om2_model_executor.cc 中 ResolveSymbols 改为按新符号名 GertModelLoad/GertModelRun/GertModelRunAsync/GertModelUnload 解析,加载流程用 GertModelLoadConfig 组装参数并通过 GertModelLoadOutput 回传 rt_model_handle,同步/异步运行改为传入 config/output 结构体,资源释放改用 unload_func,并移除独立的 LoadModel() 方法。 - **codegen 生成内容与测试同步更新**: stable_part_provider.cc 中新增生成 GertModelLoad/GertModelRun/GertModelRunAsync/GertModelUnload 及上述结构体的代码(底层仍转发调用 Om2ModelCreate 等实现),多个 UT/ST 测试(如 test_om2.cc、control_task_code_builder_unittest.cc、om2_model_executor_unittest.cc 等)的 mock .so 源码与断言均改为新接口。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [ ] 我的代码遵循了项目的代码风格 - [ ] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [ ] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!4559 | 1 个月前 | |
feat: 语言无关Custom Task Info 适配 OM2 Co-authored-by: fary86<fary.fanrui@huawei.com> # message auto-generated for no-merge-commit merge: !4407 merge dev_custom_op_new into develop feat: 语言无关Custom Task Info 适配 OM2 Created-by: fary86 Commit-by: fary86 Merged-by: cann-robot Description: # Pull Request ## 描述 ### 变更摘要 此 PR 为 OM2 模型管线新增了自定义算子(Custom Op)的完整支持。在数据结构侧, Om2ModelData 新增 custom_kernel_binaries 与 custom_shared_libs 字段;在打包阶段,Om2PackageHelper 新增 CollectUsedCustomOpTypes 遍历图中自定义算子类型并调用 PortableOp::Serialize 序列化算子二进制,同时封装自定义算子动态库入库;在代码生成阶段,新增 MODEL_TASK_CUSTOM_KERNEL 任务类型与 CustomTaskCodeBuilder 类,生成 KernelCustTaskDistribute 分发函数及 DeserializeCustKernelBinaries 反序列化辅助函数;在运行时阶段,om2_model_executor.cc 新增对自定义 so 的 mmDlopen 加载及自定义内核二进制到 kernel_bin_info 的合并。 **主要改动** - **新增 CustomTaskCodeBuilder 类与 DISPATCH_CUSTOM_KERNEL 分发类型**:新增 custom_task_code_builder.cc/h,实现 CustomTaskCodeBuilder 类处理 MODEL_TASK_CUSTOM_KERNEL 任务,生成 RenderDispatchCustomKernel 等分发逻辑;OpDispatchType 枚举扩展增加 DISPATCH_CUSTOM_KERNEL = 21,TaskDispatchInfo 联合体新增 CustomDispatchInfo custom 字段 - **新增自定义算子二进制收集与序列化逻辑**:Om2PackageHelper 新增 CollectUsedCustomOpTypes(遍历 root 图及游离子图收集 CustomOpFactory 注册的自定义算子类型)、BuildCustomKernelBinaries(调用 PortableOp::Serialize 序列化)、BuildCustomSharedLibs(读取自定义 op so 文件),并集成到 BuildOm2ModelData 流程中;同时重构多个 Build 方法接口,将分散的 Om2ProgramBody/Om2ModelMeta/Om2ConstantsData 等参数统一改为传递 Om2ModelData 引用 - **新增代码生成中的自定义算子运行时辅助代码**:stable_part_provider.cc 新增 kCreateClassCustomOpFactory 与 kCustomTaskHelpers 两个 StablePart,分别生成 CustomOpFactory 类声明和 CustKernelContextHolder、KernelCustTaskDistribute、DeserializeCustKernelBinaries 等辅助函数;program_generator.cc 在存在自定义 kernel 时引入 graph/custom_op.h 头文件并嵌入相应 StablePart - **运行时支持自定义 so 加载与内核反序列化**:om2_model_executor.cc 新增 CustSharedLibInfo 结构体,在 HandleArchiveEntry 中解析 data/custom_ops/shared_libs 和 data/custom_ops/binaries_* 条目;模型加载时对自定义 so 执行 mmDlopen,并将 custom_kernel_binaries 合并到 kernel_bin_info 供后续 DeserializeCustKernelBinaries 使用 - **新增 OM2_CUSTOM_KERNELS_DIR_FORMAT 路径常量与 ZIP 序列化方法**:om2_package_contants.h 新增 OM2_CUSTOM_KERNELS_DIR_FORMAT 宏;om2_zip_saver.cc 新增 SerializeCustomKernelBinaries 和 SerializeCustomKernelSharedLibs,分别将自定义算子二进制和共享库写入 data/custom_ops/ 目录下的 ZIP 条目 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [ ] 我的代码遵循了项目的代码风格 - [ ] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [ ] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!4407 | 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 | 3 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 4 个月前 | ||
| 3 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 3 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 3 个月前 |