| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
【PR】: ErrMsg整改 Co-authored-by: qymspace<qiuyaming@huawei.com> # message auto-generated for no-merge-commit merge: !4979 merge fix/kernel-launch-errmsg-latest into master 【PR】: ErrMsg整改 Created-by: qymspace Commit-by: qymspace Merged-by: cann-robot Description: # Pull Request ## 描述 整改Kernel/Launch模块的ErrMsg。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 全量UT和RDV 2. ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!4979 | 13 天前 | |
【PR】: ErrMsg整改 Co-authored-by: qymspace<qiuyaming@huawei.com> # message auto-generated for no-merge-commit merge: !4979 merge fix/kernel-launch-errmsg-latest into master 【PR】: ErrMsg整改 Created-by: qymspace Commit-by: qymspace Merged-by: cann-robot Description: # Pull Request ## 描述 整改Kernel/Launch模块的ErrMsg。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 全量UT和RDV 2. ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!4979 | 13 天前 | |
【PR】: ErrMsg整改 Co-authored-by: qymspace<qiuyaming@huawei.com> # message auto-generated for no-merge-commit merge: !4979 merge fix/kernel-launch-errmsg-latest into master 【PR】: ErrMsg整改 Created-by: qymspace Commit-by: qymspace Merged-by: cann-robot Description: # Pull Request ## 描述 整改Kernel/Launch模块的ErrMsg。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 全量UT和RDV 2. ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!4979 | 13 天前 | |
feat: 新增模型运行实例任务查询接口 aclmdlRIGetTasks Co-authored-by: Eternal-z<jialuze@huawei.com> # message auto-generated for no-merge-commit merge: !4739 merge feat/aclmdl-ri-get-tasks into master feat: 新增模型运行实例任务查询接口 aclmdlRIGetTasks Created-by: Eternal-z Commit-by: Eternal-z Merged-by: cann-robot Description: ## 描述 新增 aclmdlRIGetTasks(aclmdlRI modelRI, aclmdlRITask* tasks, uint32_t* numTasks) 接口,直接获取指定模型运行实例关联的全部 Stream 中登记的任务句柄,无需调用方逐个 Stream 查询。 接口支持两次调用: 1. 第一次将 tasks 传入空指针,通过 numTasks 获取任务总数。 2. 第二次传入已分配的任务句柄数组,并通过 numTasks 指定数组容量,获取任务句柄及实际写入数量。 返回顺序遵循模型关联 Stream 的遍历顺序及各 Stream 的任务列表顺序。数组容量不足时返回可容纳的任务前缀、已写入数量及空间不足错误;容量大于实际任务数时,将多余数组元素置为空指针。两次调用独立查询当前任务列表,若期间任务数量增加,调用方可重新查询数量并扩容。 新接口不增加模型类型判断,不按任务类型或禁用标记过滤已登记任务;返回任务句柄而非任务名称,不递归查询其他模型运行实例。保留 aclmdlRIGetTasksByStream 原接口及其行为。 See merge request: cann/runtime!4739 | 2 天前 | |
feat: 新增模型运行实例任务查询接口 aclmdlRIGetTasks Co-authored-by: Eternal-z<jialuze@huawei.com> # message auto-generated for no-merge-commit merge: !4739 merge feat/aclmdl-ri-get-tasks into master feat: 新增模型运行实例任务查询接口 aclmdlRIGetTasks Created-by: Eternal-z Commit-by: Eternal-z Merged-by: cann-robot Description: ## 描述 新增 aclmdlRIGetTasks(aclmdlRI modelRI, aclmdlRITask* tasks, uint32_t* numTasks) 接口,直接获取指定模型运行实例关联的全部 Stream 中登记的任务句柄,无需调用方逐个 Stream 查询。 接口支持两次调用: 1. 第一次将 tasks 传入空指针,通过 numTasks 获取任务总数。 2. 第二次传入已分配的任务句柄数组,并通过 numTasks 指定数组容量,获取任务句柄及实际写入数量。 返回顺序遵循模型关联 Stream 的遍历顺序及各 Stream 的任务列表顺序。数组容量不足时返回可容纳的任务前缀、已写入数量及空间不足错误;容量大于实际任务数时,将多余数组元素置为空指针。两次调用独立查询当前任务列表,若期间任务数量增加,调用方可重新查询数量并扩容。 新接口不增加模型类型判断,不按任务类型或禁用标记过滤已登记任务;返回任务句柄而非任务名称,不递归查询其他模型运行实例。保留 aclmdlRIGetTasksByStream 原接口及其行为。 See merge request: cann/runtime!4739 | 2 天前 | |
【refactor】: 重命名文件名称,提升 arch5162 可扩展性 Co-authored-by: qq_64748107<2592856994@qq.com> # message auto-generated for no-merge-commit merge: !4624 merge fix/rename-tiny-stub-arch5162 into master 【refactor】: 重命名文件名称,提升 arch5162 可扩展性 Created-by: qq_64748107 Commit-by: qq_64748107 Merged-by: cann-robot Description: # Pull Request ## 描述 将 xxx_tiny_stub.cc 统一重命名为 xxx_stub.cc,移除文件名中的 tiny 前缀,使 stub 文件不再绑定特定芯片型号,方便后续其他芯片复用。 ## 改动内容 - 重命名 32 个源文件:xxx_tiny_stub.cc → xxx_stub.cc - 同步更新 4 个 CMake 文件中的路径引用: - arch5162.cmake:22 处 - tiny.cmake:32 处 - tests/ut/runtime/runtime/CMakeLists.txt:35 处 - tests/ut/runtime/runtime/test/platform/arch5162/CMakeLists.txt:23 处 - 重命名测试文件:rt_utest_tiny_stub.cc → rt_utest_stub.cc ## 改动原因 当前 stub 文件名带有 tiny 前缀,绑定特定芯片型号。后续新增其他芯片需要复用这些 stub 时,文件名带 tiny 不合理。重命名为通用名称后,任何芯片都可以直接引用。 ## 验证 - 编译通过(bash build.sh) - ACL callback UT:8/8 通过 - TinyStub UT:63/63 通过 ## 变更类型 请选择本次引入的变更类型: <!-- [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/runtime!4624 | 29 天前 | |
feat: 新增模型运行实例任务查询接口 aclmdlRIGetTasks Co-authored-by: Eternal-z<jialuze@huawei.com> # message auto-generated for no-merge-commit merge: !4739 merge feat/aclmdl-ri-get-tasks into master feat: 新增模型运行实例任务查询接口 aclmdlRIGetTasks Created-by: Eternal-z Commit-by: Eternal-z Merged-by: cann-robot Description: ## 描述 新增 aclmdlRIGetTasks(aclmdlRI modelRI, aclmdlRITask* tasks, uint32_t* numTasks) 接口,直接获取指定模型运行实例关联的全部 Stream 中登记的任务句柄,无需调用方逐个 Stream 查询。 接口支持两次调用: 1. 第一次将 tasks 传入空指针,通过 numTasks 获取任务总数。 2. 第二次传入已分配的任务句柄数组,并通过 numTasks 指定数组容量,获取任务句柄及实际写入数量。 返回顺序遵循模型关联 Stream 的遍历顺序及各 Stream 的任务列表顺序。数组容量不足时返回可容纳的任务前缀、已写入数量及空间不足错误;容量大于实际任务数时,将多余数组元素置为空指针。两次调用独立查询当前任务列表,若期间任务数量增加,调用方可重新查询数量并扩容。 新接口不增加模型类型判断,不按任务类型或禁用标记过滤已登记任务;返回任务句柄而非任务名称,不递归查询其他模型运行实例。保留 aclmdlRIGetTasksByStream 原接口及其行为。 See merge request: cann/runtime!4739 | 2 天前 | |
feat: 新增模型运行实例任务查询接口 aclmdlRIGetTasks Co-authored-by: Eternal-z<jialuze@huawei.com> # message auto-generated for no-merge-commit merge: !4739 merge feat/aclmdl-ri-get-tasks into master feat: 新增模型运行实例任务查询接口 aclmdlRIGetTasks Created-by: Eternal-z Commit-by: Eternal-z Merged-by: cann-robot Description: ## 描述 新增 aclmdlRIGetTasks(aclmdlRI modelRI, aclmdlRITask* tasks, uint32_t* numTasks) 接口,直接获取指定模型运行实例关联的全部 Stream 中登记的任务句柄,无需调用方逐个 Stream 查询。 接口支持两次调用: 1. 第一次将 tasks 传入空指针,通过 numTasks 获取任务总数。 2. 第二次传入已分配的任务句柄数组,并通过 numTasks 指定数组容量,获取任务句柄及实际写入数量。 返回顺序遵循模型关联 Stream 的遍历顺序及各 Stream 的任务列表顺序。数组容量不足时返回可容纳的任务前缀、已写入数量及空间不足错误;容量大于实际任务数时,将多余数组元素置为空指针。两次调用独立查询当前任务列表,若期间任务数量增加,调用方可重新查询数量并扩容。 新接口不增加模型类型判断,不按任务类型或禁用标记过滤已登记任务;返回任务句柄而非任务名称,不递归查询其他模型运行实例。保留 aclmdlRIGetTasksByStream 原接口及其行为。 See merge request: cann/runtime!4739 | 2 天前 | |
refactor: 统一 Runtime ConstructSqe 契约、buffer 与注册表 (#829) Co-authored-by: xiangyang0909<huxiangyang1@huawei.com> # message auto-generated for no-merge-commit merge: !4273 merge feature/construct-sqe-contract-unification into master refactor: 统一 Runtime ConstructSqe 契约、buffer 与注册表 (#829) Created-by: xiangyang0909 Commit-by: xiangyang0909 Merged-by: cann-robot Description: ## 描述 本 PR 统一 Runtime Host 侧的 SQE 构造入口和注册机制。传统 rtStarsSqe_t 与 STARS V2(代码历史上使用 David 命名)的具体硬件格式继续由各平台函数填写;两者都服务于 STARS 调度体系,不是两种调度器。 关联 issue #829 ## 主要修改 - 将 PfnTaskToSqe 和 ToConstructSqe 统一为 TaskInfo*、void*、const TaskSqeInfo&,所有实现族使用同一张 g_taskFuncArrays 注册表。 - 删除独立 David 构造表和 stars_david.cc。David 具体构造函数在自身末尾直接调用 UpdateDavidSqeHeadUpdate;4 类没有独立构造内容的任务注册 ConstructDavidSqeUpdateHeadOnly,不引入模板 wrapper。 - 用 TaskSqeBuffer 表达五个 64B SQE 单元的通用容量。它保持原字节数组的 1B 自然对齐,不新增 8B 对齐要求。 - 明确 sqeNum 生命周期:公共初始化和 SaveTaskInfo 精确保留原值,包括 0;发送前也允许任务特定值。发送或 persistent rebuild 边界重新计算并保存本次实际 SQE 数,之后稳定使用到回收。 - 将 SQE 数量与预期 task report 数分开。SetExpectedTaskReportNum 在 ToConstructSqe 返回后调用:v100 使用 N,v200/v201 仅 MULTIPLE_TASK 使用 N,其他任务保持既有 1。 - 将跨任务的 David 公共能力收敛到平台 adapter;common task 文件只保留确实属于 common task 的逻辑。 - SetTaskTag 保留 collect 关闭和无有效 tag 两个快速返回,删除编译器属性和额外辅助函数;有效 tag 的读取、写入和清理顺序不变。 - 保留各平台 SQE 格式、Driver/TS 字节协议、公开 Runtime API/ABI 和原有调度器选择逻辑。 ## 冻结版本 - BASE:dec8cb91d0b48b731c3fabcd6bba0e40c01c5bf7 - HEAD:c68d45dbbb3104b3ceb6f24d33319ddadf5db1b9 - 关系:HEAD^ == BASE,单提交 - 规模:167 个文件,+2687/-1269 - 合并检查:本地 merge-tree 无冲突,GitCode v5 mergeable=true ## 本地验证 - 14 个相关 Runtime、模型、平台和 UT 构建目标成功。 - runtime_utest_engine:118/118。 - runtime_utest_task_david:639/639。 - runtime_utest_task_910B:721/721。 - runtime_utest_task_v201:79/79。 - runtime_utest_arch9202:3/3。 - runtime_utest_arch5162:BASE 1391/1391、HEAD 1395/1395;初次缺符号是 LD_LIBRARY_PATH 误加载系统 msdebug 旧桩库,前置各自构建桩库后全量通过。 - 生命周期直接测试:4/4;David 构造后真实发送直接测试:3/3。 - Arch9201 的 Arch9201StreamInfoExTest.* 在 BASE/HEAD 均为 0/3,失败断言一致,已定位为主干既有 MockCPP 十参数回调截获问题,不计为本 PR 新增回归,也不把该测试组写成通过。 - pre-commit、OAT、CRLF 兼容的 diff --check 均通过。 ## 在线 CI 最终 GitCode Action 403a946e46984a3c9ff41dd3d5060827 已通过:PreBuild、Compile、UT、UT_report、PreSmoke 和后处理全部完成,64 个 Job 成功、2 个可选 Job 忽略、0 失败,PR 已恢复 ci-pipeline-passed。 两次中间失败均已保留并归因:Action 83ed94e... 暴露新增 DC 测试夹具的池大小为 0,已只修测试并由 rts_common 通过确认;Action b0f12839... 唯一失败为 msprof 既有并发清理用例,PR 对该目标源码/CMake 输入零修改,BASE/HEAD 各重复 1000 次通过,最终 CI 也通过。 ## 性能边界 性能目标为“不劣化”。静态分析确认 void* 转换本身不生成指令,主要风险是第三参数对象物化和数量元数据维护;统一入口同时删除了一次重复 GetSendSqeNum。历史真机数据只用于改进测量方法,不能外推到本次冻结版本。 ## 核对清单 - [x] 构造入口和注册表统一,平台格式差异保留。 - [x] sqeNum 初始化、发送快照和回收生命周期有直接测试。 - [x] v100 N/N、David 普通多 SQE N/1 与 MULTIPLE_TASK N/N 语义有直接测试。 - [x] David 直接收尾方案保持不变。 - [x] 当前提交已 rebase 为最新冻结主干的单提交。 See merge request: cann/runtime!4273 | 8 天前 | |
fix: 清理 ConstructSqe 归一化相关静态告警 Co-authored-by: xiangyang0909<huxiangyang1@huawei.com> # message auto-generated for no-merge-commit merge: !5321 merge fix/pr4273-static-warning-cleanup into master fix: 清理 ConstructSqe 归一化相关静态告警 Created-by: xiangyang0909 Commit-by: xiangyang0909 Merged-by: cann-robot Description: ## 修改说明 - 针对 PR #4273 合入后因代码行号变化重新扫描出的静态告警,按 Issue #33 的逐条分析及后续 review 结论处理低风险项。 - 最终保留 27 条原始告警的修改,去重后落在 18 个代码点、15 个文件;主要为 const/constexpr、声明定义一致性和局部变量作用域调整。 - 原 132 条告警中其余 105 条保持不改。其中: - W001:撤回 stream_task_v200_base.cc 的三元表达式提取,保留原日志表达式。 - W006:Driver 已确认 dieId、funcId、jettyId 不会超过 SQE 位宽约束,本 PR 未修改 stream_jetty_handler.cc。 - W028:撤回 aix_starsv2.cc 的清理表达式调整,保留原有错误清理实现。 - W014、W024、W045、W056、W059:撤回 C 风格数组改为 std::array 的修改,保留原有数组实现。 - 额外复核的 10 条 Rule M11-0-1(5 条唯一告警重复两次)不在原 132 条统计中。相关 Stream protected 成员均被派生实现直接访问,改为 private 需要新增受控接口并改造 David/Coprocessor/DQS 路径,本 PR 不修改。 - 不改变 Runtime 公共 API、数据结构布局、SQE 语义和资源所有权。 原始告警逐条分析见:https://gitcode.com/xiangyang0909/myPrivateCode/issues/33 ## 验证 - 基于 upstream/master@99aee514d,六个 UT 目标编译通过:runtime_utest、runtime_utest_task_910B、runtime_utest_task_david、runtime_utest_arch9201、runtime_utest_task_v201、runtime_utest_tiny_stub。 - Runtime:1303/1303 passed。 - 910B:731/731 passed。 - David:639/639 passed。 - v201:83/83 passed(4 disabled)。 - tiny-stub:69/69 passed。 - Arch9201 关联用例 StarsV2ErrorCodeMapCoversAllTaskTypesAndDriverCode:1/1 passed。 - pre-commit:clang-format、OAT Compliance Check 均通过;完整 PR 范围检查通过。 ## 已知基线问题 Arch9201 全量中的 AclGraphSqCqPreAllocationPassesSimtInfoExWithoutStream 已在 upstream/master@ccc1c08b6 上通过撤掉本 PR 全部修改并重新编译的方式确认同样失败,断言均为 hasInfoEx=false,因此不是本 PR 引入。当前基线 99aee514d 仅新增 api_impl.cc/api_impl_vmm.cc 清理,未触及该用例路径。 See merge request: cann/runtime!5321 | 2 天前 | |
【PR】: 内存相关接口ErrMsg整改 Co-authored-by: guo-yanjun<guoyanjun3@huawei.com> # message auto-generated for no-merge-commit merge: !5171 merge err_msg_0903 into master 【PR】: 内存相关接口ErrMsg整改 Created-by: guo-yanjun Commit-by: guo-yanjun Merged-by: cann-robot Description: # Pull Request ## 描述 对内存相关接口进行 ErrMsg 质量加固: - 完善内存申请、内存复制、D32 Memset、Symbol 和 UVM 接口的参数校验及枚举值打印。 - 优化内存分配重试的错误上报边界,避免首次可恢复失败残留或重复上报 ErrMsg。 - 统一错误信息中的接口名、参数名、实际值和期望值,并补充相关回归 UT。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 UT/HLT验证 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!5171 | 8 天前 | |
feat: 新增模型运行实例任务查询接口 aclmdlRIGetTasks Co-authored-by: Eternal-z<jialuze@huawei.com> # message auto-generated for no-merge-commit merge: !4739 merge feat/aclmdl-ri-get-tasks into master feat: 新增模型运行实例任务查询接口 aclmdlRIGetTasks Created-by: Eternal-z Commit-by: Eternal-z Merged-by: cann-robot Description: ## 描述 新增 aclmdlRIGetTasks(aclmdlRI modelRI, aclmdlRITask* tasks, uint32_t* numTasks) 接口,直接获取指定模型运行实例关联的全部 Stream 中登记的任务句柄,无需调用方逐个 Stream 查询。 接口支持两次调用: 1. 第一次将 tasks 传入空指针,通过 numTasks 获取任务总数。 2. 第二次传入已分配的任务句柄数组,并通过 numTasks 指定数组容量,获取任务句柄及实际写入数量。 返回顺序遵循模型关联 Stream 的遍历顺序及各 Stream 的任务列表顺序。数组容量不足时返回可容纳的任务前缀、已写入数量及空间不足错误;容量大于实际任务数时,将多余数组元素置为空指针。两次调用独立查询当前任务列表,若期间任务数量增加,调用方可重新查询数量并扩容。 新接口不增加模型类型判断,不按任务类型或禁用标记过滤已登记任务;返回任务句柄而非任务名称,不递归查询其他模型运行实例。保留 aclmdlRIGetTasksByStream 原接口及其行为。 See merge request: cann/runtime!4739 | 2 天前 | |
feat: 新增模型运行实例任务查询接口 aclmdlRIGetTasks Co-authored-by: Eternal-z<jialuze@huawei.com> # message auto-generated for no-merge-commit merge: !4739 merge feat/aclmdl-ri-get-tasks into master feat: 新增模型运行实例任务查询接口 aclmdlRIGetTasks Created-by: Eternal-z Commit-by: Eternal-z Merged-by: cann-robot Description: ## 描述 新增 aclmdlRIGetTasks(aclmdlRI modelRI, aclmdlRITask* tasks, uint32_t* numTasks) 接口,直接获取指定模型运行实例关联的全部 Stream 中登记的任务句柄,无需调用方逐个 Stream 查询。 接口支持两次调用: 1. 第一次将 tasks 传入空指针,通过 numTasks 获取任务总数。 2. 第二次传入已分配的任务句柄数组,并通过 numTasks 指定数组容量,获取任务句柄及实际写入数量。 返回顺序遵循模型关联 Stream 的遍历顺序及各 Stream 的任务列表顺序。数组容量不足时返回可容纳的任务前缀、已写入数量及空间不足错误;容量大于实际任务数时,将多余数组元素置为空指针。两次调用独立查询当前任务列表,若期间任务数量增加,调用方可重新查询数量并扩容。 新接口不增加模型类型判断,不按任务类型或禁用标记过滤已登记任务;返回任务句柄而非任务名称,不递归查询其他模型运行实例。保留 aclmdlRIGetTasksByStream 原接口及其行为。 See merge request: cann/runtime!4739 | 2 天前 | |
[feat] Arch5162 support datadump and AICPU op timeout Co-authored-by: FengHaozhan<fenghaozhan@huawei.com> # message auto-generated for no-merge-commit merge: !5320 merge runtime-arch5162-datadump-and-aicpu-timeout into master [feat] Arch5162 support datadump and AICPU op timeout Created-by: FengHaozhan Commit-by: FengHaozhan Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 为 Arch5162 增加 RuntimeThread AICPU DataDump 和算子执行超时支持: 1. **DataDump 能力** - 扩展 RuntimeThread AICPU 插件接口,增加 worker 启动和 Dump 信息加载入口。 - 新增 DataDump TLV 解析、模型/任务索引管理、统计信息和 Tensor 文件写出实现。 - 将 Arch5162 DatadumpInfoLoad 路由到 RuntimeThread AICPU 插件,并在 AICore SQE 中透传 DataDump 标志。 2. **AICPU 执行超时** - 将 Arch5162 SetOpExecuteTimeOutV2 的实际超时值同步给 RuntimeThread AICPU 插件。 - 记录任务执行起始时间,通过 Stars 监控任务周期检查超时,并通过 Runtime hook 记录流错误。 - 支持禁用超时、同一执行仅上报一次以及流销毁时清理执行状态。 3. **接口与构建适配** - 扩展并校验 RuntimeThreadAicpuPluginApi 回调表,补充 DataDump/超时状态码与请求结构。 - 调整 CPU 通用实现文件命名及各产品 CMake 引用,保持 Arch5162 专有逻辑在产品实现边界内。 4. **测试补充** - 新增 DataDump 端到端、TLV 解析、索引管理、统计/Tensor 文件输出和异常路径 UT。 - 扩展 RuntimeThread AICPU 插件、Stars 监控注册、超时边界、流错误及 Arch5162 路由 UT。 本PR有两个前置PR,分别对应datadump功能和AICPU算子超时监控功能,本PR是两个PR合并,用于合入,原有代码变更和检视意见可以参见两个前置PR https://gitcode.com/cann/runtime/pull/5290 https://gitcode.com/cann/runtime/pull/5289 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue #1033 ## 如何测试 建议验证以下场景: 1. **编译构建**:执行 Runtime 全量构建,确认 Arch5162、非 Arch5162、cmodel、tiny 和 v200 产品的源文件选择及链接正常。 2. **AICPU Scheduler UT**:运行 runtime_thread_aicpu_utest,覆盖 DataDump TLV 解析/加载/卸载、统计与 Tensor 文件写出、Dump 回调路由和超时监控。 3. **Runtime Arch5162 UT**:运行 runtime_utest_arch5162,覆盖插件回调表校验、DataDump 路由、SQE Dump 标志、Stars 监控注册/注销、超时配置和流错误处理。 4. **上板验证**:在 Arch5162 环境验证实际 DataDump 文件内容、超时阈值边界、超时错误上报以及正常任务无误报。 当前验证状态:PR 最新提交已触发 CI,结果待确认;本次自动完善描述未额外执行本地构建、UT 或上板验证,不将新增测试代码等同于已执行通过。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档(本次变更未修改文档) - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - 变更规模:33 个文件,新增 4194 行,删除 128 行。 - 当前 PR head:582919b6bf1de17472618a5d74409395b8bf6acb。 - DataDump 文件内容和 Driver/设备侧超时行为仍需在 Arch5162 环境完成集成验证。 See merge request: cann/runtime!5320 | 3 天前 | |
[feat] Arch5162 support datadump and AICPU op timeout Co-authored-by: FengHaozhan<fenghaozhan@huawei.com> # message auto-generated for no-merge-commit merge: !5320 merge runtime-arch5162-datadump-and-aicpu-timeout into master [feat] Arch5162 support datadump and AICPU op timeout Created-by: FengHaozhan Commit-by: FengHaozhan Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 为 Arch5162 增加 RuntimeThread AICPU DataDump 和算子执行超时支持: 1. **DataDump 能力** - 扩展 RuntimeThread AICPU 插件接口,增加 worker 启动和 Dump 信息加载入口。 - 新增 DataDump TLV 解析、模型/任务索引管理、统计信息和 Tensor 文件写出实现。 - 将 Arch5162 DatadumpInfoLoad 路由到 RuntimeThread AICPU 插件,并在 AICore SQE 中透传 DataDump 标志。 2. **AICPU 执行超时** - 将 Arch5162 SetOpExecuteTimeOutV2 的实际超时值同步给 RuntimeThread AICPU 插件。 - 记录任务执行起始时间,通过 Stars 监控任务周期检查超时,并通过 Runtime hook 记录流错误。 - 支持禁用超时、同一执行仅上报一次以及流销毁时清理执行状态。 3. **接口与构建适配** - 扩展并校验 RuntimeThreadAicpuPluginApi 回调表,补充 DataDump/超时状态码与请求结构。 - 调整 CPU 通用实现文件命名及各产品 CMake 引用,保持 Arch5162 专有逻辑在产品实现边界内。 4. **测试补充** - 新增 DataDump 端到端、TLV 解析、索引管理、统计/Tensor 文件输出和异常路径 UT。 - 扩展 RuntimeThread AICPU 插件、Stars 监控注册、超时边界、流错误及 Arch5162 路由 UT。 本PR有两个前置PR,分别对应datadump功能和AICPU算子超时监控功能,本PR是两个PR合并,用于合入,原有代码变更和检视意见可以参见两个前置PR https://gitcode.com/cann/runtime/pull/5290 https://gitcode.com/cann/runtime/pull/5289 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue #1033 ## 如何测试 建议验证以下场景: 1. **编译构建**:执行 Runtime 全量构建,确认 Arch5162、非 Arch5162、cmodel、tiny 和 v200 产品的源文件选择及链接正常。 2. **AICPU Scheduler UT**:运行 runtime_thread_aicpu_utest,覆盖 DataDump TLV 解析/加载/卸载、统计与 Tensor 文件写出、Dump 回调路由和超时监控。 3. **Runtime Arch5162 UT**:运行 runtime_utest_arch5162,覆盖插件回调表校验、DataDump 路由、SQE Dump 标志、Stars 监控注册/注销、超时配置和流错误处理。 4. **上板验证**:在 Arch5162 环境验证实际 DataDump 文件内容、超时阈值边界、超时错误上报以及正常任务无误报。 当前验证状态:PR 最新提交已触发 CI,结果待确认;本次自动完善描述未额外执行本地构建、UT 或上板验证,不将新增测试代码等同于已执行通过。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档(本次变更未修改文档) - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - 变更规模:33 个文件,新增 4194 行,删除 128 行。 - 当前 PR head:582919b6bf1de17472618a5d74409395b8bf6acb。 - DataDump 文件内容和 Driver/设备侧超时行为仍需在 Arch5162 环境完成集成验证。 See merge request: cann/runtime!5320 | 3 天前 | |
refactor: decouple Runtime from ApiImplMbuf Co-authored-by: zhangpengpeng8<zhangpengpeng8@hisilicon.com> # message auto-generated for no-merge-commit merge: !4265 merge refactor/api-mbuf-runtime-decouple into master refactor: decouple Runtime from ApiImplMbuf Created-by: zhangpengpeng8 Commit-by: zhangpengpeng8 Merged-by: cann-robot Description: # Pull Request ## 描述 在最新 master 基线上,结合 PR4254 已验证的实现方式,解除 Runtime 生命周期对具体 ApiImplMbuf 类型的直接依赖: - api_impl_creator.hpp 仅前置声明 ApiMbuf,不再包含 api_mbuf.hpp,并提供统一的创建/销毁接口声明。 - 将 CreateImplMbufAndGet()、DestroyImplMbuf()、能力探针及 ApiImplMbuf 分配日志收敛到 src/runtime/api/impl/api_impl_mbuf.cc。 - runtime.cc 通过工厂创建和销毁 Mbuf 实现,不再包含 api_impl_mbuf.hpp,也不再使用 sizeof(ApiImplMbuf)。 - v100/v200 的 runtime_adapt.cc 均通过 DestroyImplMbuf() 完成销毁,不再依赖具体 Mbuf 实现头文件。 - IsImplMbufSupported() 当前仍返回 true,所有平台继续编译并创建完整 Mbuf 实现,本 PR 不改变现有功能和路由行为。 - ApiMbuf::Instance() 继续保留在 API 侧 api.cc,不改变单例符号归属。 - 补充创建成功、分配失败和初始化失败传播 UT,覆盖新增生命周期路径。 - 删除无生产调用的 NpuDriver::GetIpcNotifyPeerPhyDevId 声明和实现,同时删除仅直接验证该冗余入口的 910B UT。 本 PR 是 arch5162 隔离 Mbuf 组件的第 2 步:只建立 Runtime 与可选 Mbuf 实现之间的工厂边界,不在本步骤关闭任何平台能力。该变更不依赖 Mbuf driver 源文件拆分,可以独立合入和独立回退。 ## 变更类型 - [ ] Bug 修复 - [ ] 新功能 - [ ] 代码风格更新(格式化,局部变量) - [x] 重构(既不修复错误也不增加功能的代码变动) - [ ] 构建过程或辅助工具的变动 - [ ] 文档内容更新 ## 关联的Issue 无。 ## 如何测试 当前补丁集:7b7b869c3e13977f6eb1b2e74f3e061f38055956,已合入 master@e17790bf85dc2d2275784975c9cd2bbaf60702b3。 1. 普通构建:runtime、runtime_v200、runtime_utest、runtime_utest_api_910B、runtime_utest_task_910B、runtime_utest_xpu_910B 编译通过。 2. arch5162 构建:runtime、runtime_utest_arch5162 编译通过;该 target 仍编译 Mbuf API、实现和 driver,符合本步骤边界。 3. RuntimeTest.*:74/74 通过。 4. 910B CloudV2IpcApiTest.*:删除冗余入口 UT 后,剩余 22/22 通过。 5. arch5162 全量 UT:104/104 通过。 6. 普通 libruntime.so、libruntime_v200.so 和 arch5162 libruntime.so 执行 ldd -r,无未解析符号。 7. 构建依赖确认 runtime.cc、v100/v200 runtime_adapt.cc 均不再依赖 api_impl_mbuf.hpp。 8. 当前 PR 差异执行 clang-format 与 OAT pre-commit 检查,均通过。 9. 最终补丁集线上编译/UT 流水线 66e0f329f3ad4a5dbbe9b2b37fd74d58:27/27 成功,其中 UT_Test_rts_common、UT_Test_camodel_check、UT_Test_rts_report 均通过。 10. 最终补丁集线上静态检查流水线 2a217099f0cb4caba9a77e047e690ca6:11/11 成功。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - 基线刷新:已合入 master@e17790bf8,当前 PR 无冲突。 - 合入顺序:建议在步骤 1(PR4264,已合入)之后合入;代码上不依赖 PR4264。 - 回退方式:单独回退本 PR,即可恢复 Runtime 直接管理 ApiImplMbuf 生命周期的原逻辑,不影响 driver 文件拆分。 - 后续步骤:arch5162 专属实现将把能力探针改为 false,并从其 target 中移除 Mbuf API、实现和 driver 源文件。 See merge request: cann/runtime!4265 | 1 个月前 | |
refactor: ApiVmm 隔离拆分改造 Co-authored-by: kongrong<kongrong@hisilicon.com> # message auto-generated for no-merge-commit merge: !5022 merge refactor/api-vmm-combined into master refactor: ApiVmm 隔离拆分改造 Created-by: carol696 Commit-by: kongrong Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 将 #4824、#4825、#4826 合并为一个基于最新 cann/runtime:master 的聚合 PR,用于 ApiVmm 类的隔离和拆分验证。 具体变更: - 新增 ApiVmm / ApiImplVmm 抽象与实现、创建器和 Runtime 生命周期接入。 - 将 VMM 相关 C API 从 api_c.cc / api_c_memory.cc 拆到 api_c_vmm.cc 并切换到 ApiVmm 路由。 - ApiImplVmm 直接调用 Runtime 公共能力:CheckDeviceIdIsValid、FillRuntimeMemMngExtInfo;ParseMallocCfg 作为 ApiImplVmm 私有方法保留。 - 不再引入 api_impl_common.hpp、api_profile_utils.hpp 及相关临时 helper。 - arch5162 使用 api_impl_vmm_stub.cc,VMM 接口保持公开符号并返回 not support。 行为等价说明: - 支持产品继续编译并创建真实 ApiImplVmm,C API 签名、参数检查、错误码转换、ErrMsg 上报和 profiling begin/end 逻辑保持原语义。 - ApiProfileDecorator::GetReportProfApiData() 收敛到 Runtime::GetRuntimeReportProfApiData(),内存扩展信息填充统一走 Runtime::FillRuntimeMemMngExtInfo()。 - 原代码注释保留在迁移后的对应位置,例如 VMM handle/deviceId 处理和 ParseMallocCfg 重复属性处理说明。 David 差异化分析: - 本 PR 未修改 api_impl_david.cc、David 专用 API 实现或 David 专用 UT。 - 仅触达通用 v200.cmake 和 runtime_v200/runtime_adapt.cc:前者把通用 api_impl_vmm.cc 纳入 v200/v201 common source,后者补充 Runtime 生命周期中的 apiVmm_ 清空和 DestroyImplVmm。 - 未对 David 专有链路做拆分或裁剪,David 相关能力保持现状。 不包含: - 不继续拆分涉及 David 专有实现的接口。 - 不扩展到 VMM 之外的其他内存管理接口批次。 - 不包含文档文件变更。 ## 涉及 rt/rts 接口 本次 ApiVmm 隔离拆分涉及以下 Runtime VMM C 接口路由调整: - 地址管理:rtReserveMemAddress、rtReleaseMemAddress、rtsMemReserveAddress、rtsMemFreeAddress - 物理内存:rtMallocPhysical、rtFreePhysical、rtsMemMallocPhysical、rtsMemFreePhysical - 映射/访问控制:rtMapMem、rtUnmapMem、rtsMemMap、rtsMemUnmap、rtMemMapNoAccess、rtMemSetAccess、rtMemGetAccess - Shareable Handle:rtMemExportToShareableHandle、rtsMemExportToShareableHandle、rtMemImportFromShareableHandle、rtsMemImportFromShareableHandle、rtMemSetPidToShareableHandle、rtsMemSetPidToShareableHandle - Shareable Handle V2:rtMemExportToShareableHandleV2、rtMemImportFromShareableHandleV2、rtMemSetPidToShareableHandleV2 - VMM 查询/句柄:rtMemGetAllocationGranularity、rtsMemGetAllocationGranularity、rtMemRetainAllocationHandle、rtMemGetAllocationPropertiesFromHandle、rtMemGetAddressRange - 映射链路选择:rtMemMapSelectedLink、rtMemMapSetLink See merge request: cann/runtime!5022 | 9 天前 | |
【feat】: 添加SOMA复用功能 Co-authored-by: PXTang<tangpeixin1@huawei.com> # message auto-generated for no-merge-commit merge: !3223 merge soma_reuse into master 【feat】: 添加SOMA复用功能 Created-by: PXTang Commit-by: PXTang 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/runtime!3223 | 2 天前 | |
fix: 将字符串拼接方式改为符合ErrMsg标准的RtFmtMsg Co-authored-by: wangzhensheng<wangzhensheng4@huawei.com> # message auto-generated for no-merge-commit merge: !5262 merge master into master fix: 将字符串拼接方式改为符合ErrMsg标准的RtFmtMsg Created-by: wangzhensheng Commit-by: wangzhensheng Merged-by: cann-robot Description: # Pull Request ## 描述 为符合 ErrMsg 标准,统一 ApiImplDeviceTopology 中错误信息的构造方式,将字符串拼接改为 RtFmtMsg 格式化输出。它只影响错误信息生成方式,不改变功能逻辑、错误码或接口行为。 ## 变更类型 请选择本次引入的变更类型: <!-- [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/runtime!5262 | 8 天前 | |
refactor: 扩展 ApiDeviceTopology 框架 Co-authored-by: wangzhensheng<wangzhensheng4@huawei.com> # message auto-generated for no-merge-commit merge: !4996 merge refactor/api-device-topology-framework-expand-1 into master refactor: 扩展 ApiDeviceTopology 框架 Created-by: wangzhensheng Commit-by: wangzhensheng Merged-by: cann-robot Description: # Pull Request ## 描述 扩展 ApiDeviceTopology/ApiImplDeviceTopology 框架,将设备枚举、设备 ID 映射、UUID/PCI 信息及原子操作能力查询纳入设备拓扑模块。本次仍属于框架准备阶段,尚未切换对应的 C API 调用入口。 **主要变更** ApiDeviceTopology 新增 10 个纯虚接口,ApiImplDeviceTopology 补齐对应实现: - 设备枚举:GetDeviceCount - 物理 ID 与设备索引转换: GetDevicePhyIdByIndex、GetDeviceIndexByPhyId - 用户 ID 与逻辑 ID 转换: GetLogicDevIdByUserDevId、GetUserDevIdByLogicDevId - 设备标识查询: GetDeviceUuid、GetDevicePCIBusId、GetDeviceByPCIBusId - 原子操作能力查询: GetHostAtomicCapabilities、GetP2PAtomicCapabilities ## 变更类型 请选择本次引入的变更类型: <!-- [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/runtime!4996 | 14 天前 | |
refactor: 新增 ApiDeviceTopology 框架 Co-authored-by: wangzhensheng<wangzhensheng4@huawei.com> # message auto-generated for no-merge-commit merge: !4874 merge refactor/api-device-topology-framework into master refactor: 新增 ApiDeviceTopology 框架 Created-by: wangzhensheng Commit-by: wangzhensheng Merged-by: cann-robot Description: # Pull Request ## 描述 新增独立的 ApiDeviceTopology 框架,将设备 P2P 和设备拓扑查询能力从通用 ApiImpl 的职责中抽离,为后续调用入口迁移做准备。 当前PR仅新增了新框架、实现及 Runtime 生命周期接入,并未切换新框架;原有接口语义、逻辑、调用链仍维持原状。 **主要变更** 1. 新增 ApiDeviceTopology 抽象接口,包含 6 个方法: - EnableP2P - DisableP2P - DeviceCanAccessPeer - GetP2PStatus - GetPairDevicesInfo - GetPairPhyDevicesInfo 2. 新增标准平台实现 ApiImplDeviceTopology: - EnableP2P、DisableP2P:将目标用户设备 ID 转换为驱动设备 ID,校验目标设备和源物理设备 ID,然后调用 NpuDriver。 - DeviceCanAccessPeer:校验设备 ID、输出指针、芯片 P2P 特性和运行模式;离线模式或芯片不支持 P2P 时返回 RT_ERROR_FEATURE_NOT_SUPPORT。 - GetP2PStatus:校验设备 ID、输出指针和当前 Context,再通过驱动查询 P2P 状态。 - GetPairDevicesInfo:查询两个逻辑设备的拓扑信息,两个设备 ID 都会转换为驱动设备 ID。 - GetPairPhyDevicesInfo:直接按物理设备 ID 查询,不进行逻辑设备 ID 转换。 3. 增加平台 Stub 实现: api_impl_device_topology_stub.cc 只提供框架所需符号: - IsImplDeviceTopologySupported() 返回 false - CreateImplDeviceTopologyAndGet() 返回 nullptr - DestroyImplDeviceTopology() 仅清空指针 4. 接入 Runtime 生命周期: - 新增 ApiDeviceTopology::Instance()。 - RuntimeIntf 增加 ApiDeviceTopology_() 虚接口。 - Runtime 增加 apiDeviceTopology_ 和 apiImplDeviceTopology_。 - Runtime::InitApiImplies() 按平台能力创建实现对象。 - 初始化成功后,将实现挂载到 apiDeviceTopology_。 - 初始化失败以及 v100/v200 Runtime 析构时释放实现对象。 **平台构建策略** - 完整实现:标准 v100、v200/v201、CModel。 - Stub 实现:tiny、arch5162。 ## 变更类型 请选择本次引入的变更类型: <!-- [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/runtime!4874 | 16 天前 | |
fix: clean code & align rtEschedAckEvent parameter naming Co-authored-by: kongrong<kongrong@hisilicon.com> # message auto-generated for no-merge-commit merge: !5068 merge fix/esched-ack-event-param-format into master fix: clean code & align rtEschedAckEvent parameter naming Created-by: carol696 Commit-by: kongrong Merged-by: cann-robot Description: # Pull Request ## 描述 对齐 rtEschedAckEvent 在 Runtime API 调用链中的参数命名,使实现、接口类、驱动封装和相关 UT 使用与 rt_external_mem.h 声明一致的 subEvtId 命名。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无 ## 如何测试 描述测试此变更的步骤和前提条件: 1. git -c core.whitespace=blank-at-eol,blank-at-eof,space-before-tab,cr-at-eol diff --check 2. build/tests/ut/runtime/runtime/runtime_utest_api --gtest_filter='ApiEschedRouteTest.RoutesAllApisToApiEsched:ApiEschedRouteTest.MapsSpecialErrors' 3. build/tests/ut/runtime/runtime/test/platform/arch5162/runtime_utest_arch5162 --gtest_filter='*.rtEschedAckEvent:ApiEschedStubTest.*' 4. bash tests/build_ut.sh --ut=runtime --target=runtime_utest_api 测试结果: - diff whitespace 检查通过 - ApiEschedRouteTest 相关过滤用例通过 - arch5162 esched stub 相关过滤用例通过 - runtime_utest_api 构建成功;整套 UT 后续在 runtime_utest_api_910B 的 stream/event 相关用例附近出现 139 段错误,非本次 esched 过滤用例失败 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 无 See merge request: cann/runtime!5068 | 12 天前 | |
fix: clean code & align rtEschedAckEvent parameter naming Co-authored-by: kongrong<kongrong@hisilicon.com> # message auto-generated for no-merge-commit merge: !5068 merge fix/esched-ack-event-param-format into master fix: clean code & align rtEschedAckEvent parameter naming Created-by: carol696 Commit-by: kongrong Merged-by: cann-robot Description: # Pull Request ## 描述 对齐 rtEschedAckEvent 在 Runtime API 调用链中的参数命名,使实现、接口类、驱动封装和相关 UT 使用与 rt_external_mem.h 声明一致的 subEvtId 命名。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无 ## 如何测试 描述测试此变更的步骤和前提条件: 1. git -c core.whitespace=blank-at-eol,blank-at-eof,space-before-tab,cr-at-eol diff --check 2. build/tests/ut/runtime/runtime/runtime_utest_api --gtest_filter='ApiEschedRouteTest.RoutesAllApisToApiEsched:ApiEschedRouteTest.MapsSpecialErrors' 3. build/tests/ut/runtime/runtime/test/platform/arch5162/runtime_utest_arch5162 --gtest_filter='*.rtEschedAckEvent:ApiEschedStubTest.*' 4. bash tests/build_ut.sh --ut=runtime --target=runtime_utest_api 测试结果: - diff whitespace 检查通过 - ApiEschedRouteTest 相关过滤用例通过 - arch5162 esched stub 相关过滤用例通过 - runtime_utest_api 构建成功;整套 UT 后续在 runtime_utest_api_910B 的 stream/event 相关用例附近出现 139 段错误,非本次 esched 过滤用例失败 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 无 See merge request: cann/runtime!5068 | 12 天前 | |
refactor: 隔离 arch5162 ApiEsched 组件 Co-authored-by: kongrong<kongrong@hisilicon.com> # message auto-generated for no-merge-commit merge: !4540 merge refactor/arch5162-api-esched-isolation into master refactor: 隔离 arch5162 ApiEsched 组件 Created-by: carol696 Commit-by: kongrong Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 是 Esched API 大类拆分的清理与 arch5162 产品隔离阶段。 本批接口: - rtEschedSubmitEventSync - rtEschedSubmitEvent - rtEschedSubscribeEvent - rtEschedWaitEvent - rtEschedAckEvent - rtEschedAttachDevice - rtEschedDettachDevice - rtEschedCreateGrp - rtEschedCreateGrpEx 具体变更: - 删除主 Api、ApiImpl、decorator 和 error decorator 中的旧 Esched 成员链路。 - 在 arch5162 源文件列表中移除正式 api_c_esched.cc、api_impl_esched.cc 和 npu_driver_esched.cc。 - 新增 arch5162/tiny 可链接的 Esched not-support 桩和 runtime API stub catalog 元数据。 - 新增 arch5162 Esched not-support UT,并清理旧主链 UT 覆盖点。 行为等价说明: - 支持产品继续走 ApiEsched 正式实现。 - arch5162 对公开 rtEsched* ABI 保持导出,但统一返回不支持语义。 本 PR 不包含: - 其他 Runtime API 大类裁剪。 - 支持产品的 Esched 行为调整。 剩余工作:前序框架和路由 PR 合入后,基于最新 master 刷新本阶段并重新跑完整验证。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无 ## 如何测试 描述测试此变更的步骤和前提条件: 1. git -c core.whitespace=blank-at-eol,blank-at-eof,space-before-tab,cr-at-eol diff --check refactor/api-esched-route..refactor/arch5162-api-esched-isolation,通过。 2. rg -n "apiDecorator_->Esched|ApiDecorator::Esched|ApiImpl::Esched|&ApiImpl::Esched|api\\.Esched|apiDec\\.Esched|impl_->Esched|virtual rtError_t Esched" src/runtime/api/api.hpp src/runtime/api/impl tests/ut/runtime/runtime/test -g '*.*',无旧链残留。 3. rg -n "api_c_esched|npu_driver_esched|api_impl_esched" src/runtime/cmake/arch5162.cmake tests/ut/runtime/runtime/test/platform/arch5162/CMakeLists.txt,仅保留 stub 源文件引用。 4. bash tests/build_ut.sh --ut=runtime --target=runtime_ut_common,构建和 UT 通过。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 依赖框架和路由 PR 先合入;前序 PR 合入后需基于最新 master 刷新本 PR,确保最终 diff 只包含清理与 arch5162 隔离。 See merge request: cann/runtime!4540 | 1 个月前 | |
style: 统一 Event 接口声明与实现参数命名 Co-authored-by: zhangpengpeng8<zhangpengpeng8@hisilicon.com> # message auto-generated for no-merge-commit merge: !4507 merge master into master style: 统一 Event 接口声明与实现参数命名 Created-by: zhangpengpeng8 Commit-by: zhangpengpeng8 Merged-by: cann-robot Description: # Pull Request ## 描述 Event 接口声明和 ApiImplEvent 各产品实现中部分形参仍使用缩写或通用返回值名称,与 Runtime C API 层表达的参数语义不一致。本 PR 统一抽象接口、override 声明以及 common、tiny、stub 实现中的参数命名: - EventElapsedTime:retTime、startEvt、endEvt 分别调整为 timeInterval、startEvent、endEvent。 - EventGetTimeStamp:retTime 调整为 timeStamp。 - IpcGetEventHandle:evt 调整为 event。 实现函数体中的变量引用和 IPC Event 错误详情字段同步使用新名称。本次不改变函数返回类型、参数类型、参数顺序、const 限定、控制流程或返回行为,因此不影响 ABI 和运行逻辑。 ## 影响范围 - src/runtime/api/api_event.hpp - src/runtime/api/impl/api_impl_event.hpp - src/runtime/api/impl/api_impl_event.cc - src/runtime/api/impl/api_impl_event_common.cc - src/runtime/api/impl/api_impl_event_tiny_stub.cc - src/runtime/api/impl/api_impl_stub.cc ## 变更类型 - [ ] Bug 修复 - [ ] 新功能 - [x] 代码风格更新(命名一致性) - [ ] 重构(既不修复错误也不增加功能的代码变动) - [ ] 构建过程或辅助工具的变动 - [ ] 文档内容更新 ## 关联的 Issue 无。 ## 如何测试 1. 对 PR 最终 patchset 执行 pre-commit 检查。 2. clang-format:通过。 3. OAT Compliance Check:通过。 4. 构建 runtime_utest_tiny_stub:通过,覆盖 tiny 和通用 stub 实现。 5. 运行 runtime_utest_tiny_stub:61/61 通过。 6. 构建 runtimeut_src_static_lib:通过,覆盖标准 api_impl_event.cc 和 api_impl_event_common.cc 实现。 7. 线上 /compile:当前 head 的主编译流水线 27/27 通过,静态检查流水线 11/11 通过。 ## 核对清单 - [x] 我的代码遵循项目代码风格。 - [x] 已完成变更范围的静态检查。 - [x] 本次无需更新用户文档。 - [x] 标题使用了合适的类型标签。 - [x] 已阅读并遵守贡献指南。 ## 其他信息 当前 PR head 为 f1e0f8a0fb010c43aefd3797c95677f22664712f。 See merge request: cann/runtime!4507 | 1 个月前 | |
style: 统一 Event 接口声明与实现参数命名 Co-authored-by: zhangpengpeng8<zhangpengpeng8@hisilicon.com> # message auto-generated for no-merge-commit merge: !4507 merge master into master style: 统一 Event 接口声明与实现参数命名 Created-by: zhangpengpeng8 Commit-by: zhangpengpeng8 Merged-by: cann-robot Description: # Pull Request ## 描述 Event 接口声明和 ApiImplEvent 各产品实现中部分形参仍使用缩写或通用返回值名称,与 Runtime C API 层表达的参数语义不一致。本 PR 统一抽象接口、override 声明以及 common、tiny、stub 实现中的参数命名: - EventElapsedTime:retTime、startEvt、endEvt 分别调整为 timeInterval、startEvent、endEvent。 - EventGetTimeStamp:retTime 调整为 timeStamp。 - IpcGetEventHandle:evt 调整为 event。 实现函数体中的变量引用和 IPC Event 错误详情字段同步使用新名称。本次不改变函数返回类型、参数类型、参数顺序、const 限定、控制流程或返回行为,因此不影响 ABI 和运行逻辑。 ## 影响范围 - src/runtime/api/api_event.hpp - src/runtime/api/impl/api_impl_event.hpp - src/runtime/api/impl/api_impl_event.cc - src/runtime/api/impl/api_impl_event_common.cc - src/runtime/api/impl/api_impl_event_tiny_stub.cc - src/runtime/api/impl/api_impl_stub.cc ## 变更类型 - [ ] Bug 修复 - [ ] 新功能 - [x] 代码风格更新(命名一致性) - [ ] 重构(既不修复错误也不增加功能的代码变动) - [ ] 构建过程或辅助工具的变动 - [ ] 文档内容更新 ## 关联的 Issue 无。 ## 如何测试 1. 对 PR 最终 patchset 执行 pre-commit 检查。 2. clang-format:通过。 3. OAT Compliance Check:通过。 4. 构建 runtime_utest_tiny_stub:通过,覆盖 tiny 和通用 stub 实现。 5. 运行 runtime_utest_tiny_stub:61/61 通过。 6. 构建 runtimeut_src_static_lib:通过,覆盖标准 api_impl_event.cc 和 api_impl_event_common.cc 实现。 7. 线上 /compile:当前 head 的主编译流水线 27/27 通过,静态检查流水线 11/11 通过。 ## 核对清单 - [x] 我的代码遵循项目代码风格。 - [x] 已完成变更范围的静态检查。 - [x] 本次无需更新用户文档。 - [x] 标题使用了合适的类型标签。 - [x] 已阅读并遵守贡献指南。 ## 其他信息 当前 PR head 为 f1e0f8a0fb010c43aefd3797c95677f22664712f。 See merge request: cann/runtime!4507 | 1 个月前 | |
【PR】【fix】fix typos and grammatical errors in log messages 3rd round Co-authored-by: Hou_jialin<houjialin3@huawei.com> # message auto-generated for no-merge-commit merge: !4703 merge br_fix_rts_log_3rd into master 【PR】【fix】fix typos and grammatical errors in log messages 3rd round Created-by: Hou_jialin Commit-by: Hou_jialin Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 整改 Runtime 日志易用性问题,主要包括: - 补充参数当前值、合法范围、期望枚举值及必要的度量单位。 - 修正错误对象、操作名称、返回值字段和格式参数。 - 优化描述不完整、容易误解或包含失败敏感词的日志文案。 - 结合实际返回行为,将少量需要关注的 INFO 日志调整为 WARN/WARNING。 - 保留辅助诊断、降级处理等场景的 INFO 级别,避免重复提升为 ERROR。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> 无。 ## 如何测试 NA ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!4703 | 23 天前 | |
【refactor】: 重命名文件名称,提升 arch5162 可扩展性 Co-authored-by: qq_64748107<2592856994@qq.com> # message auto-generated for no-merge-commit merge: !4624 merge fix/rename-tiny-stub-arch5162 into master 【refactor】: 重命名文件名称,提升 arch5162 可扩展性 Created-by: qq_64748107 Commit-by: qq_64748107 Merged-by: cann-robot Description: # Pull Request ## 描述 将 xxx_tiny_stub.cc 统一重命名为 xxx_stub.cc,移除文件名中的 tiny 前缀,使 stub 文件不再绑定特定芯片型号,方便后续其他芯片复用。 ## 改动内容 - 重命名 32 个源文件:xxx_tiny_stub.cc → xxx_stub.cc - 同步更新 4 个 CMake 文件中的路径引用: - arch5162.cmake:22 处 - tiny.cmake:32 处 - tests/ut/runtime/runtime/CMakeLists.txt:35 处 - tests/ut/runtime/runtime/test/platform/arch5162/CMakeLists.txt:23 处 - 重命名测试文件:rt_utest_tiny_stub.cc → rt_utest_stub.cc ## 改动原因 当前 stub 文件名带有 tiny 前缀,绑定特定芯片型号。后续新增其他芯片需要复用这些 stub 时,文件名带 tiny 不合理。重命名为通用名称后,任何芯片都可以直接引用。 ## 验证 - 编译通过(bash build.sh) - ACL callback UT:8/8 通过 - TinyStub UT:63/63 通过 ## 变更类型 请选择本次引入的变更类型: <!-- [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/runtime!4624 | 29 天前 | |
refactor: 拆分并隔离 ApiHostMemory Co-authored-by: kongrong<kongrong@hisilicon.com> # message auto-generated for no-merge-commit merge: !4987 merge refactor/api-host-memory-combined into master refactor: 拆分并隔离 ApiHostMemory Created-by: carol696 Commit-by: kongrong Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 基于 #4491、#4560、#4663 的内存管理拆分分析,将原 #4813、#4814、#4815 合并为单个 ApiHostMemory 隔离拆分 PR。 本批接口: - rtsMallocHost - rtMallocHost - rtsFreeHost - rtFreeHost - rtFreeHostWithDevSync - rtsHostRegister - rtHostMemMapCapabilities - rtHostRegisterV2 - rtHostGetDevicePointer - rtsHostUnregister - rtMallocHostSharedMemory - rtFreeHostSharedMemory - rtHostGetDevicePointerAddrRange 具体变更: - 合并原三阶段 PR #4813、#4814、#4815 为单 PR:框架新增、C API 路由切换、arch5162/tiny 隔离一次性提交。 - 新增 ApiHostMemory 抽象入口、ApiImplHostMemory 正式实现和 api_c_host_memory.cc C API 入口。 - 将 HostMemory 相关 C API 从主 Api 调用链切换到 ApiHostMemory::Instance()。 - 删除主 Api、ApiImpl、ApiDecorator、ApiErrorDecorator、profile/profile-log decorator 中的旧 HostMemory 转发。 - tiny 编译正式 ApiImplHostMemory 并创建 HostMemory 实现对象;api_c_host_memory.cc 在 tiny stub 目标中作为 weak provider 编译,rtHostGetDevicePointerAddrRange 继续由 generated strong stub 覆盖,保持 tiny 对外 C API 打桩语义。 - ApiImplHostMemory::HostGetDevicePointerAddrRange 真实实现迁移到 api_impl_host_memory.cc;tiny 实现层随正式 ApiImplHostMemory 拥有真实实现,公开 C API 仍由 tiny generated strong stub 保持 feature-not-support;arch5162 继续不创建 HostMemory 实现。 - arch5162 继续使用 api_impl_host_memory_stub.cc,IsImplHostMemorySupported() 返回 false,Runtime 初始化时不挂载 HostMemory 实现。 - 保留原 HostMalloc 配置、UVA、HostRegister、addr range 等注释,并将 ErrMsg/ErrorMessage 上报边界迁移到 HostMemory 专属实现。 - 按检视意见收敛 api_impl_host_memory.cc:删除本地 CheckDeviceIdIsValid、GetReportProfApiData、FillHostMemMngExtInfo 重复实现,改为直接调用 Runtime 公共方法;HostFreeImpl 直接通过当前 driver 调用 PtrGetAttributes;HostMalloc/HostFree 去掉 ProfileLogRecord 层级,保留 Runtime CallApiBegin/End 与 extInfo 填充路径;删除 HostMemory 本地 CurrentContext 包装函数和 DEFAULT_HOST_MEMORY_DEVICE_ID,调用处显式展开为 Runtime::Instance()->CurrentContext(true, DEFAULT_DEVICE_ID)。 - 将 HostGetDevicePointerAddrRange 真实实现从 api_impl_standard_soc.cc 迁移到 api_impl_host_memory.cc,并删除 api_impl_stub.cc 中该成员的 feature-not-support 打桩。 - 同步普通、v200、cmodel、tiny、arch5162、910B 和 UT 的源文件列表。 - 按评审意见补齐 HostMalloc、HostMallocWithCfg 和 HostFree 的 Runtime CallApiBegin/End 覆盖范围,参数、cfg、Context 和 driver 失败路径均保持 begin/end 配对;不额外增加 ApiHostMemory::Instance() thread-local env flags 复位。 行为等价说明: - 支持产品继续编译并使用正式 ApiImplHostMemory。 - tiny 侧 ApiHostMemory 对象创建能力与修改前保持一致;公开 C API 中 rtHostGetDevicePointerAddrRange 继续命中 tiny unsupported generated stub,返回 feature-not-support;实现层直接调用 ApiHostMemory::HostGetDevicePointerAddrRange 时走 api_impl_host_memory.cc 真实实现,count == nullptr 返回 RT_ERROR_INVALID_VALUE。 - arch5162 不编译正式 HostMemory 实现,公开 runtime/ACL HostMemory API 继续由平台 stub 保持 feature-not-support 语义。 - 支持产品中 HostGetDevicePointerAddrRange 补回拆分前 ApiErrorDecorator 的 count 空指针校验,返回码与错误文案 Obtaining the device address range 保持一致。 - rtsMallocHost、rtHostMemMapCapabilities、rtHostGetDevicePointer、rtsHostUnregister、rtHostGetDevicePointerAddrRange 的 feature-not-support 返回码转换保持原 C API 语义。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无 ## 如何测试 描述测试此变更的步骤和前提条件: 1. cmake --build build --target runtime_utest_api_910B -j16:通过。 2. cmake --build build --target runtime_utest_task_910B -j16:通过。 3. cmake --build build --target runtime_utest_tiny_stub -j16:通过。 4. cmake --build build --target runtime_utest_arch5162 -j16:通过。 5. cmake --build build --target runtime_utest_api -j16:通过。 6. build/tests/ut/runtime/runtime/test/platform/910B/runtime_utest_api_910B --gtest_filter=ProfilerTest.HostMallocWithCfgInvalidParamKeepsProfileBeginEndPaired:ProfilerTest.HostMallocInvalidParamKeepsProfileBeginEndPaired:ProfilerTest.HostFreeInvalidParamKeepsProfileBeginEndPaired:通过。 7. build/tests/ut/runtime/runtime/test/platform/910B/runtime_utest_task_910B --gtest_filter=CloudV2IpcApiTest.HostGetDevicePointerAddrRange:通过。 8. build/tests/ut/runtime/runtime/runtime_utest_tiny_stub --gtest_filter=TinyStubTest.api_impl_stub:TinyStubTest.api_c_stub:通过。 9. build/tests/ut/runtime/runtime/test/platform/arch5162/runtime_utest_arch5162 --gtest_filter=Arch5162MemTest.UnsupportedHostMemoryApiImpls_ReturnNotSupport:通过。 10. git -c core.whitespace=blank-at-eol,blank-at-eof,space-before-tab,cr-at-eol diff --check upstream/master...HEAD:通过。 11. git commit --amend --no-edit:提交钩子 clang-format 与 OAT Compliance Check 通过。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 David 差异化分析:ApiImplDavid 未发现 HostMemory override 或 David 专属 HostMemory 实现,本 PR 不拆 David 专属 HostFunc/HostAtomic/Simt 逻辑;本轮仅将 950 David UT 中 HostMemory forwarding 用例切到新的 ApiHostMemory 边界,David 产品实现继续复用通用 HostMemory 实现。 CMake 行尾处理:本轮未修改 CMake;前序 HostMemory/tiny weak-provider 源文件列表调整保持不变,未为了 diff check 改动无关行尾。 See merge request: cann/runtime!4987 | 10 天前 | |
fix: 告警清理-修复内存 API 头文件自包含 Co-authored-by: kongrong<kongrong@hisilicon.com> # message auto-generated for no-merge-commit merge: !5329 merge fix/header-self-contained into master fix: 告警清理-修复内存 API 头文件自包含 Created-by: carol696 Commit-by: kongrong Merged-by: cann-robot Description: # Pull Request ## 描述 修复内存相关 API 头文件的自包含问题: - api_host_memory.hpp 显式包含 <cstdint>,并将内部内存头文件路径调整为 runtime/rt_inner_mem.h,避免依赖额外的 src/inc/runtime include 路径。 - api_impl_host_memory.hpp 显式包含 <cstdint>,补齐接口声明中使用的标准整数类型依赖。 - api_impl_vmm.hpp 显式包含 <cstddef> 和 <cstdint>,补齐 size_t、uint*_t 等声明依赖。 api_vmm.hpp 已具备直接依赖,本次通过单头解析验证其自包含性,无需额外改动。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无。 ## 如何测试 描述测试此变更的步骤和前提条件: 1. 使用 /usr/bin/c++ -std=c++17 -fsyntax-only -x c++ -include <header> /dev/null 分别验证 api_impl_vmm.hpp、api_impl_host_memory.hpp、api_vmm.hpp、api_host_memory.hpp 单头解析:通过。 2. git diff --check:通过。 3. cmake --build build --target runtime_utest_api -j8:通过。 4. 提交 hook clang-format 与 OAT Compliance Check:通过。 5. PR 创建后评论 /compile 触发编译流水线。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 无。 See merge request: cann/runtime!5329 | 2 天前 | |
refactor: 拆分并隔离 ApiHostMemory Co-authored-by: kongrong<kongrong@hisilicon.com> # message auto-generated for no-merge-commit merge: !4987 merge refactor/api-host-memory-combined into master refactor: 拆分并隔离 ApiHostMemory Created-by: carol696 Commit-by: kongrong Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 基于 #4491、#4560、#4663 的内存管理拆分分析,将原 #4813、#4814、#4815 合并为单个 ApiHostMemory 隔离拆分 PR。 本批接口: - rtsMallocHost - rtMallocHost - rtsFreeHost - rtFreeHost - rtFreeHostWithDevSync - rtsHostRegister - rtHostMemMapCapabilities - rtHostRegisterV2 - rtHostGetDevicePointer - rtsHostUnregister - rtMallocHostSharedMemory - rtFreeHostSharedMemory - rtHostGetDevicePointerAddrRange 具体变更: - 合并原三阶段 PR #4813、#4814、#4815 为单 PR:框架新增、C API 路由切换、arch5162/tiny 隔离一次性提交。 - 新增 ApiHostMemory 抽象入口、ApiImplHostMemory 正式实现和 api_c_host_memory.cc C API 入口。 - 将 HostMemory 相关 C API 从主 Api 调用链切换到 ApiHostMemory::Instance()。 - 删除主 Api、ApiImpl、ApiDecorator、ApiErrorDecorator、profile/profile-log decorator 中的旧 HostMemory 转发。 - tiny 编译正式 ApiImplHostMemory 并创建 HostMemory 实现对象;api_c_host_memory.cc 在 tiny stub 目标中作为 weak provider 编译,rtHostGetDevicePointerAddrRange 继续由 generated strong stub 覆盖,保持 tiny 对外 C API 打桩语义。 - ApiImplHostMemory::HostGetDevicePointerAddrRange 真实实现迁移到 api_impl_host_memory.cc;tiny 实现层随正式 ApiImplHostMemory 拥有真实实现,公开 C API 仍由 tiny generated strong stub 保持 feature-not-support;arch5162 继续不创建 HostMemory 实现。 - arch5162 继续使用 api_impl_host_memory_stub.cc,IsImplHostMemorySupported() 返回 false,Runtime 初始化时不挂载 HostMemory 实现。 - 保留原 HostMalloc 配置、UVA、HostRegister、addr range 等注释,并将 ErrMsg/ErrorMessage 上报边界迁移到 HostMemory 专属实现。 - 按检视意见收敛 api_impl_host_memory.cc:删除本地 CheckDeviceIdIsValid、GetReportProfApiData、FillHostMemMngExtInfo 重复实现,改为直接调用 Runtime 公共方法;HostFreeImpl 直接通过当前 driver 调用 PtrGetAttributes;HostMalloc/HostFree 去掉 ProfileLogRecord 层级,保留 Runtime CallApiBegin/End 与 extInfo 填充路径;删除 HostMemory 本地 CurrentContext 包装函数和 DEFAULT_HOST_MEMORY_DEVICE_ID,调用处显式展开为 Runtime::Instance()->CurrentContext(true, DEFAULT_DEVICE_ID)。 - 将 HostGetDevicePointerAddrRange 真实实现从 api_impl_standard_soc.cc 迁移到 api_impl_host_memory.cc,并删除 api_impl_stub.cc 中该成员的 feature-not-support 打桩。 - 同步普通、v200、cmodel、tiny、arch5162、910B 和 UT 的源文件列表。 - 按评审意见补齐 HostMalloc、HostMallocWithCfg 和 HostFree 的 Runtime CallApiBegin/End 覆盖范围,参数、cfg、Context 和 driver 失败路径均保持 begin/end 配对;不额外增加 ApiHostMemory::Instance() thread-local env flags 复位。 行为等价说明: - 支持产品继续编译并使用正式 ApiImplHostMemory。 - tiny 侧 ApiHostMemory 对象创建能力与修改前保持一致;公开 C API 中 rtHostGetDevicePointerAddrRange 继续命中 tiny unsupported generated stub,返回 feature-not-support;实现层直接调用 ApiHostMemory::HostGetDevicePointerAddrRange 时走 api_impl_host_memory.cc 真实实现,count == nullptr 返回 RT_ERROR_INVALID_VALUE。 - arch5162 不编译正式 HostMemory 实现,公开 runtime/ACL HostMemory API 继续由平台 stub 保持 feature-not-support 语义。 - 支持产品中 HostGetDevicePointerAddrRange 补回拆分前 ApiErrorDecorator 的 count 空指针校验,返回码与错误文案 Obtaining the device address range 保持一致。 - rtsMallocHost、rtHostMemMapCapabilities、rtHostGetDevicePointer、rtsHostUnregister、rtHostGetDevicePointerAddrRange 的 feature-not-support 返回码转换保持原 C API 语义。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无 ## 如何测试 描述测试此变更的步骤和前提条件: 1. cmake --build build --target runtime_utest_api_910B -j16:通过。 2. cmake --build build --target runtime_utest_task_910B -j16:通过。 3. cmake --build build --target runtime_utest_tiny_stub -j16:通过。 4. cmake --build build --target runtime_utest_arch5162 -j16:通过。 5. cmake --build build --target runtime_utest_api -j16:通过。 6. build/tests/ut/runtime/runtime/test/platform/910B/runtime_utest_api_910B --gtest_filter=ProfilerTest.HostMallocWithCfgInvalidParamKeepsProfileBeginEndPaired:ProfilerTest.HostMallocInvalidParamKeepsProfileBeginEndPaired:ProfilerTest.HostFreeInvalidParamKeepsProfileBeginEndPaired:通过。 7. build/tests/ut/runtime/runtime/test/platform/910B/runtime_utest_task_910B --gtest_filter=CloudV2IpcApiTest.HostGetDevicePointerAddrRange:通过。 8. build/tests/ut/runtime/runtime/runtime_utest_tiny_stub --gtest_filter=TinyStubTest.api_impl_stub:TinyStubTest.api_c_stub:通过。 9. build/tests/ut/runtime/runtime/test/platform/arch5162/runtime_utest_arch5162 --gtest_filter=Arch5162MemTest.UnsupportedHostMemoryApiImpls_ReturnNotSupport:通过。 10. git -c core.whitespace=blank-at-eol,blank-at-eof,space-before-tab,cr-at-eol diff --check upstream/master...HEAD:通过。 11. git commit --amend --no-edit:提交钩子 clang-format 与 OAT Compliance Check 通过。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 David 差异化分析:ApiImplDavid 未发现 HostMemory override 或 David 专属 HostMemory 实现,本 PR 不拆 David 专属 HostFunc/HostAtomic/Simt 逻辑;本轮仅将 950 David UT 中 HostMemory forwarding 用例切到新的 ApiHostMemory 边界,David 产品实现继续复用通用 HostMemory 实现。 CMake 行尾处理:本轮未修改 CMake;前序 HostMemory/tiny weak-provider 源文件列表调整保持不变,未为了 diff check 改动无关行尾。 See merge request: cann/runtime!4987 | 10 天前 | |
style: 清理 IPC 内存代码告警 Co-authored-by: kongrong<kongrong@hisilicon.com> # message auto-generated for no-merge-commit merge: !5147 merge cleancode into master style: 清理 IPC 内存代码告警 Created-by: carol696 Commit-by: kongrong Merged-by: cann-robot Description: # Pull Request ## 描述 清理 IPC Memory 相关代码告警: - 删除 api_impl_ipc_memory.cc 中未使用的 runtime/rts/rts_mem.h 头文件引用。 已按检视要求回退 pkg_inc/driver/ascend_hal_define.h 的修改,当前 PR 不再包含该文件变更。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无。 ## 如何测试 描述测试此变更的步骤和前提条件: 1. git diff --check:通过。 2. 提交 hook clang-format:通过。 3. 提交 hook OAT Compliance Check:通过。 4. PR 覆盖提交后评论 /compile 触发编译流水线。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 最新覆盖提交:f6e44bed8。 See merge request: cann/runtime!5147 | 10 天前 | |
refactor: 合并 ApiIpcMemory 隔离拆分 Co-authored-by: kongrong<kongrong@hisilicon.com> # message auto-generated for no-merge-commit merge: !4972 merge refactor/api-ipc-memory-combined into master refactor: 合并 ApiIpcMemory 隔离拆分 Created-by: carol696 Commit-by: kongrong Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 合并 ApiIpcMemory 隔离拆分三阶段代码改动,基于 #4820、#4821、#4822 聚合为一个可验证分支。 具体变更: - 新增 ApiIpcMemory 抽象入口、ApiImplIpcMemory 实现类和 api_impl_ipc_memory_stub.cc,并接入 Runtime 生命周期、创建失败回滚和析构路径。 - 新增 api_c_ipc_memory.cc,将 key-based IPC Memory C API 入口切换到 ApiIpcMemory::Instance()。 - tiny/arch5162 等不支持目标保留公开 C API 符号,由生成桩返回 ACL_ERROR_RT_FEATURE_NOT_SUPPORT。 - 本次补充 tiny 下 rtSetIpcMemorySuperPodPid 不支持桩和 UT,避免 api_c_ipc_memory.cc 被 tiny 排除后缺失公开符号。 - 保留原有注释、参数校验、ErrMsg/ErrorMessage 转换和 feature-not-support 映射;本次未修改无关 CMake 行尾。 - 复核 profiling_agent.cc 中 IPC Memory 三个接口注册:拆分前 ApiImpl::IpcSetMemoryName / IpcOpenMemory / IpcCloseMemory / IpcCloseMemoryByName 无 CallApiBegin/CallApiEnd 上报链路,本 PR 不应扩大 profiling 行为;已删除新实现中的 IPC Memory profiling 调用和 profiling_agent.cc 新增注册,保持拆分前后一致。 - 恢复 api_impl_ipc_memory.cc 中 IpcSetMemoryName / IpcOpenMemory / IpcCloseMemory / IpcCloseMemoryByName / IpcDestroyMemoryName / SetIpcMemPid 的 context 获取为 CurrentContext(true, DEFAULT_DEVICE_ID),保持拆分前 ApiImpl::CurrentContext() 的默认设备隐式 SetDevice 语义;新增“无当前 context + 已配置默认设备”回归用例。 本批拆分 Runtime C API 共 11 个: - rtIpcSetMemoryName - rtIpcDestroyMemoryName - rtIpcOpenMemory - rtIpcCloseMemory - rtSetIpcMemPid - rtSetIpcMemorySuperPodPid - rtIpcMemImportPidInterServer - rtsIpcMemGetExportKey - rtsIpcMemClose - rtsIpcMemImportByKey - rtsIpcMemSetImportPid David 差异化说明: - rtIpcSetMemoryAttr / ApiImpl::IpcSetMemoryAttr 涉及 ApiImplDavid::IpcSetMemoryAttr、CheckIpcMapRoute 和 IPC 属性同步差异逻辑,继续保留在原主 Api + David 重载链路中,本 PR 不拆。 - rtSetIpcMemorySuperPodPid 当前不属于 David 差异接口,已纳入 ApiIpcMemory 路由;tiny 下同样按不支持能力补齐生成桩。 本 PR 不包含: - 不拆分 rtIpcSetMemoryAttr。 - 不扩大到其他 Memory 子模块接口。 - 不做无关格式化或行尾调整。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无。 ## 如何测试 描述测试此变更的步骤和前提条件: 1. cmake --build build --target runtime_utest_api -j16:通过。 2. ./build/tests/ut/runtime/runtime/runtime_utest_api --gtest_filter='ApiImplTest.api_impl_ipc_memory_*':3 个用例通过,覆盖新增默认设备隐式 context 回归。 3. ./build/tests/ut/runtime/runtime/runtime_utest_api --gtest_filter='ApiIpcMemoryRouteTest.*:ApiImplTest.api_impl_ipc_memory_*':7 个用例通过。 4. ./build/tests/ut/runtime/runtime/runtime_utest_api --gtest_filter='ProfilerTest.ProfilerCallApiBeginEndDirectReportApiData:ProfilerTest.ProfilerCallApiBeginOffKeepsNestedStackPaired:ProfilerTest.ProfilerCallApiEndWithEmptyStack:ProfilerTest.ProfilerCallApiEndReportsTaskTrack:ProfilerTest.ProfilerCallApiEndStopsWhenTaskTrackReportFails':5 个 profiling 用例通过。 5. cmake --build build --target runtime_utest_api_910B -j16:通过。 6. ./build/tests/ut/runtime/runtime/test/platform/910B/runtime_utest_api_910B --gtest_filter='CloudV2ApiTest.ipc_memory_success:CloudV2ApiTest.rts_ipc_open_with_flag_succ:CloudV2ApiTest2.ipc_open_with_flag_succ:CloudV2ApiTest2.ipc_open_with_flag_error:CloudV2NpuDriverTest.CreateIpcMem_fail:CloudV2NpuDriverTest.SetIpcMemAttr_fail:CloudV2NpuDriverTest.OpenIpcMem_fail:CloudV2NpuDriverTest.CloseIpcMem_fail:CloudV2NpuDriverTest.SetIpcMemPid_fail:RtMemoryApiTest.rtSetIpcMemorySuperPodPid':匹配 9 个 910B IPC Memory 用例通过。 7. 本轮增量 git diff --check 5558ce8ac HEAD:通过;git diff --name-only 5558ce8ac HEAD 仅包含 src/runtime/api/impl/api_impl_ipc_memory.cc 和 tests/ut/runtime/runtime/test/rt_utest_api_impl.cc。 8. 行尾检查:src/runtime/api/impl/api_impl_ipc_memory.cc 和 tests/ut/runtime/runtime/test/rt_utest_api_impl.cc 均为 LF-only。 9. git diff origin/master...HEAD -- src/runtime/core/src/common/profiling_agent.cc:无输出,确认 profiling_agent.cc 对 master 无净差异。 此前 tiny 补充验证: - cmake --build build --target runtime_utest_tiny_stub -j16:通过。 - ./build/tests/ut/runtime/runtime/runtime_utest_tiny_stub --gtest_filter='TinyStubTest.api_c_stub:TinyStubTest.ipc_memory_impl_lifecycle_not_support':2 个用例通过。 - ./build/tests/ut/runtime/runtime/runtime_utest_tiny_stub:65 个用例通过。 - rg -n "rtSetIpcMemorySuperPodPid" build/tests/ut/runtime/runtime/generated/runtime_api_stubs/tiny/api_c_generated_stub.cc:确认 tiny 生成桩包含该符号。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 最新覆盖提交:2198261601a346fb85ee222dea9c1a866ab73d6b。 See merge request: cann/runtime!4972 | 11 天前 | |
refactor: 合并 ApiIpcMemory 隔离拆分 Co-authored-by: kongrong<kongrong@hisilicon.com> # message auto-generated for no-merge-commit merge: !4972 merge refactor/api-ipc-memory-combined into master refactor: 合并 ApiIpcMemory 隔离拆分 Created-by: carol696 Commit-by: kongrong Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 合并 ApiIpcMemory 隔离拆分三阶段代码改动,基于 #4820、#4821、#4822 聚合为一个可验证分支。 具体变更: - 新增 ApiIpcMemory 抽象入口、ApiImplIpcMemory 实现类和 api_impl_ipc_memory_stub.cc,并接入 Runtime 生命周期、创建失败回滚和析构路径。 - 新增 api_c_ipc_memory.cc,将 key-based IPC Memory C API 入口切换到 ApiIpcMemory::Instance()。 - tiny/arch5162 等不支持目标保留公开 C API 符号,由生成桩返回 ACL_ERROR_RT_FEATURE_NOT_SUPPORT。 - 本次补充 tiny 下 rtSetIpcMemorySuperPodPid 不支持桩和 UT,避免 api_c_ipc_memory.cc 被 tiny 排除后缺失公开符号。 - 保留原有注释、参数校验、ErrMsg/ErrorMessage 转换和 feature-not-support 映射;本次未修改无关 CMake 行尾。 - 复核 profiling_agent.cc 中 IPC Memory 三个接口注册:拆分前 ApiImpl::IpcSetMemoryName / IpcOpenMemory / IpcCloseMemory / IpcCloseMemoryByName 无 CallApiBegin/CallApiEnd 上报链路,本 PR 不应扩大 profiling 行为;已删除新实现中的 IPC Memory profiling 调用和 profiling_agent.cc 新增注册,保持拆分前后一致。 - 恢复 api_impl_ipc_memory.cc 中 IpcSetMemoryName / IpcOpenMemory / IpcCloseMemory / IpcCloseMemoryByName / IpcDestroyMemoryName / SetIpcMemPid 的 context 获取为 CurrentContext(true, DEFAULT_DEVICE_ID),保持拆分前 ApiImpl::CurrentContext() 的默认设备隐式 SetDevice 语义;新增“无当前 context + 已配置默认设备”回归用例。 本批拆分 Runtime C API 共 11 个: - rtIpcSetMemoryName - rtIpcDestroyMemoryName - rtIpcOpenMemory - rtIpcCloseMemory - rtSetIpcMemPid - rtSetIpcMemorySuperPodPid - rtIpcMemImportPidInterServer - rtsIpcMemGetExportKey - rtsIpcMemClose - rtsIpcMemImportByKey - rtsIpcMemSetImportPid David 差异化说明: - rtIpcSetMemoryAttr / ApiImpl::IpcSetMemoryAttr 涉及 ApiImplDavid::IpcSetMemoryAttr、CheckIpcMapRoute 和 IPC 属性同步差异逻辑,继续保留在原主 Api + David 重载链路中,本 PR 不拆。 - rtSetIpcMemorySuperPodPid 当前不属于 David 差异接口,已纳入 ApiIpcMemory 路由;tiny 下同样按不支持能力补齐生成桩。 本 PR 不包含: - 不拆分 rtIpcSetMemoryAttr。 - 不扩大到其他 Memory 子模块接口。 - 不做无关格式化或行尾调整。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无。 ## 如何测试 描述测试此变更的步骤和前提条件: 1. cmake --build build --target runtime_utest_api -j16:通过。 2. ./build/tests/ut/runtime/runtime/runtime_utest_api --gtest_filter='ApiImplTest.api_impl_ipc_memory_*':3 个用例通过,覆盖新增默认设备隐式 context 回归。 3. ./build/tests/ut/runtime/runtime/runtime_utest_api --gtest_filter='ApiIpcMemoryRouteTest.*:ApiImplTest.api_impl_ipc_memory_*':7 个用例通过。 4. ./build/tests/ut/runtime/runtime/runtime_utest_api --gtest_filter='ProfilerTest.ProfilerCallApiBeginEndDirectReportApiData:ProfilerTest.ProfilerCallApiBeginOffKeepsNestedStackPaired:ProfilerTest.ProfilerCallApiEndWithEmptyStack:ProfilerTest.ProfilerCallApiEndReportsTaskTrack:ProfilerTest.ProfilerCallApiEndStopsWhenTaskTrackReportFails':5 个 profiling 用例通过。 5. cmake --build build --target runtime_utest_api_910B -j16:通过。 6. ./build/tests/ut/runtime/runtime/test/platform/910B/runtime_utest_api_910B --gtest_filter='CloudV2ApiTest.ipc_memory_success:CloudV2ApiTest.rts_ipc_open_with_flag_succ:CloudV2ApiTest2.ipc_open_with_flag_succ:CloudV2ApiTest2.ipc_open_with_flag_error:CloudV2NpuDriverTest.CreateIpcMem_fail:CloudV2NpuDriverTest.SetIpcMemAttr_fail:CloudV2NpuDriverTest.OpenIpcMem_fail:CloudV2NpuDriverTest.CloseIpcMem_fail:CloudV2NpuDriverTest.SetIpcMemPid_fail:RtMemoryApiTest.rtSetIpcMemorySuperPodPid':匹配 9 个 910B IPC Memory 用例通过。 7. 本轮增量 git diff --check 5558ce8ac HEAD:通过;git diff --name-only 5558ce8ac HEAD 仅包含 src/runtime/api/impl/api_impl_ipc_memory.cc 和 tests/ut/runtime/runtime/test/rt_utest_api_impl.cc。 8. 行尾检查:src/runtime/api/impl/api_impl_ipc_memory.cc 和 tests/ut/runtime/runtime/test/rt_utest_api_impl.cc 均为 LF-only。 9. git diff origin/master...HEAD -- src/runtime/core/src/common/profiling_agent.cc:无输出,确认 profiling_agent.cc 对 master 无净差异。 此前 tiny 补充验证: - cmake --build build --target runtime_utest_tiny_stub -j16:通过。 - ./build/tests/ut/runtime/runtime/runtime_utest_tiny_stub --gtest_filter='TinyStubTest.api_c_stub:TinyStubTest.ipc_memory_impl_lifecycle_not_support':2 个用例通过。 - ./build/tests/ut/runtime/runtime/runtime_utest_tiny_stub:65 个用例通过。 - rg -n "rtSetIpcMemorySuperPodPid" build/tests/ut/runtime/runtime/generated/runtime_api_stubs/tiny/api_c_generated_stub.cc:确认 tiny 生成桩包含该符号。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 最新覆盖提交:2198261601a346fb85ee222dea9c1a866ab73d6b。 See merge request: cann/runtime!4972 | 11 天前 | |
refactor:ApiKernelArgs拆分 Co-authored-by: Rick_Coding<yangsen24@huawei.com> # message auto-generated for no-merge-commit merge: !4775 merge master into master refactor:ApiKernelArgs拆分 Created-by: Rick_Coding Commit-by: Rick_Coding Merged-by: cann-robot Description: # Pull Request ## 描述 本提交对 KernelArgs API 进行独立模块拆分,将其从公共 Api/ApiImpl 及 Decorator 调用链中解耦,形成独立的 ApiKernelArgs/ApiImplKernelArgs 模块。 主要变更如下: 1. 新增 ApiKernelArgs 抽象接口和 ApiImplKernelArgs 实现类,迁移以下 8 个 KernelArgs 接口: - KernelArgsInit - KernelArgsInitByUserMem - KernelArgsGetMemSize - KernelArgsGetHandleMemSize - KernelArgsAppend - KernelArgsAppendPlaceHolder - KernelArgsGetPlaceHolderBuffer - KernelArgsFinalize 2. 将 GetToBeCalSystemParaNum、ProcessOverFlowArgs 两个 KernelArgs 私有辅助函数迁移至 ApiImplKernelArgs。 3. rtsKernelArgs* 对外接口改为通过 ApiKernelArgs::Instance() 获取实现,不再经过公共 Api 调用链。对外 C API 的函数签名、句柄校验和错误码转换逻辑保持不变。 4. 删除 Api、ApiDecorator、ApiErrorDecorator 和 ApiProfileDecorator 中的 KernelArgs 成员函数,原有参数校验、Error Message 上报和 Profiling Begin/End 逻辑下沉至 ApiImplKernelArgs,保持对外可观察行为。 5. 在 Runtime 中增加 ApiKernelArgs 的创建、注册、获取、初始化失败回滚和析构管理,确保独立实现对象生命周期完整。 6. 将原先依赖 ApiImpl 的上下文和 C2C 控制地址查询改为通过 Runtime/Device 公共能力获取,解除 ApiImplKernelArgs 对主 ApiImpl 的依赖。 7. arch5162 继续使用独立 KernelArgs stub 实现,8 个接口统一返回 RT_ERROR_FEATURE_NOT_SUPPORT,保持原有产品行为。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1.已经通过商用芯片RDV测试 2.已经通过tiny冒烟测试 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!4775 | 12 天前 | |
refactor:ApiKernelArgs拆分 Co-authored-by: Rick_Coding<yangsen24@huawei.com> # message auto-generated for no-merge-commit merge: !4775 merge master into master refactor:ApiKernelArgs拆分 Created-by: Rick_Coding Commit-by: Rick_Coding Merged-by: cann-robot Description: # Pull Request ## 描述 本提交对 KernelArgs API 进行独立模块拆分,将其从公共 Api/ApiImpl 及 Decorator 调用链中解耦,形成独立的 ApiKernelArgs/ApiImplKernelArgs 模块。 主要变更如下: 1. 新增 ApiKernelArgs 抽象接口和 ApiImplKernelArgs 实现类,迁移以下 8 个 KernelArgs 接口: - KernelArgsInit - KernelArgsInitByUserMem - KernelArgsGetMemSize - KernelArgsGetHandleMemSize - KernelArgsAppend - KernelArgsAppendPlaceHolder - KernelArgsGetPlaceHolderBuffer - KernelArgsFinalize 2. 将 GetToBeCalSystemParaNum、ProcessOverFlowArgs 两个 KernelArgs 私有辅助函数迁移至 ApiImplKernelArgs。 3. rtsKernelArgs* 对外接口改为通过 ApiKernelArgs::Instance() 获取实现,不再经过公共 Api 调用链。对外 C API 的函数签名、句柄校验和错误码转换逻辑保持不变。 4. 删除 Api、ApiDecorator、ApiErrorDecorator 和 ApiProfileDecorator 中的 KernelArgs 成员函数,原有参数校验、Error Message 上报和 Profiling Begin/End 逻辑下沉至 ApiImplKernelArgs,保持对外可观察行为。 5. 在 Runtime 中增加 ApiKernelArgs 的创建、注册、获取、初始化失败回滚和析构管理,确保独立实现对象生命周期完整。 6. 将原先依赖 ApiImpl 的上下文和 C2C 控制地址查询改为通过 Runtime/Device 公共能力获取,解除 ApiImplKernelArgs 对主 ApiImpl 的依赖。 7. arch5162 继续使用独立 KernelArgs stub 实现,8 个接口统一返回 RT_ERROR_FEATURE_NOT_SUPPORT,保持原有产品行为。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1.已经通过商用芯片RDV测试 2.已经通过tiny冒烟测试 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!4775 | 12 天前 | |
refactor:ApiKernelArgs拆分 Co-authored-by: Rick_Coding<yangsen24@huawei.com> # message auto-generated for no-merge-commit merge: !4775 merge master into master refactor:ApiKernelArgs拆分 Created-by: Rick_Coding Commit-by: Rick_Coding Merged-by: cann-robot Description: # Pull Request ## 描述 本提交对 KernelArgs API 进行独立模块拆分,将其从公共 Api/ApiImpl 及 Decorator 调用链中解耦,形成独立的 ApiKernelArgs/ApiImplKernelArgs 模块。 主要变更如下: 1. 新增 ApiKernelArgs 抽象接口和 ApiImplKernelArgs 实现类,迁移以下 8 个 KernelArgs 接口: - KernelArgsInit - KernelArgsInitByUserMem - KernelArgsGetMemSize - KernelArgsGetHandleMemSize - KernelArgsAppend - KernelArgsAppendPlaceHolder - KernelArgsGetPlaceHolderBuffer - KernelArgsFinalize 2. 将 GetToBeCalSystemParaNum、ProcessOverFlowArgs 两个 KernelArgs 私有辅助函数迁移至 ApiImplKernelArgs。 3. rtsKernelArgs* 对外接口改为通过 ApiKernelArgs::Instance() 获取实现,不再经过公共 Api 调用链。对外 C API 的函数签名、句柄校验和错误码转换逻辑保持不变。 4. 删除 Api、ApiDecorator、ApiErrorDecorator 和 ApiProfileDecorator 中的 KernelArgs 成员函数,原有参数校验、Error Message 上报和 Profiling Begin/End 逻辑下沉至 ApiImplKernelArgs,保持对外可观察行为。 5. 在 Runtime 中增加 ApiKernelArgs 的创建、注册、获取、初始化失败回滚和析构管理,确保独立实现对象生命周期完整。 6. 将原先依赖 ApiImpl 的上下文和 C2C 控制地址查询改为通过 Runtime/Device 公共能力获取,解除 ApiImplKernelArgs 对主 ApiImpl 的依赖。 7. arch5162 继续使用独立 KernelArgs stub 实现,8 个接口统一返回 RT_ERROR_FEATURE_NOT_SUPPORT,保持原有产品行为。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1.已经通过商用芯片RDV测试 2.已经通过tiny冒烟测试 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!4775 | 12 天前 | |
refactor:新增ApiKernelFunc拆分 Co-authored-by: Rick_Coding<yangsen24@huawei.com> # message auto-generated for no-merge-commit merge: !4865 merge master into master refactor:新增ApiKernelFunc拆分 Created-by: Rick_Coding Commit-by: Rick_Coding Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 是“Kernel 加载与执行”模块中 ApiKernelFunc API 大类拆分的框架阶段。 本批拆分 9 个以 Kernel/funcHandle 查询为核心的接口: aclrtGetFunctionAddr -> rtsFuncGetAddr -> ApiKernelFunc::FuncGetAddr aclrtGetFunctionName -> rtsFuncGetName -> ApiKernelFunc::FuncGetName aclrtGetFunctionAttribute -> rtFunctionGetAttribute -> ApiKernelFunc::FunctionGetAttribute aclrtGetFunctionSize -> rtFuncGetSize -> ApiKernelFunc::FuncGetSize aclrtFunctionGetBinary -> rtFunctionGetBinary -> ApiKernelFunc::FunctionGetBinary aclrtFunctionGetParamCount -> rtFunctionGetParamCount -> ApiKernelFunc::FunctionGetParamCount aclrtFunctionGetParamInfo -> rtFunctionGetParamInfo -> ApiKernelFunc::FunctionGetParamInfo aclrtFunctionGetAvailDynUbufPerBlock -> rtFunctionGetAvailDynUbufPerBlock aclrtGetFuncBySymbol -> rtGetFuncBySymbol -> ApiKernelFunc::GetFunctionBySymbol 具体变更: - 新增 ApiKernelFunc 抽象接口和 ApiImplKernelFunc 真实实现。 - 将参数校验、错误码、ErrMsg 和业务实现完整纳入新模块。 - 保留 FuncGetAddr 的 profiling begin/end 行为。 - ApiKernelFunc::Instance(flags) 保留线程环境标志设置和默认清零语义。 - 接入 Runtime 创建、初始化、失败回滚和析构生命周期。 - 在 Runtime 成员列表尾部追加 ApiKernelFunc 对象,降低内部布局影响。 - v100、v200/v201、cmodel 和 910B 接入真实实现。 - tiny 和 arch5162 接入不支持实现。 - 增加直接实现 UT、Runtime 生命周期 UT 和产品 stub UT。 行为等价说明: - 对外 C API 签名、handle 解包和返回码保持不变。 - 参数校验顺序、ErrMsg、Context 获取和产品支持策略保持不变。 - FuncGetAddr 的 profiling 类型及 begin/end 配对保持不变。 - 当前 C API 仍通过主 Api 调用链执行,对外行为尚未切换。 本 PR 不包含: - 不切换现有 C API 到 ApiKernelFunc。 - 不删除主 Api、ApiImpl、decorator 和平台 stub 中的旧接口。 - 不处理 ApiBinary、ApiKernelLaunch 和 ApiDevice 等后续模块。 剩余工作: - 路由阶段:将上述 9 个 C API 切换到 ApiKernelFunc,并验证新旧行为等价。 - 清理阶段:删除主 Api 旧实现、decorator、平台 stub 和旧 UT 残留。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1.已经通过商用芯片RDV测试 2.已经通过tiny冒烟测试 3.已经通过build构建 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!4865 | 13 天前 | |
refactor:新增ApiKernelFunc拆分 Co-authored-by: Rick_Coding<yangsen24@huawei.com> # message auto-generated for no-merge-commit merge: !4865 merge master into master refactor:新增ApiKernelFunc拆分 Created-by: Rick_Coding Commit-by: Rick_Coding Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 是“Kernel 加载与执行”模块中 ApiKernelFunc API 大类拆分的框架阶段。 本批拆分 9 个以 Kernel/funcHandle 查询为核心的接口: aclrtGetFunctionAddr -> rtsFuncGetAddr -> ApiKernelFunc::FuncGetAddr aclrtGetFunctionName -> rtsFuncGetName -> ApiKernelFunc::FuncGetName aclrtGetFunctionAttribute -> rtFunctionGetAttribute -> ApiKernelFunc::FunctionGetAttribute aclrtGetFunctionSize -> rtFuncGetSize -> ApiKernelFunc::FuncGetSize aclrtFunctionGetBinary -> rtFunctionGetBinary -> ApiKernelFunc::FunctionGetBinary aclrtFunctionGetParamCount -> rtFunctionGetParamCount -> ApiKernelFunc::FunctionGetParamCount aclrtFunctionGetParamInfo -> rtFunctionGetParamInfo -> ApiKernelFunc::FunctionGetParamInfo aclrtFunctionGetAvailDynUbufPerBlock -> rtFunctionGetAvailDynUbufPerBlock aclrtGetFuncBySymbol -> rtGetFuncBySymbol -> ApiKernelFunc::GetFunctionBySymbol 具体变更: - 新增 ApiKernelFunc 抽象接口和 ApiImplKernelFunc 真实实现。 - 将参数校验、错误码、ErrMsg 和业务实现完整纳入新模块。 - 保留 FuncGetAddr 的 profiling begin/end 行为。 - ApiKernelFunc::Instance(flags) 保留线程环境标志设置和默认清零语义。 - 接入 Runtime 创建、初始化、失败回滚和析构生命周期。 - 在 Runtime 成员列表尾部追加 ApiKernelFunc 对象,降低内部布局影响。 - v100、v200/v201、cmodel 和 910B 接入真实实现。 - tiny 和 arch5162 接入不支持实现。 - 增加直接实现 UT、Runtime 生命周期 UT 和产品 stub UT。 行为等价说明: - 对外 C API 签名、handle 解包和返回码保持不变。 - 参数校验顺序、ErrMsg、Context 获取和产品支持策略保持不变。 - FuncGetAddr 的 profiling 类型及 begin/end 配对保持不变。 - 当前 C API 仍通过主 Api 调用链执行,对外行为尚未切换。 本 PR 不包含: - 不切换现有 C API 到 ApiKernelFunc。 - 不删除主 Api、ApiImpl、decorator 和平台 stub 中的旧接口。 - 不处理 ApiBinary、ApiKernelLaunch 和 ApiDevice 等后续模块。 剩余工作: - 路由阶段:将上述 9 个 C API 切换到 ApiKernelFunc,并验证新旧行为等价。 - 清理阶段:删除主 Api 旧实现、decorator、平台 stub 和旧 UT 残留。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1.已经通过商用芯片RDV测试 2.已经通过tiny冒烟测试 3.已经通过build构建 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!4865 | 13 天前 | |
refactor:新增ApiKernelFunc拆分 Co-authored-by: Rick_Coding<yangsen24@huawei.com> # message auto-generated for no-merge-commit merge: !4865 merge master into master refactor:新增ApiKernelFunc拆分 Created-by: Rick_Coding Commit-by: Rick_Coding Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 是“Kernel 加载与执行”模块中 ApiKernelFunc API 大类拆分的框架阶段。 本批拆分 9 个以 Kernel/funcHandle 查询为核心的接口: aclrtGetFunctionAddr -> rtsFuncGetAddr -> ApiKernelFunc::FuncGetAddr aclrtGetFunctionName -> rtsFuncGetName -> ApiKernelFunc::FuncGetName aclrtGetFunctionAttribute -> rtFunctionGetAttribute -> ApiKernelFunc::FunctionGetAttribute aclrtGetFunctionSize -> rtFuncGetSize -> ApiKernelFunc::FuncGetSize aclrtFunctionGetBinary -> rtFunctionGetBinary -> ApiKernelFunc::FunctionGetBinary aclrtFunctionGetParamCount -> rtFunctionGetParamCount -> ApiKernelFunc::FunctionGetParamCount aclrtFunctionGetParamInfo -> rtFunctionGetParamInfo -> ApiKernelFunc::FunctionGetParamInfo aclrtFunctionGetAvailDynUbufPerBlock -> rtFunctionGetAvailDynUbufPerBlock aclrtGetFuncBySymbol -> rtGetFuncBySymbol -> ApiKernelFunc::GetFunctionBySymbol 具体变更: - 新增 ApiKernelFunc 抽象接口和 ApiImplKernelFunc 真实实现。 - 将参数校验、错误码、ErrMsg 和业务实现完整纳入新模块。 - 保留 FuncGetAddr 的 profiling begin/end 行为。 - ApiKernelFunc::Instance(flags) 保留线程环境标志设置和默认清零语义。 - 接入 Runtime 创建、初始化、失败回滚和析构生命周期。 - 在 Runtime 成员列表尾部追加 ApiKernelFunc 对象,降低内部布局影响。 - v100、v200/v201、cmodel 和 910B 接入真实实现。 - tiny 和 arch5162 接入不支持实现。 - 增加直接实现 UT、Runtime 生命周期 UT 和产品 stub UT。 行为等价说明: - 对外 C API 签名、handle 解包和返回码保持不变。 - 参数校验顺序、ErrMsg、Context 获取和产品支持策略保持不变。 - FuncGetAddr 的 profiling 类型及 begin/end 配对保持不变。 - 当前 C API 仍通过主 Api 调用链执行,对外行为尚未切换。 本 PR 不包含: - 不切换现有 C API 到 ApiKernelFunc。 - 不删除主 Api、ApiImpl、decorator 和平台 stub 中的旧接口。 - 不处理 ApiBinary、ApiKernelLaunch 和 ApiDevice 等后续模块。 剩余工作: - 路由阶段:将上述 9 个 C API 切换到 ApiKernelFunc,并验证新旧行为等价。 - 清理阶段:删除主 Api 旧实现、decorator、平台 stub 和旧 UT 残留。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1.已经通过商用芯片RDV测试 2.已经通过tiny冒烟测试 3.已经通过build构建 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!4865 | 13 天前 | |
refactor: decouple Runtime from ApiImplMbuf Co-authored-by: zhangpengpeng8<zhangpengpeng8@hisilicon.com> # message auto-generated for no-merge-commit merge: !4265 merge refactor/api-mbuf-runtime-decouple into master refactor: decouple Runtime from ApiImplMbuf Created-by: zhangpengpeng8 Commit-by: zhangpengpeng8 Merged-by: cann-robot Description: # Pull Request ## 描述 在最新 master 基线上,结合 PR4254 已验证的实现方式,解除 Runtime 生命周期对具体 ApiImplMbuf 类型的直接依赖: - api_impl_creator.hpp 仅前置声明 ApiMbuf,不再包含 api_mbuf.hpp,并提供统一的创建/销毁接口声明。 - 将 CreateImplMbufAndGet()、DestroyImplMbuf()、能力探针及 ApiImplMbuf 分配日志收敛到 src/runtime/api/impl/api_impl_mbuf.cc。 - runtime.cc 通过工厂创建和销毁 Mbuf 实现,不再包含 api_impl_mbuf.hpp,也不再使用 sizeof(ApiImplMbuf)。 - v100/v200 的 runtime_adapt.cc 均通过 DestroyImplMbuf() 完成销毁,不再依赖具体 Mbuf 实现头文件。 - IsImplMbufSupported() 当前仍返回 true,所有平台继续编译并创建完整 Mbuf 实现,本 PR 不改变现有功能和路由行为。 - ApiMbuf::Instance() 继续保留在 API 侧 api.cc,不改变单例符号归属。 - 补充创建成功、分配失败和初始化失败传播 UT,覆盖新增生命周期路径。 - 删除无生产调用的 NpuDriver::GetIpcNotifyPeerPhyDevId 声明和实现,同时删除仅直接验证该冗余入口的 910B UT。 本 PR 是 arch5162 隔离 Mbuf 组件的第 2 步:只建立 Runtime 与可选 Mbuf 实现之间的工厂边界,不在本步骤关闭任何平台能力。该变更不依赖 Mbuf driver 源文件拆分,可以独立合入和独立回退。 ## 变更类型 - [ ] Bug 修复 - [ ] 新功能 - [ ] 代码风格更新(格式化,局部变量) - [x] 重构(既不修复错误也不增加功能的代码变动) - [ ] 构建过程或辅助工具的变动 - [ ] 文档内容更新 ## 关联的Issue 无。 ## 如何测试 当前补丁集:7b7b869c3e13977f6eb1b2e74f3e061f38055956,已合入 master@e17790bf85dc2d2275784975c9cd2bbaf60702b3。 1. 普通构建:runtime、runtime_v200、runtime_utest、runtime_utest_api_910B、runtime_utest_task_910B、runtime_utest_xpu_910B 编译通过。 2. arch5162 构建:runtime、runtime_utest_arch5162 编译通过;该 target 仍编译 Mbuf API、实现和 driver,符合本步骤边界。 3. RuntimeTest.*:74/74 通过。 4. 910B CloudV2IpcApiTest.*:删除冗余入口 UT 后,剩余 22/22 通过。 5. arch5162 全量 UT:104/104 通过。 6. 普通 libruntime.so、libruntime_v200.so 和 arch5162 libruntime.so 执行 ldd -r,无未解析符号。 7. 构建依赖确认 runtime.cc、v100/v200 runtime_adapt.cc 均不再依赖 api_impl_mbuf.hpp。 8. 当前 PR 差异执行 clang-format 与 OAT pre-commit 检查,均通过。 9. 最终补丁集线上编译/UT 流水线 66e0f329f3ad4a5dbbe9b2b37fd74d58:27/27 成功,其中 UT_Test_rts_common、UT_Test_camodel_check、UT_Test_rts_report 均通过。 10. 最终补丁集线上静态检查流水线 2a217099f0cb4caba9a77e047e690ca6:11/11 成功。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - 基线刷新:已合入 master@e17790bf8,当前 PR 无冲突。 - 合入顺序:建议在步骤 1(PR4264,已合入)之后合入;代码上不依赖 PR4264。 - 回退方式:单独回退本 PR,即可恢复 Runtime 直接管理 ApiImplMbuf 生命周期的原逻辑,不影响 driver 文件拆分。 - 后续步骤:arch5162 专属实现将把能力探针改为 false,并从其 target 中移除 Mbuf API、实现和 driver 源文件。 See merge request: cann/runtime!4265 | 1 个月前 | |
【PR】: mv core/api_impl->api/impl Co-authored-by: duanpengliang<duanpengliang@huawei.com> # message auto-generated for no-merge-commit merge: !3999 merge master into master 【PR】: mv core/api_impl->api/impl Created-by: duanpengliang Commit-by: duanpengliang Merged-by: cann-robot Description: # Pull Request ## 描述 把core/api_impl移动到api/impl,同时修复根据驱动生成的桩.so缺失符号问题 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [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/runtime!3999 | 1 个月前 | |
refactor: 隔离 arch5162 ApiMbuf 组件 Co-authored-by: zhangpengpeng8<zhangpengpeng8@hisilicon.com> # message auto-generated for no-merge-commit merge: !4254 merge refactor/arch5162-api-mbuf-isolation into master refactor: 隔离 arch5162 ApiMbuf 组件 Created-by: zhangpengpeng8 Commit-by: zhangpengpeng8 Merged-by: cann-robot Description: # Pull Request ## 描述 arch5162 不支持 ApiMbuf 功能。本次仅将 arch5162 构建目标切换到共享轻量桩,避免完整 Mbuf 实现进入对应 Runtime 产物: - 新增 api_c_mbuf_stub.cc,保留 17 个公开 Mbuf C API 符号并统一返回 ACL_ERROR_RT_FEATURE_NOT_SUPPORT。 - 新增 api_impl_mbuf_stub.cc,提供不支持场景的实现生命周期:IsImplMbufSupported() 返回 false、创建返回空、销毁保持空指针。 - arch5162.cmake 以轻量桩替换 api_c_mbuf.cc、api_impl_mbuf.cc,并停止编译 npu_driver_mbuf.cc。 - arch5162 UT 使用 rt_utest_mbuf_stub.cc,覆盖实现生命周期和全部 17 个公开 C API。 - 普通 Runtime 和 tiny 构建配置不变,继续编译完整 ApiMbuf 实现。 本次基于最新 master(476e57ff5)整理为单提交。PR4264 和 PR4265 已在基线中,本 PR 当前只保留 arch5162 平台隔离步骤,可独立回退。 ## 分步骤上库 1. [PR4264](https://gitcode.com/cann/runtime/pull/4264):拆分 NpuDriver Mbuf 源文件,已合入。 2. [PR4265](https://gitcode.com/cann/runtime/pull/4265):解耦 Runtime 与具体 ApiImplMbuf,已合入。 3. [PR4254](https://gitcode.com/cann/runtime/pull/4254):仅对 arch5162 启用 Mbuf 编译隔离、ABI 桩和 UT。 ## 变更类型 - [ ] Bug 修复 - [ ] 新功能 - [ ] 代码风格更新(格式化,局部变量) - [x] 重构(既不修复错误也不增加功能的代码变动) - [x] 构建过程或辅助工具的变动 - [ ] 文档内容更新 ## 关联的 Issue 无。 ## 如何测试 1. runtime_utest_arch5162:106/106 通过,其中共享 Mbuf 桩用例 2/2 通过。 2. PRODUCT=ascend5162a Release 构建 runtime 通过,最终链接启用 -Wl,--no-undefined。 3. arch5162 构建对象仅包含 api_c_mbuf_stub.cc、api_impl_mbuf_stub.cc,不包含 api_c_mbuf.cc、api_impl_mbuf.cc 和 npu_driver_mbuf.cc。 4. arch5162 的 libruntime.so 执行 ldd -r,无未解析符号或缺失依赖。 5. arch5162 的 libruntime.so 保留全部 17 个 Mbuf C API 动态符号。 6. clang-format 与 OAT 提交检查通过。 7. 最终提交 e4a30573b 的线上[编译/UT 流水线](https://www.openlibing.com/apps/pipelineDetail?pipelineId=50ab408233ea4622975e6b0318a0cb06&pipelineRunId=9a825ffe028848718a12fb2176448358&projectName=CANN):27/27 成功;[静态检查流水线](https://www.openlibing.com/apps/pipelineDetail?pipelineId=aeb4b733d2324717a859e5923df342c7&pipelineRunId=6324d119e2754de387bb7bde3480c4df&projectName=CANN):11/11 成功。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守其中关于 commit message 和无效 commit 合并等规定 ## 其他信息 - 本 PR 不修改 tiny.cmake、tiny UT 配置或 docs。 See merge request: cann/runtime!4254 | 1 个月前 | |
【PR】Snapshot 备份/恢复流程重构,内存申请补充备份标记能力 Co-authored-by: weixin_47917346<zhangjunyu23@huawei.com> Co-authored-by: yinhong chen<1329312243@qq.com> # message auto-generated for no-merge-commit merge: !4942 merge master into master 【PR】Snapshot 备份/恢复流程重构,内存申请补充备份标记能力 Created-by: weixin_47917346 Commit-by: weixin_47917346;yinhong chen;zhangjunyu23@huawei.com Merged-by: cann-robot Description: ## 描述 本 PR 重构 Snapshot 备份/恢复流程,新增备份/恢复 flags、版本兼容校验和 Runtime 设备内存备份标签能力。在保持 ACL 对外接口兼容的前提下,当调用方不传 Snapshot args 时继续走原有 Runtime 备份/恢复流程;当调用方传入 args 时,进入新的驱动能力校验与驱动备份/恢复流程。 ### 备份与恢复 1. 贯通 aclrtSnapShotBackupArgs / aclrtSnapShotRestoreArgs 到 Runtime、Decorator、Driver 调用链,并在新流程中支持 backupFlags / restoreFlags 透传。 2. ACL 对外接口保持兼容:aclrtSnapShotProcessBackup / aclrtSnapShotProcessRestore 允许 args 传 nullptr。 - args == nullptr:无兼容性判断概念,直接走原有 Runtime 备份/恢复流程。 - args != nullptr:进入新流程,基于设备是否支持 FEATURE_SVM_PROCESS_DEVICE_MEM_SNAPSHOT 做兼容性判断。 3. RTS 层保留旧无参 rtSnapShotProcessBackup / rtSnapShotProcessRestore 符号和语义,同时新增 rtSnapShotProcessBackupWithArgs / rtSnapShotProcessRestoreWithArgs 承接非空 args,避免破坏旧源码和旧二进制 ABI。 4. ACL 层对非空 args 做参数校验:backupFlags / restoreFlags 仅允许 0U 或 1U,非法值直接返回参数错误,不继续下传 Runtime/Driver。reserved 为冗余保留字段,当前流程不使用。 5. 备份阶段: - args == nullptr:走原有 Runtime 备份流程。 - args != nullptr 且兼容性不通过:直接返回错误,终止备份。 - args != nullptr 且兼容性通过:记录 runtime/driver API 版本,保留 ModelSqTasksBackup / halStreamBackup,跳过 Runtime 侧旧备份逻辑,通过 NpuDriver::ProcessResBackup(args->backupFlags) 交由驱动备份设备内存。 6. 恢复阶段: - args == nullptr:走原有 Runtime 恢复流程。 - args != nullptr 且兼容性不通过:直接返回错误,终止恢复。 - args != nullptr 且兼容性通过:先校验当前恢复版本与备份版本是否一致,版本不一致直接返回错误;版本一致后调用 NpuDriver::ProcessResRestore(args->restoreFlags),并跳过 RestoreModule、OpMemoryRestore、RestoreAiCpuKernelInfo 等旧内存恢复逻辑。 - 新恢复流程仍保留 stream/event/notify 资源重建、参数池刷新、ModelRestore、ACL graph 恢复、自定义 AICPU so reload、AICPU DFX 等必要恢复流程,halStreamRestore 不跳过。 ### 内存备份标签 1. 新增 DevMemAllocWithBackupFlag 接口,在 Runtime 内部申请设备内存时同步传入 Snapshot 备份标签;接口默认使用 SNAPSHOT_REQUIRED_BACKUP,仅 optional/no_backup 场景显式传参。底层通过 FlagAddBackupBit 将 SNAPSHOT_REQUIRED_BACKUP / SNAPSHOT_OPTIONAL_BACKUP 转换为驱动侧 MEM_SNAPSHOT_REQUIRED / MEM_SNAPSHOT_OPTIONAL 标志位。 2. 标签仅在 args != nullptr 且兼容性通过的新驱动流程中参与备份/恢复范围判断;当 args == nullptr 走旧 Runtime 流程时,标签不参与旧流程判断。 3. 标签划分原则: - SNAPSHOT_REQUIRED_BACKUP:新驱动流程中无论 backupFlags / restoreFlags 为 0U 还是 1U,都必须由驱动备份/恢复的 Runtime 内部设备内存。 - SNAPSHOT_OPTIONAL_BACKUP:新驱动流程中仅当 backupFlags / restoreFlags 为 1U 时由驱动备份/恢复的内存,适用于非必须备份,或恢复阶段可重新构建/重新下发的 Runtime 辅助内存。 - SNAPSHOT_NO_BACKUP:新驱动流程中也不需要驱动备份/恢复的内存,适用于恢复过程中的临时设备 buffer,用完即释放,不参与 Snapshot 备份恢复。 4. 对新驱动流程中需要保持内容一致的 Runtime 内存,在申请处补充 required 标签;对临时恢复 buffer,例如自定义 AICPU so reload 使用的 AllocAndCopyHbmBuf,标记为 no_backup。 5. 对无法直接通过分配接口传入标签、但新驱动流程中应按 required 处理的既有设备内存,在内部实现中通过 NpuDriver::MemAdvise(..., ADVISE_SNAPSHOT_REQUIRED, ...) 补充 required 标记,不改 ACL/RT 对外接口。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 如何测试 按本次变更影响范围做定向验证:Snapshot 备份/恢复接口新增 args 参数,同时保持 args == nullptr 的旧接口兼容行为;Runtime 内部设备内存申请切换为 DevMemAllocWithBackupFlag,并通过 DevMemAllocConfig 承载原有申请配置。对应同步适配已有 UT 中的 mock、stub 和测试 helper,并针对 Snapshot 备份标签策略新增定向 UT,验证空 args 旧流程、非空 args 兼容性判断、backupFlags / restoreFlags 传递以及驱动侧 flags 转换逻辑。修改后的 Runtime 相关 UT 已跑通。 | 接口或场景 | UT 覆盖结果 | 结果 | | --- | --- | --- | | ACL Snapshot 参数转发与参数校验 | acl_runtime_unittest.cpp:覆盖 aclrtSnapShotProcessBackup/Restore 成功、失败、args == nullptr 兼容旧流程、backupFlags / restoreFlags 参数转发,以及非法 flags 拦截且不下传 RTS | PASSED | | Runtime Snapshot API 路由 | rt_utest_api_snapshot_route.cc、rt_utest_runtime.cc、rt_utest_stub.cc:覆盖 Snapshot lock / backup / restore / unlock 路由及错误码映射 | PASSED | | 910B Snapshot 备份恢复流程 | rt_utest_snapshot.cc、rt_utest_api_impl.cc、rt_utest_api_impl_spec.cc:覆盖 Snapshot backup/restore 参数传入、兼容性判断、版本校验、restore 主流程及 batch load 相关路径 | PASSED | | Snapshot 标签兼容性分支(本次新增 UT) | rt_utest_snapshot.cc:覆盖 args == nullptr 时走旧 Runtime 备份/恢复流程;args != nullptr 且兼容性通过时透传 backupFlags / restoreFlags;args != nullptr 且兼容性不通过时返回错误并终止流程 | PASSED | | NpuDriver 备份恢复 flags 转换(本次新增 UT) | rt_utest_npu_driver.cc:覆盖 ProcessResBackup/Restore 中 1U 和 0U 到驱动 reserve flag 的转换 | PASSED | | Runtime 内部设备内存申请切换 | rt_utest_program.cc、rt_utest_aicpu_timeout.cc、rt_utest_arg_loader_nocopy.cc:原 mock DevMemAlloc 的用例已适配为 DevMemAllocWithBackupFlag,覆盖 module/program、AICPU timeout、ArgLoader 申请路径 | PASSED | | DevMemAllocConfig 参数适配 | rt_utest_npu_driver.cc、rt_utest_api_soma.cc、rt_utest_api.cc:覆盖 HugePage/Managed/SOMA 等路径中 readOnly、isNewApi 等配置迁移到 DevMemAllocConfig 后的行为 | PASSED | | 既有 UT helper 签名适配 | rt_utest_memory_transfer_driver.hpp:MemoryTransferTestDriver 按新 DevMemAlloc 签名适配,并从 DevMemAllocConfig 读取原 starsTillingFlag 语义 | PASSED | | UT stub 编译适配 | hal_ts copy.h、los_atomic copy.h、los_typedef copy.h、slog_stub.cc:同步适配本次接口变化导致的 UT stub 编译问题 | PASSED | See merge request: cann/runtime!4942 | 3 天前 | |
refactor: ApiVmm 隔离拆分改造 Co-authored-by: kongrong<kongrong@hisilicon.com> # message auto-generated for no-merge-commit merge: !5022 merge refactor/api-vmm-combined into master refactor: ApiVmm 隔离拆分改造 Created-by: carol696 Commit-by: kongrong Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 将 #4824、#4825、#4826 合并为一个基于最新 cann/runtime:master 的聚合 PR,用于 ApiVmm 类的隔离和拆分验证。 具体变更: - 新增 ApiVmm / ApiImplVmm 抽象与实现、创建器和 Runtime 生命周期接入。 - 将 VMM 相关 C API 从 api_c.cc / api_c_memory.cc 拆到 api_c_vmm.cc 并切换到 ApiVmm 路由。 - ApiImplVmm 直接调用 Runtime 公共能力:CheckDeviceIdIsValid、FillRuntimeMemMngExtInfo;ParseMallocCfg 作为 ApiImplVmm 私有方法保留。 - 不再引入 api_impl_common.hpp、api_profile_utils.hpp 及相关临时 helper。 - arch5162 使用 api_impl_vmm_stub.cc,VMM 接口保持公开符号并返回 not support。 行为等价说明: - 支持产品继续编译并创建真实 ApiImplVmm,C API 签名、参数检查、错误码转换、ErrMsg 上报和 profiling begin/end 逻辑保持原语义。 - ApiProfileDecorator::GetReportProfApiData() 收敛到 Runtime::GetRuntimeReportProfApiData(),内存扩展信息填充统一走 Runtime::FillRuntimeMemMngExtInfo()。 - 原代码注释保留在迁移后的对应位置,例如 VMM handle/deviceId 处理和 ParseMallocCfg 重复属性处理说明。 David 差异化分析: - 本 PR 未修改 api_impl_david.cc、David 专用 API 实现或 David 专用 UT。 - 仅触达通用 v200.cmake 和 runtime_v200/runtime_adapt.cc:前者把通用 api_impl_vmm.cc 纳入 v200/v201 common source,后者补充 Runtime 生命周期中的 apiVmm_ 清空和 DestroyImplVmm。 - 未对 David 专有链路做拆分或裁剪,David 相关能力保持现状。 不包含: - 不继续拆分涉及 David 专有实现的接口。 - 不扩展到 VMM 之外的其他内存管理接口批次。 - 不包含文档文件变更。 ## 涉及 rt/rts 接口 本次 ApiVmm 隔离拆分涉及以下 Runtime VMM C 接口路由调整: - 地址管理:rtReserveMemAddress、rtReleaseMemAddress、rtsMemReserveAddress、rtsMemFreeAddress - 物理内存:rtMallocPhysical、rtFreePhysical、rtsMemMallocPhysical、rtsMemFreePhysical - 映射/访问控制:rtMapMem、rtUnmapMem、rtsMemMap、rtsMemUnmap、rtMemMapNoAccess、rtMemSetAccess、rtMemGetAccess - Shareable Handle:rtMemExportToShareableHandle、rtsMemExportToShareableHandle、rtMemImportFromShareableHandle、rtsMemImportFromShareableHandle、rtMemSetPidToShareableHandle、rtsMemSetPidToShareableHandle - Shareable Handle V2:rtMemExportToShareableHandleV2、rtMemImportFromShareableHandleV2、rtMemSetPidToShareableHandleV2 - VMM 查询/句柄:rtMemGetAllocationGranularity、rtsMemGetAllocationGranularity、rtMemRetainAllocationHandle、rtMemGetAllocationPropertiesFromHandle、rtMemGetAddressRange - 映射链路选择:rtMemMapSelectedLink、rtMemMapSetLink See merge request: cann/runtime!5022 | 9 天前 | |
【PR】: optimize code Co-authored-by: wda1991<wangdongan@hisilicon.com> # message auto-generated for no-merge-commit merge: !5053 merge optimize_0917 into master 【PR】: optimize code Created-by: wda1991 Commit-by: wda1991 Merged-by: cann-robot Description: # Pull Request ## 描述 优化代码 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [ ] 我的代码遵循了项目的代码风格 - [ ] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [ ] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!5053 | 12 天前 | |
refactor: 新增 ApiRtConfig 框架 Co-authored-by: wangzhensheng<wangzhensheng4@huawei.com> # message auto-generated for no-merge-commit merge: !4808 merge refactor/api-rt-config-framework into master refactor: 新增 ApiRtConfig 框架 Created-by: wangzhensheng Commit-by: wangzhensheng Merged-by: cann-robot Description: # Pull Request ## 描述 新增独立的 ApiRtConfig 接口及实现框架,用于承载运行时配置相关能力,为后续从原有 Api 中拆分这些方法做准备。 删除冗余函数:Runtime::GetTilingKeyFromKernel、Runtime::KernelSetDfx **主要变更** - 新增 ApiRtConfig 抽象接口,共包含 11 个方法: - 系统参数配置:CtxSetSysParamOpt、CtxGetSysParamOpt - 资源限制:SetDeviceResLimit、ResetDeviceResLimit、GetDeviceResLimit、SetStreamResLimit、ResetStreamResLimit、GetStreamResLimit、UseStreamResInCurrentThread、NotUseStreamResInCurrentThread、GetResInCurrentThread - 新增 ApiImplRtConfig 具体实现 - 完善对象创建和生命周期管理: - 新增 IsImplRtConfigSupported、CreateImplRtConfigAndGet、DestroyImplRtConfig。 - Runtime 增加 apiRtConfig_ 和 apiImplRtConfig_ 成员。 - 在 Runtime::InitApiImplies 中创建对象,在初始化成功后对外提供 ApiRtConfig::Instance()。 - 初始化失败及 v100/v200 Runtime 析构时释放对象。 - IsImplRtConfigSupported() 当前固定返回 true。 - 接入各构建目标: - runtime、v200、tiny、cmodel、arch5162 均加入 api_impl_rt_config.cc。 - 当前没有为 arch5162 单独提供 RT_ERROR_FEATURE_NOT_SUPPORT 实现,各目标原则上共用同一套实现。 **变更边界** - 当前PR仅新增了新框架、实现及 Runtime 生命周期接入,并未切换新框架;原有接口语义、逻辑、调用链仍维持原状。 ## 变更类型 请选择本次引入的变更类型: <!-- [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/runtime!4808 | 17 天前 | |
refactor: 新增 ApiRtConfig 框架 Co-authored-by: wangzhensheng<wangzhensheng4@huawei.com> # message auto-generated for no-merge-commit merge: !4808 merge refactor/api-rt-config-framework into master refactor: 新增 ApiRtConfig 框架 Created-by: wangzhensheng Commit-by: wangzhensheng Merged-by: cann-robot Description: # Pull Request ## 描述 新增独立的 ApiRtConfig 接口及实现框架,用于承载运行时配置相关能力,为后续从原有 Api 中拆分这些方法做准备。 删除冗余函数:Runtime::GetTilingKeyFromKernel、Runtime::KernelSetDfx **主要变更** - 新增 ApiRtConfig 抽象接口,共包含 11 个方法: - 系统参数配置:CtxSetSysParamOpt、CtxGetSysParamOpt - 资源限制:SetDeviceResLimit、ResetDeviceResLimit、GetDeviceResLimit、SetStreamResLimit、ResetStreamResLimit、GetStreamResLimit、UseStreamResInCurrentThread、NotUseStreamResInCurrentThread、GetResInCurrentThread - 新增 ApiImplRtConfig 具体实现 - 完善对象创建和生命周期管理: - 新增 IsImplRtConfigSupported、CreateImplRtConfigAndGet、DestroyImplRtConfig。 - Runtime 增加 apiRtConfig_ 和 apiImplRtConfig_ 成员。 - 在 Runtime::InitApiImplies 中创建对象,在初始化成功后对外提供 ApiRtConfig::Instance()。 - 初始化失败及 v100/v200 Runtime 析构时释放对象。 - IsImplRtConfigSupported() 当前固定返回 true。 - 接入各构建目标: - runtime、v200、tiny、cmodel、arch5162 均加入 api_impl_rt_config.cc。 - 当前没有为 arch5162 单独提供 RT_ERROR_FEATURE_NOT_SUPPORT 实现,各目标原则上共用同一套实现。 **变更边界** - 当前PR仅新增了新框架、实现及 Runtime 生命周期接入,并未切换新框架;原有接口语义、逻辑、调用链仍维持原状。 ## 变更类型 请选择本次引入的变更类型: <!-- [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/runtime!4808 | 17 天前 | |
【PR】Snapshot 备份/恢复流程重构,内存申请补充备份标记能力 Co-authored-by: weixin_47917346<zhangjunyu23@huawei.com> Co-authored-by: yinhong chen<1329312243@qq.com> # message auto-generated for no-merge-commit merge: !4942 merge master into master 【PR】Snapshot 备份/恢复流程重构,内存申请补充备份标记能力 Created-by: weixin_47917346 Commit-by: weixin_47917346;yinhong chen;zhangjunyu23@huawei.com Merged-by: cann-robot Description: ## 描述 本 PR 重构 Snapshot 备份/恢复流程,新增备份/恢复 flags、版本兼容校验和 Runtime 设备内存备份标签能力。在保持 ACL 对外接口兼容的前提下,当调用方不传 Snapshot args 时继续走原有 Runtime 备份/恢复流程;当调用方传入 args 时,进入新的驱动能力校验与驱动备份/恢复流程。 ### 备份与恢复 1. 贯通 aclrtSnapShotBackupArgs / aclrtSnapShotRestoreArgs 到 Runtime、Decorator、Driver 调用链,并在新流程中支持 backupFlags / restoreFlags 透传。 2. ACL 对外接口保持兼容:aclrtSnapShotProcessBackup / aclrtSnapShotProcessRestore 允许 args 传 nullptr。 - args == nullptr:无兼容性判断概念,直接走原有 Runtime 备份/恢复流程。 - args != nullptr:进入新流程,基于设备是否支持 FEATURE_SVM_PROCESS_DEVICE_MEM_SNAPSHOT 做兼容性判断。 3. RTS 层保留旧无参 rtSnapShotProcessBackup / rtSnapShotProcessRestore 符号和语义,同时新增 rtSnapShotProcessBackupWithArgs / rtSnapShotProcessRestoreWithArgs 承接非空 args,避免破坏旧源码和旧二进制 ABI。 4. ACL 层对非空 args 做参数校验:backupFlags / restoreFlags 仅允许 0U 或 1U,非法值直接返回参数错误,不继续下传 Runtime/Driver。reserved 为冗余保留字段,当前流程不使用。 5. 备份阶段: - args == nullptr:走原有 Runtime 备份流程。 - args != nullptr 且兼容性不通过:直接返回错误,终止备份。 - args != nullptr 且兼容性通过:记录 runtime/driver API 版本,保留 ModelSqTasksBackup / halStreamBackup,跳过 Runtime 侧旧备份逻辑,通过 NpuDriver::ProcessResBackup(args->backupFlags) 交由驱动备份设备内存。 6. 恢复阶段: - args == nullptr:走原有 Runtime 恢复流程。 - args != nullptr 且兼容性不通过:直接返回错误,终止恢复。 - args != nullptr 且兼容性通过:先校验当前恢复版本与备份版本是否一致,版本不一致直接返回错误;版本一致后调用 NpuDriver::ProcessResRestore(args->restoreFlags),并跳过 RestoreModule、OpMemoryRestore、RestoreAiCpuKernelInfo 等旧内存恢复逻辑。 - 新恢复流程仍保留 stream/event/notify 资源重建、参数池刷新、ModelRestore、ACL graph 恢复、自定义 AICPU so reload、AICPU DFX 等必要恢复流程,halStreamRestore 不跳过。 ### 内存备份标签 1. 新增 DevMemAllocWithBackupFlag 接口,在 Runtime 内部申请设备内存时同步传入 Snapshot 备份标签;接口默认使用 SNAPSHOT_REQUIRED_BACKUP,仅 optional/no_backup 场景显式传参。底层通过 FlagAddBackupBit 将 SNAPSHOT_REQUIRED_BACKUP / SNAPSHOT_OPTIONAL_BACKUP 转换为驱动侧 MEM_SNAPSHOT_REQUIRED / MEM_SNAPSHOT_OPTIONAL 标志位。 2. 标签仅在 args != nullptr 且兼容性通过的新驱动流程中参与备份/恢复范围判断;当 args == nullptr 走旧 Runtime 流程时,标签不参与旧流程判断。 3. 标签划分原则: - SNAPSHOT_REQUIRED_BACKUP:新驱动流程中无论 backupFlags / restoreFlags 为 0U 还是 1U,都必须由驱动备份/恢复的 Runtime 内部设备内存。 - SNAPSHOT_OPTIONAL_BACKUP:新驱动流程中仅当 backupFlags / restoreFlags 为 1U 时由驱动备份/恢复的内存,适用于非必须备份,或恢复阶段可重新构建/重新下发的 Runtime 辅助内存。 - SNAPSHOT_NO_BACKUP:新驱动流程中也不需要驱动备份/恢复的内存,适用于恢复过程中的临时设备 buffer,用完即释放,不参与 Snapshot 备份恢复。 4. 对新驱动流程中需要保持内容一致的 Runtime 内存,在申请处补充 required 标签;对临时恢复 buffer,例如自定义 AICPU so reload 使用的 AllocAndCopyHbmBuf,标记为 no_backup。 5. 对无法直接通过分配接口传入标签、但新驱动流程中应按 required 处理的既有设备内存,在内部实现中通过 NpuDriver::MemAdvise(..., ADVISE_SNAPSHOT_REQUIRED, ...) 补充 required 标记,不改 ACL/RT 对外接口。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 如何测试 按本次变更影响范围做定向验证:Snapshot 备份/恢复接口新增 args 参数,同时保持 args == nullptr 的旧接口兼容行为;Runtime 内部设备内存申请切换为 DevMemAllocWithBackupFlag,并通过 DevMemAllocConfig 承载原有申请配置。对应同步适配已有 UT 中的 mock、stub 和测试 helper,并针对 Snapshot 备份标签策略新增定向 UT,验证空 args 旧流程、非空 args 兼容性判断、backupFlags / restoreFlags 传递以及驱动侧 flags 转换逻辑。修改后的 Runtime 相关 UT 已跑通。 | 接口或场景 | UT 覆盖结果 | 结果 | | --- | --- | --- | | ACL Snapshot 参数转发与参数校验 | acl_runtime_unittest.cpp:覆盖 aclrtSnapShotProcessBackup/Restore 成功、失败、args == nullptr 兼容旧流程、backupFlags / restoreFlags 参数转发,以及非法 flags 拦截且不下传 RTS | PASSED | | Runtime Snapshot API 路由 | rt_utest_api_snapshot_route.cc、rt_utest_runtime.cc、rt_utest_stub.cc:覆盖 Snapshot lock / backup / restore / unlock 路由及错误码映射 | PASSED | | 910B Snapshot 备份恢复流程 | rt_utest_snapshot.cc、rt_utest_api_impl.cc、rt_utest_api_impl_spec.cc:覆盖 Snapshot backup/restore 参数传入、兼容性判断、版本校验、restore 主流程及 batch load 相关路径 | PASSED | | Snapshot 标签兼容性分支(本次新增 UT) | rt_utest_snapshot.cc:覆盖 args == nullptr 时走旧 Runtime 备份/恢复流程;args != nullptr 且兼容性通过时透传 backupFlags / restoreFlags;args != nullptr 且兼容性不通过时返回错误并终止流程 | PASSED | | NpuDriver 备份恢复 flags 转换(本次新增 UT) | rt_utest_npu_driver.cc:覆盖 ProcessResBackup/Restore 中 1U 和 0U 到驱动 reserve flag 的转换 | PASSED | | Runtime 内部设备内存申请切换 | rt_utest_program.cc、rt_utest_aicpu_timeout.cc、rt_utest_arg_loader_nocopy.cc:原 mock DevMemAlloc 的用例已适配为 DevMemAllocWithBackupFlag,覆盖 module/program、AICPU timeout、ArgLoader 申请路径 | PASSED | | DevMemAllocConfig 参数适配 | rt_utest_npu_driver.cc、rt_utest_api_soma.cc、rt_utest_api.cc:覆盖 HugePage/Managed/SOMA 等路径中 readOnly、isNewApi 等配置迁移到 DevMemAllocConfig 后的行为 | PASSED | | 既有 UT helper 签名适配 | rt_utest_memory_transfer_driver.hpp:MemoryTransferTestDriver 按新 DevMemAlloc 签名适配,并从 DevMemAllocConfig 读取原 starsTillingFlag 语义 | PASSED | | UT stub 编译适配 | hal_ts copy.h、los_atomic copy.h、los_typedef copy.h、slog_stub.cc:同步适配本次接口变化导致的 UT stub 编译问题 | PASSED | See merge request: cann/runtime!4942 | 3 天前 | |
【PR】Snapshot 备份/恢复流程重构,内存申请补充备份标记能力 Co-authored-by: weixin_47917346<zhangjunyu23@huawei.com> Co-authored-by: yinhong chen<1329312243@qq.com> # message auto-generated for no-merge-commit merge: !4942 merge master into master 【PR】Snapshot 备份/恢复流程重构,内存申请补充备份标记能力 Created-by: weixin_47917346 Commit-by: weixin_47917346;yinhong chen;zhangjunyu23@huawei.com Merged-by: cann-robot Description: ## 描述 本 PR 重构 Snapshot 备份/恢复流程,新增备份/恢复 flags、版本兼容校验和 Runtime 设备内存备份标签能力。在保持 ACL 对外接口兼容的前提下,当调用方不传 Snapshot args 时继续走原有 Runtime 备份/恢复流程;当调用方传入 args 时,进入新的驱动能力校验与驱动备份/恢复流程。 ### 备份与恢复 1. 贯通 aclrtSnapShotBackupArgs / aclrtSnapShotRestoreArgs 到 Runtime、Decorator、Driver 调用链,并在新流程中支持 backupFlags / restoreFlags 透传。 2. ACL 对外接口保持兼容:aclrtSnapShotProcessBackup / aclrtSnapShotProcessRestore 允许 args 传 nullptr。 - args == nullptr:无兼容性判断概念,直接走原有 Runtime 备份/恢复流程。 - args != nullptr:进入新流程,基于设备是否支持 FEATURE_SVM_PROCESS_DEVICE_MEM_SNAPSHOT 做兼容性判断。 3. RTS 层保留旧无参 rtSnapShotProcessBackup / rtSnapShotProcessRestore 符号和语义,同时新增 rtSnapShotProcessBackupWithArgs / rtSnapShotProcessRestoreWithArgs 承接非空 args,避免破坏旧源码和旧二进制 ABI。 4. ACL 层对非空 args 做参数校验:backupFlags / restoreFlags 仅允许 0U 或 1U,非法值直接返回参数错误,不继续下传 Runtime/Driver。reserved 为冗余保留字段,当前流程不使用。 5. 备份阶段: - args == nullptr:走原有 Runtime 备份流程。 - args != nullptr 且兼容性不通过:直接返回错误,终止备份。 - args != nullptr 且兼容性通过:记录 runtime/driver API 版本,保留 ModelSqTasksBackup / halStreamBackup,跳过 Runtime 侧旧备份逻辑,通过 NpuDriver::ProcessResBackup(args->backupFlags) 交由驱动备份设备内存。 6. 恢复阶段: - args == nullptr:走原有 Runtime 恢复流程。 - args != nullptr 且兼容性不通过:直接返回错误,终止恢复。 - args != nullptr 且兼容性通过:先校验当前恢复版本与备份版本是否一致,版本不一致直接返回错误;版本一致后调用 NpuDriver::ProcessResRestore(args->restoreFlags),并跳过 RestoreModule、OpMemoryRestore、RestoreAiCpuKernelInfo 等旧内存恢复逻辑。 - 新恢复流程仍保留 stream/event/notify 资源重建、参数池刷新、ModelRestore、ACL graph 恢复、自定义 AICPU so reload、AICPU DFX 等必要恢复流程,halStreamRestore 不跳过。 ### 内存备份标签 1. 新增 DevMemAllocWithBackupFlag 接口,在 Runtime 内部申请设备内存时同步传入 Snapshot 备份标签;接口默认使用 SNAPSHOT_REQUIRED_BACKUP,仅 optional/no_backup 场景显式传参。底层通过 FlagAddBackupBit 将 SNAPSHOT_REQUIRED_BACKUP / SNAPSHOT_OPTIONAL_BACKUP 转换为驱动侧 MEM_SNAPSHOT_REQUIRED / MEM_SNAPSHOT_OPTIONAL 标志位。 2. 标签仅在 args != nullptr 且兼容性通过的新驱动流程中参与备份/恢复范围判断;当 args == nullptr 走旧 Runtime 流程时,标签不参与旧流程判断。 3. 标签划分原则: - SNAPSHOT_REQUIRED_BACKUP:新驱动流程中无论 backupFlags / restoreFlags 为 0U 还是 1U,都必须由驱动备份/恢复的 Runtime 内部设备内存。 - SNAPSHOT_OPTIONAL_BACKUP:新驱动流程中仅当 backupFlags / restoreFlags 为 1U 时由驱动备份/恢复的内存,适用于非必须备份,或恢复阶段可重新构建/重新下发的 Runtime 辅助内存。 - SNAPSHOT_NO_BACKUP:新驱动流程中也不需要驱动备份/恢复的内存,适用于恢复过程中的临时设备 buffer,用完即释放,不参与 Snapshot 备份恢复。 4. 对新驱动流程中需要保持内容一致的 Runtime 内存,在申请处补充 required 标签;对临时恢复 buffer,例如自定义 AICPU so reload 使用的 AllocAndCopyHbmBuf,标记为 no_backup。 5. 对无法直接通过分配接口传入标签、但新驱动流程中应按 required 处理的既有设备内存,在内部实现中通过 NpuDriver::MemAdvise(..., ADVISE_SNAPSHOT_REQUIRED, ...) 补充 required 标记,不改 ACL/RT 对外接口。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 如何测试 按本次变更影响范围做定向验证:Snapshot 备份/恢复接口新增 args 参数,同时保持 args == nullptr 的旧接口兼容行为;Runtime 内部设备内存申请切换为 DevMemAllocWithBackupFlag,并通过 DevMemAllocConfig 承载原有申请配置。对应同步适配已有 UT 中的 mock、stub 和测试 helper,并针对 Snapshot 备份标签策略新增定向 UT,验证空 args 旧流程、非空 args 兼容性判断、backupFlags / restoreFlags 传递以及驱动侧 flags 转换逻辑。修改后的 Runtime 相关 UT 已跑通。 | 接口或场景 | UT 覆盖结果 | 结果 | | --- | --- | --- | | ACL Snapshot 参数转发与参数校验 | acl_runtime_unittest.cpp:覆盖 aclrtSnapShotProcessBackup/Restore 成功、失败、args == nullptr 兼容旧流程、backupFlags / restoreFlags 参数转发,以及非法 flags 拦截且不下传 RTS | PASSED | | Runtime Snapshot API 路由 | rt_utest_api_snapshot_route.cc、rt_utest_runtime.cc、rt_utest_stub.cc:覆盖 Snapshot lock / backup / restore / unlock 路由及错误码映射 | PASSED | | 910B Snapshot 备份恢复流程 | rt_utest_snapshot.cc、rt_utest_api_impl.cc、rt_utest_api_impl_spec.cc:覆盖 Snapshot backup/restore 参数传入、兼容性判断、版本校验、restore 主流程及 batch load 相关路径 | PASSED | | Snapshot 标签兼容性分支(本次新增 UT) | rt_utest_snapshot.cc:覆盖 args == nullptr 时走旧 Runtime 备份/恢复流程;args != nullptr 且兼容性通过时透传 backupFlags / restoreFlags;args != nullptr 且兼容性不通过时返回错误并终止流程 | PASSED | | NpuDriver 备份恢复 flags 转换(本次新增 UT) | rt_utest_npu_driver.cc:覆盖 ProcessResBackup/Restore 中 1U 和 0U 到驱动 reserve flag 的转换 | PASSED | | Runtime 内部设备内存申请切换 | rt_utest_program.cc、rt_utest_aicpu_timeout.cc、rt_utest_arg_loader_nocopy.cc:原 mock DevMemAlloc 的用例已适配为 DevMemAllocWithBackupFlag,覆盖 module/program、AICPU timeout、ArgLoader 申请路径 | PASSED | | DevMemAllocConfig 参数适配 | rt_utest_npu_driver.cc、rt_utest_api_soma.cc、rt_utest_api.cc:覆盖 HugePage/Managed/SOMA 等路径中 readOnly、isNewApi 等配置迁移到 DevMemAllocConfig 后的行为 | PASSED | | 既有 UT helper 签名适配 | rt_utest_memory_transfer_driver.hpp:MemoryTransferTestDriver 按新 DevMemAlloc 签名适配,并从 DevMemAllocConfig 读取原 starsTillingFlag 语义 | PASSED | | UT stub 编译适配 | hal_ts copy.h、los_atomic copy.h、los_typedef copy.h、slog_stub.cc:同步适配本次接口变化导致的 UT stub 编译问题 | PASSED | See merge request: cann/runtime!4942 | 3 天前 | |
refactor: 新增 ApiSnapshot 框架 Co-authored-by: l00798094<lishun30@huawei.com> # message auto-generated for no-merge-commit merge: !4670 merge codex/api-snapshot-framework into master refactor: 新增 ApiSnapshot 框架 Created-by: lexbb Commit-by: l00798094 Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 是快照管理 API 拆分的“新增框架”阶段,基于 cann/runtime:master。 本批接口: - aclrtSnapShotProcessLock -> rtSnapShotProcessLock - aclrtSnapShotProcessBackup -> rtSnapShotProcessBackup - aclrtSnapShotProcessRestore -> rtSnapShotProcessRestore - aclrtSnapShotProcessUnlock -> rtSnapShotProcessUnlock - aclrtSnapShotProcessGetState -> rtSnapShotProcessGetState - aclrtSnapShotCallbackRegister -> rtSnapShotCallbackRegister - aclrtSnapShotCallbackUnregister -> rtSnapShotCallbackUnregister 具体变更: - 新增抽象 ApiSnapshot、真实实现 ApiImplSnapshot 和不支持平台工厂桩。 - 将快照业务实现收敛至独立编译单元,保持状态校验、回调顺序和错误码不变。 - 接入 Runtime 创建、访问和销毁生命周期。 - 同步 runtime、cmodel、v200、tiny、arch5162、910B 及相关 UT 源文件矩阵。 - 增加工厂创建失败、生命周期、状态读取和非法状态直接 UT。 行为等价说明: - 本阶段现有 C API 仍走主 Api 调用链,公开符号、参数校验顺序、返回码和产品能力保持不变。 - Runtime 新成员追加在类布局尾部,避免改变已有成员偏移。 本 PR 不包含: - 不切换七个 Snapshot C API 的调用链。 - 不删除主 Api/ApiImpl/decorator 中的旧方法。 - 不执行 arch5162 的最终 C API 强桩隔离。 剩余工作: - 框架阶段合入后,基于最新主线提交“切换 Snapshot API 调用链”PR。 - 路由阶段合入后,提交“隔离 arch5162 ApiSnapshot 组件”PR。 ## 变更类型 - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 暂无关联 Issue。 ## 如何测试 1. pre-commit run clang-format --from-ref c210f8d88^ --to-ref c210f8d88:通过。 2. python tests/ut/runtime/runtime/test/cmake/test_generate_runtime_api_stubs.py:9/9 通过。 3. scripts/oat_check.sh:重放到最新主线后的聚合分支 45 个变更文件通过,非法文件类型 0,License Header 问题 0。 4. 当前本地及 WSL 环境缺少 CMake/C++ 编译器,完整 C++ 编译和 UT 尚未执行,需以线上 CI 编译结果补齐证据。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - 本 PR 仅包含提交 c210f8d88 refactor: 新增 ApiSnapshot 框架。 - 推荐合入顺序:新增框架 -> 切换调用链 -> arch5162 组件隔离。 - 回退方式:单独回退本 PR 即可恢复原框架状态,不影响后续阶段之外的模块。 See merge request: cann/runtime!4670 | 18 天前 | |
【feat】: 添加SOMA复用功能 Co-authored-by: PXTang<tangpeixin1@huawei.com> # message auto-generated for no-merge-commit merge: !3223 merge soma_reuse into master 【feat】: 添加SOMA复用功能 Created-by: PXTang Commit-by: PXTang 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/runtime!3223 | 2 天前 | |
fix: 统一SOMA内存池分配接口参数名(#889) Co-authored-by: ningjingyuan<ningjingyuan@huawei.com> # message auto-generated for no-merge-commit merge: !5141 merge fix/api-param-soma into master fix: 统一SOMA内存池分配接口参数名(#889) Created-by: ningjingyuan Commit-by: ningjingyuan Merged-by: cann-robot Description: # Pull Request ## 描述 NULL_PTR_RETURN_MSG_OUTER_WITH_FUNC_DESC 会通过 #PTR 将参数名写入 EE1004 错误信息。 rtMemPoolMallocAsync 的公开 C 接口及 @param 均使用 ptr,但 ApiSoma 虚接口、ApiImplSoma 实现和 stub 仍使用 devPtr,导致空指针错误信息中的参数名与接口文档不一致。 本 PR 将该接口实现链路的输出参数统一为 ptr。不修改参数类型、顺序、返回值、日志文案及运行行为。 ## 变更类型 <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue Closes #889 Issue:https://gitcode.com/cann/runtime/issues/889 ## 如何测试 1. 执行 pre-commit run --files src/runtime/api/api_soma.hpp src/runtime/api/impl/api_impl_soma.hpp src/runtime/api/impl/api_impl_soma.cc src/runtime/api/impl/api_impl_stub.cc,检查通过。 2. 执行 cmake --build build --target runtime_v100 runtime_utest_tiny_stub -j2,编译通过。 3. 执行 ./build/tests/ut/runtime/runtime/runtime_utest_tiny_stub --gtest_color=no,65 个用例全部通过。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 对外接口及 @param 已确认使用 ptr,无需额外文档修改 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 本 PR 仅包含 rtMemPoolMallocAsync 一个接口的参数名同步,共修改 4 个文件、10 行新增和 10 行删除。 See merge request: cann/runtime!5141 | 10 天前 | |
【PR】: refactor: 通过扩展任务回调解耦 FFTS 任务下发 Co-authored-by: duanpengliang<duanpengliang@huawei.com> # message auto-generated for no-merge-commit merge: !4973 merge aclgraph-event-decouple into master 【PR】: refactor: 通过扩展任务回调解耦 FFTS 任务下发 Created-by: duanpengliang Commit-by: duanpengliang Merged-by: cann-robot Description: # Pull Request ## 描述 新增 ExtTaskLaunch 回调注册机制,按芯片类型和任务类型保存任务下发函数。 新增 Stream::LaunchExtTask(),由 Stream 查找并调用对应的扩展任务处理函数。 FFTS Plus 在 V100、David 芯片初始化时注册下发回调,API 层不再直接依赖 FFTS 实现。 移除 FFTS Plus 和 RDMA DB 接口对 Context::captureLock_ 的参数依赖。 为 rdmaPiValueModifyTaskInfoMap_ 增加独立互斥锁,保护插入、读取及清理操作;读取接口改为返回数据快照。 将新增的 ext_task_launch.cc 加入 runtime、cmodel、v200 和 UT 构建列表。 同步调整 FFTS、RDMA 相关 UT 的调用和桩函数 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 执行源码、ut编译无问题 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!4973 | 2 天前 | |
refactor: 拆分并隔离 ApiHostMemory Co-authored-by: kongrong<kongrong@hisilicon.com> # message auto-generated for no-merge-commit merge: !4987 merge refactor/api-host-memory-combined into master refactor: 拆分并隔离 ApiHostMemory Created-by: carol696 Commit-by: kongrong Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 基于 #4491、#4560、#4663 的内存管理拆分分析,将原 #4813、#4814、#4815 合并为单个 ApiHostMemory 隔离拆分 PR。 本批接口: - rtsMallocHost - rtMallocHost - rtsFreeHost - rtFreeHost - rtFreeHostWithDevSync - rtsHostRegister - rtHostMemMapCapabilities - rtHostRegisterV2 - rtHostGetDevicePointer - rtsHostUnregister - rtMallocHostSharedMemory - rtFreeHostSharedMemory - rtHostGetDevicePointerAddrRange 具体变更: - 合并原三阶段 PR #4813、#4814、#4815 为单 PR:框架新增、C API 路由切换、arch5162/tiny 隔离一次性提交。 - 新增 ApiHostMemory 抽象入口、ApiImplHostMemory 正式实现和 api_c_host_memory.cc C API 入口。 - 将 HostMemory 相关 C API 从主 Api 调用链切换到 ApiHostMemory::Instance()。 - 删除主 Api、ApiImpl、ApiDecorator、ApiErrorDecorator、profile/profile-log decorator 中的旧 HostMemory 转发。 - tiny 编译正式 ApiImplHostMemory 并创建 HostMemory 实现对象;api_c_host_memory.cc 在 tiny stub 目标中作为 weak provider 编译,rtHostGetDevicePointerAddrRange 继续由 generated strong stub 覆盖,保持 tiny 对外 C API 打桩语义。 - ApiImplHostMemory::HostGetDevicePointerAddrRange 真实实现迁移到 api_impl_host_memory.cc;tiny 实现层随正式 ApiImplHostMemory 拥有真实实现,公开 C API 仍由 tiny generated strong stub 保持 feature-not-support;arch5162 继续不创建 HostMemory 实现。 - arch5162 继续使用 api_impl_host_memory_stub.cc,IsImplHostMemorySupported() 返回 false,Runtime 初始化时不挂载 HostMemory 实现。 - 保留原 HostMalloc 配置、UVA、HostRegister、addr range 等注释,并将 ErrMsg/ErrorMessage 上报边界迁移到 HostMemory 专属实现。 - 按检视意见收敛 api_impl_host_memory.cc:删除本地 CheckDeviceIdIsValid、GetReportProfApiData、FillHostMemMngExtInfo 重复实现,改为直接调用 Runtime 公共方法;HostFreeImpl 直接通过当前 driver 调用 PtrGetAttributes;HostMalloc/HostFree 去掉 ProfileLogRecord 层级,保留 Runtime CallApiBegin/End 与 extInfo 填充路径;删除 HostMemory 本地 CurrentContext 包装函数和 DEFAULT_HOST_MEMORY_DEVICE_ID,调用处显式展开为 Runtime::Instance()->CurrentContext(true, DEFAULT_DEVICE_ID)。 - 将 HostGetDevicePointerAddrRange 真实实现从 api_impl_standard_soc.cc 迁移到 api_impl_host_memory.cc,并删除 api_impl_stub.cc 中该成员的 feature-not-support 打桩。 - 同步普通、v200、cmodel、tiny、arch5162、910B 和 UT 的源文件列表。 - 按评审意见补齐 HostMalloc、HostMallocWithCfg 和 HostFree 的 Runtime CallApiBegin/End 覆盖范围,参数、cfg、Context 和 driver 失败路径均保持 begin/end 配对;不额外增加 ApiHostMemory::Instance() thread-local env flags 复位。 行为等价说明: - 支持产品继续编译并使用正式 ApiImplHostMemory。 - tiny 侧 ApiHostMemory 对象创建能力与修改前保持一致;公开 C API 中 rtHostGetDevicePointerAddrRange 继续命中 tiny unsupported generated stub,返回 feature-not-support;实现层直接调用 ApiHostMemory::HostGetDevicePointerAddrRange 时走 api_impl_host_memory.cc 真实实现,count == nullptr 返回 RT_ERROR_INVALID_VALUE。 - arch5162 不编译正式 HostMemory 实现,公开 runtime/ACL HostMemory API 继续由平台 stub 保持 feature-not-support 语义。 - 支持产品中 HostGetDevicePointerAddrRange 补回拆分前 ApiErrorDecorator 的 count 空指针校验,返回码与错误文案 Obtaining the device address range 保持一致。 - rtsMallocHost、rtHostMemMapCapabilities、rtHostGetDevicePointer、rtsHostUnregister、rtHostGetDevicePointerAddrRange 的 feature-not-support 返回码转换保持原 C API 语义。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无 ## 如何测试 描述测试此变更的步骤和前提条件: 1. cmake --build build --target runtime_utest_api_910B -j16:通过。 2. cmake --build build --target runtime_utest_task_910B -j16:通过。 3. cmake --build build --target runtime_utest_tiny_stub -j16:通过。 4. cmake --build build --target runtime_utest_arch5162 -j16:通过。 5. cmake --build build --target runtime_utest_api -j16:通过。 6. build/tests/ut/runtime/runtime/test/platform/910B/runtime_utest_api_910B --gtest_filter=ProfilerTest.HostMallocWithCfgInvalidParamKeepsProfileBeginEndPaired:ProfilerTest.HostMallocInvalidParamKeepsProfileBeginEndPaired:ProfilerTest.HostFreeInvalidParamKeepsProfileBeginEndPaired:通过。 7. build/tests/ut/runtime/runtime/test/platform/910B/runtime_utest_task_910B --gtest_filter=CloudV2IpcApiTest.HostGetDevicePointerAddrRange:通过。 8. build/tests/ut/runtime/runtime/runtime_utest_tiny_stub --gtest_filter=TinyStubTest.api_impl_stub:TinyStubTest.api_c_stub:通过。 9. build/tests/ut/runtime/runtime/test/platform/arch5162/runtime_utest_arch5162 --gtest_filter=Arch5162MemTest.UnsupportedHostMemoryApiImpls_ReturnNotSupport:通过。 10. git -c core.whitespace=blank-at-eol,blank-at-eof,space-before-tab,cr-at-eol diff --check upstream/master...HEAD:通过。 11. git commit --amend --no-edit:提交钩子 clang-format 与 OAT Compliance Check 通过。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 David 差异化分析:ApiImplDavid 未发现 HostMemory override 或 David 专属 HostMemory 实现,本 PR 不拆 David 专属 HostFunc/HostAtomic/Simt 逻辑;本轮仅将 950 David UT 中 HostMemory forwarding 用例切到新的 ApiHostMemory 边界,David 产品实现继续复用通用 HostMemory 实现。 CMake 行尾处理:本轮未修改 CMake;前序 HostMemory/tiny weak-provider 源文件列表调整保持不变,未为了 diff check 改动无关行尾。 See merge request: cann/runtime!4987 | 10 天前 | |
refactor: 清理原 Api 类中 ApiDeviceTopology 相关组件 Co-authored-by: wangzhensheng<wangzhensheng4@huawei.com> # message auto-generated for no-merge-commit merge: !5202 merge refactor/api-device-topology-cleanup into master refactor: 清理原 Api 类中 ApiDeviceTopology 相关组件 Created-by: wangzhensheng Commit-by: wangzhensheng Merged-by: cann-robot Description: # Pull Request ## 描述 在 ApiDeviceTopology 相关 C API 已经切换到 ApiDeviceTopology 调用链后(PR5090),删除旧 Api/ApiImpl 体系中保留的重复实现。 **从旧 Api 体系删除重复实现** - 设备枚举:GetDeviceCount - 物理 ID转换:GetDevicePhyIdByIndex、GetDeviceIndexByPhyId - P2P:EnableP2P、DisableP2P、DeviceCanAccessPeer、GetP2PStatus - 设备对信息:GetPairDevicesInfo、GetPairPhyDevicesInfo - 用户/逻辑 ID转换:GetLogicDevIdByUserDevId、GetUserDevIdByLogicDevId - 设备标识:GetDeviceUuid、GetDevicePCIBusId、GetDeviceByPCIBusId - 原子能力:GetHostAtomicCapabilities、GetP2PAtomicCapabilities 清理范围覆盖: - Api 抽象接口 - ApiDecorator - ApiErrorDecorator - ApiImpl - ApiProfileDecorator - ApiProfileLogDecorator - Standard SoC、Tiny、Arch5162 的旧实现或桩实现 原子能力查询使用的 ValidateAtomicOperations、GetAtomicDevProperties、FillAtomicCapabilities、CheckHostAtomicSupport、CheckP2PAtomicSupport 等内部辅助函数也从旧 ApiImpl 删除;对应能力仍由 ApiImplDeviceTopology 实现。 **GetDeviceCount 依赖调整** 由于 GetDeviceCount 不再属于通用 Api,以下接口的校验逻辑: - MemManagedAdvise - MemManagedPrefetchAsync - MemManagedPrefetchBatchAsync 从: cpp impl_->GetDeviceCount(&numDev) 改为直调 Runtime 接口 cpp Runtime::Instance()->GetDeviceCount(&numDev) ## 变更类型 请选择本次引入的变更类型: <!-- [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/runtime!5202 | 9 天前 | |
【PR】: 内存相关接口ErrMsg整改 Co-authored-by: guo-yanjun<guoyanjun3@huawei.com> # message auto-generated for no-merge-commit merge: !5171 merge err_msg_0903 into master 【PR】: 内存相关接口ErrMsg整改 Created-by: guo-yanjun Commit-by: guo-yanjun Merged-by: cann-robot Description: # Pull Request ## 描述 对内存相关接口进行 ErrMsg 质量加固: - 完善内存申请、内存复制、D32 Memset、Symbol 和 UVM 接口的参数校验及枚举值打印。 - 优化内存分配重试的错误上报边界,避免首次可恢复失败残留或重复上报 ErrMsg。 - 统一错误信息中的接口名、参数名、实际值和期望值,并补充相关回归 UT。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 UT/HLT验证 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!5171 | 8 天前 | |
fix: use constexpr for vmm driver flags Co-authored-by: kongrong<kongrong@hisilicon.com> # message auto-generated for no-merge-commit merge: !5363 merge style/vmm-drvflags-constexpr-20260930 into master fix: use constexpr for vmm driver flags Created-by: carol696 Commit-by: kongrong Merged-by: cann-robot Description: # Pull Request ## 描述 将 VMM shareable handle 导出流程中的固定驱动 flags 定义调整为 constexpr,明确其编译期常量语义,避免后续误修改。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无。 ## 如何测试 描述测试此变更的步骤和前提条件: 1. git diff --check:通过。 2. 提交钩子 clang-format、OAT Compliance Check:通过。 3. PR 创建后评论 /compile 触发编译流水线。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 无。 See merge request: cann/runtime!5363 | 1 天前 | |
fix: 告警清理-修复内存 API 头文件自包含 Co-authored-by: kongrong<kongrong@hisilicon.com> # message auto-generated for no-merge-commit merge: !5329 merge fix/header-self-contained into master fix: 告警清理-修复内存 API 头文件自包含 Created-by: carol696 Commit-by: kongrong Merged-by: cann-robot Description: # Pull Request ## 描述 修复内存相关 API 头文件的自包含问题: - api_host_memory.hpp 显式包含 <cstdint>,并将内部内存头文件路径调整为 runtime/rt_inner_mem.h,避免依赖额外的 src/inc/runtime include 路径。 - api_impl_host_memory.hpp 显式包含 <cstdint>,补齐接口声明中使用的标准整数类型依赖。 - api_impl_vmm.hpp 显式包含 <cstddef> 和 <cstdint>,补齐 size_t、uint*_t 等声明依赖。 api_vmm.hpp 已具备直接依赖,本次通过单头解析验证其自包含性,无需额外改动。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无。 ## 如何测试 描述测试此变更的步骤和前提条件: 1. 使用 /usr/bin/c++ -std=c++17 -fsyntax-only -x c++ -include <header> /dev/null 分别验证 api_impl_vmm.hpp、api_impl_host_memory.hpp、api_vmm.hpp、api_host_memory.hpp 单头解析:通过。 2. git diff --check:通过。 3. cmake --build build --target runtime_utest_api -j8:通过。 4. 提交 hook clang-format 与 OAT Compliance Check:通过。 5. PR 创建后评论 /compile 触发编译流水线。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 无。 See merge request: cann/runtime!5329 | 2 天前 | |
refactor: ApiVmm 隔离拆分改造 Co-authored-by: kongrong<kongrong@hisilicon.com> # message auto-generated for no-merge-commit merge: !5022 merge refactor/api-vmm-combined into master refactor: ApiVmm 隔离拆分改造 Created-by: carol696 Commit-by: kongrong Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 将 #4824、#4825、#4826 合并为一个基于最新 cann/runtime:master 的聚合 PR,用于 ApiVmm 类的隔离和拆分验证。 具体变更: - 新增 ApiVmm / ApiImplVmm 抽象与实现、创建器和 Runtime 生命周期接入。 - 将 VMM 相关 C API 从 api_c.cc / api_c_memory.cc 拆到 api_c_vmm.cc 并切换到 ApiVmm 路由。 - ApiImplVmm 直接调用 Runtime 公共能力:CheckDeviceIdIsValid、FillRuntimeMemMngExtInfo;ParseMallocCfg 作为 ApiImplVmm 私有方法保留。 - 不再引入 api_impl_common.hpp、api_profile_utils.hpp 及相关临时 helper。 - arch5162 使用 api_impl_vmm_stub.cc,VMM 接口保持公开符号并返回 not support。 行为等价说明: - 支持产品继续编译并创建真实 ApiImplVmm,C API 签名、参数检查、错误码转换、ErrMsg 上报和 profiling begin/end 逻辑保持原语义。 - ApiProfileDecorator::GetReportProfApiData() 收敛到 Runtime::GetRuntimeReportProfApiData(),内存扩展信息填充统一走 Runtime::FillRuntimeMemMngExtInfo()。 - 原代码注释保留在迁移后的对应位置,例如 VMM handle/deviceId 处理和 ParseMallocCfg 重复属性处理说明。 David 差异化分析: - 本 PR 未修改 api_impl_david.cc、David 专用 API 实现或 David 专用 UT。 - 仅触达通用 v200.cmake 和 runtime_v200/runtime_adapt.cc:前者把通用 api_impl_vmm.cc 纳入 v200/v201 common source,后者补充 Runtime 生命周期中的 apiVmm_ 清空和 DestroyImplVmm。 - 未对 David 专有链路做拆分或裁剪,David 相关能力保持现状。 不包含: - 不继续拆分涉及 David 专有实现的接口。 - 不扩展到 VMM 之外的其他内存管理接口批次。 - 不包含文档文件变更。 ## 涉及 rt/rts 接口 本次 ApiVmm 隔离拆分涉及以下 Runtime VMM C 接口路由调整: - 地址管理:rtReserveMemAddress、rtReleaseMemAddress、rtsMemReserveAddress、rtsMemFreeAddress - 物理内存:rtMallocPhysical、rtFreePhysical、rtsMemMallocPhysical、rtsMemFreePhysical - 映射/访问控制:rtMapMem、rtUnmapMem、rtsMemMap、rtsMemUnmap、rtMemMapNoAccess、rtMemSetAccess、rtMemGetAccess - Shareable Handle:rtMemExportToShareableHandle、rtsMemExportToShareableHandle、rtMemImportFromShareableHandle、rtsMemImportFromShareableHandle、rtMemSetPidToShareableHandle、rtsMemSetPidToShareableHandle - Shareable Handle V2:rtMemExportToShareableHandleV2、rtMemImportFromShareableHandleV2、rtMemSetPidToShareableHandleV2 - VMM 查询/句柄:rtMemGetAllocationGranularity、rtsMemGetAllocationGranularity、rtMemRetainAllocationHandle、rtMemGetAllocationPropertiesFromHandle、rtMemGetAddressRange - 映射链路选择:rtMemMapSelectedLink、rtMemMapSetLink See merge request: cann/runtime!5022 | 9 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 13 天前 | ||
| 13 天前 | ||
| 13 天前 | ||
| 2 天前 | ||
| 2 天前 | ||
| 29 天前 | ||
| 2 天前 | ||
| 2 天前 | ||
| 8 天前 | ||
| 2 天前 | ||
| 8 天前 | ||
| 2 天前 | ||
| 2 天前 | ||
| 3 天前 | ||
| 3 天前 | ||
| 1 个月前 | ||
| 9 天前 | ||
| 2 天前 | ||
| 8 天前 | ||
| 14 天前 | ||
| 16 天前 | ||
| 12 天前 | ||
| 12 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 23 天前 | ||
| 29 天前 | ||
| 10 天前 | ||
| 2 天前 | ||
| 10 天前 | ||
| 10 天前 | ||
| 11 天前 | ||
| 11 天前 | ||
| 12 天前 | ||
| 12 天前 | ||
| 12 天前 | ||
| 13 天前 | ||
| 13 天前 | ||
| 13 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 3 天前 | ||
| 9 天前 | ||
| 12 天前 | ||
| 17 天前 | ||
| 17 天前 | ||
| 3 天前 | ||
| 3 天前 | ||
| 18 天前 | ||
| 2 天前 | ||
| 10 天前 | ||
| 2 天前 | ||
| 10 天前 | ||
| 9 天前 | ||
| 8 天前 | ||
| 1 天前 | ||
| 2 天前 | ||
| 9 天前 |