runtime:基于 CANN 的运行时组件与维测功能项目

本项目提供CANN运行时组件和维测功能组件。

Branch9Tags7
FilesLast commitLast update
【PR】: 增加Runtime架构说明文档 Co-authored-by: tingwood<zhangzijing@huawei.com> # message auto-generated for no-merge-commit merge: !2581 merge master into master 【PR】: 增加Runtime架构说明文档 Created-by: tingwood Commit-by: tingwood Merged-by: cann-robot Description: # Pull Request ## 描述 本次提交增加了Runtime的代码架构说明文档,并增加配套的skills ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue NA ## 如何测试 NA ## 核对清单 <!-- [x] 表示选中 --> - [ ] 我的代码遵循了项目的代码风格 - [ ] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [ ] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!25816 days ago
【PR】: add docker compile in readme Co-authored-by: duanpengliang<duanpengliang@huawei.com> # message auto-generated for no-merge-commit merge: !2205 merge master_fix_bug into master 【PR】: add docker compile in readme Created-by: duanpengliang Commit-by: duanpengliang Merged-by: cann-robot Description: # Pull Request ## 描述 add docker compile in readme ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 根据readme执行docker可以正常安装 ## 核对清单 <!-- [x] 表示选中 --> - [ ] 我的代码遵循了项目的代码风格 - [ ] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [ ] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!220521 days ago
【PR】: feat: add sub_pipline Co-authored-by: duanpengliang<duanpengliang@huawei.com> # message auto-generated for no-merge-commit merge: !2364 merge master_fix_codecheck into master 【PR】: feat: add sub_pipline Created-by: duanpengliang Commit-by: duanpengliang Merged-by: cann-robot Description: # Pull Request ## 描述 增加子流水线配置文件 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 不涉及 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!236414 days ago
[refactor] add runtime code review workflow and guidelines Co-authored-by: wangtao43<wangtao43@huawei.com> # message auto-generated for no-merge-commit merge: !2394 merge feature/runtime-code-review-guidelines into master [refactor] add runtime code review workflow and guidelines Created-by: wangtao43 Commit-by: wangtao43 Merged-by: cann-robot Description: ## 变更概要 - 新增 runtime-code-review 统一代码审查能力,支持本地 diff 与 GitCode PR 审查 - 增加 PR 审查辅助脚本,包括 PR 元信息获取、文件分类、上下文聚合、summary 渲染和评论发布 - 新增并整理 docs/guidelines 下的设计模板、编码规范、UT 代码规范和 DT 指导文档 - 更新 build.sh 与 tests/build_ut.sh,对 docs/guidelines 变更跳过构建 ## 验证 - python3 -m py_compile .claude/skills/runtime-code-review/scripts/*.py - bash -n build.sh - bash -n tests/build_ut.sh - bash -n .claude/skills/default-skills/scripts/install-default-skills.sh - 已对 GitCode PR 2358 / 2362 进行 runtime-code-review 联调验证(前者跑通上下文准备链路,后者正确被 closed 状态跳过) ## 影响范围 - .claude/skills/runtime-code-review/** - docs/guidelines/** - build.sh - tests/build_ut.sh - docs/README.md - .opencode/README.md See merge request: cann/runtime!239411 days ago
【PR】: feat:删除本地ut相关三方件编译脚本,使用中心仓 Co-authored-by: duanpengliang<duanpengliang@huawei.com> # message auto-generated for no-merge-commit merge: !2590 merge master_use_center_cmake into master 【PR】: feat:删除本地ut相关三方件编译脚本,使用中心仓 Created-by: duanpengliang Commit-by: duanpengliang Merged-by: cann-robot Description: # Pull Request ## 描述 删除本地ut相关三方件编译脚本,使用中心仓 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: ubuntu 24.04与20.04都编译、ut无问题 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!25904 hours ago
【PR】: 修改Label相关资料 Co-authored-by: yanmingxiang<yanmingxiang@huawei.com> # message auto-generated for no-merge-commit merge: !2662 merge master into master 【PR】: 修改Label相关资料 Created-by: yanmingxiang Commit-by: yanmingxiang Merged-by: cann-robot Description: # Pull Request ## 描述 请清晰准确地描述本次 Pull Request 的意图和变更内容。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [ ] 我的代码遵循了项目的代码风格 - [ ] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [ ] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!26622 days ago
【PR】: 修改Label相关资料 Co-authored-by: yanmingxiang<yanmingxiang@huawei.com> # message auto-generated for no-merge-commit merge: !2662 merge master into master 【PR】: 修改Label相关资料 Created-by: yanmingxiang Commit-by: yanmingxiang Merged-by: cann-robot Description: # Pull Request ## 描述 请清晰准确地描述本次 Pull Request 的意图和变更内容。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [ ] 我的代码遵循了项目的代码风格 - [ ] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [ ] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!26622 days ago
【PR】: 调整枚举在头文件中的位置 Co-authored-by: Turing_Jason<hw.wenfan@huawei.com> # message auto-generated for no-merge-commit merge: !2643 merge master into master 【PR】: 调整枚举在头文件中的位置 Created-by: Turing_JasonWen Commit-by: Turing_Jason Merged-by: cann-robot Description: ## 描述 调整枚举在头文件中的位置 See merge request: cann/runtime!26433 days ago
feat: runtime_headers中添加头文件搜索路径pkg_inc/aicpu_sched/cpu_kernels Co-authored-by: Feiteng Zheng<zhengfeiteng1@h-partners.com> # message auto-generated for no-merge-commit merge: !2630 merge 20260604-adapt-ge-opbase-superbuild into master feat: runtime_headers中添加头文件搜索路径pkg_inc/aicpu_sched/cpu_kernels Created-by: zhengfeiteng Commit-by: Feiteng Zheng Merged-by: cann-robot Description: # Pull Request ## 描述 runtime_headers中添加头文件搜索路径pkg_inc/aicpu_sched/cpu_kernels。 - 支撑ge多仓联编。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1.对比修改前后runtime包二进制。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!26303 days ago
【PR】: 压缩aclrt接口调用路径 Co-authored-by: s00650514<shiqiong3@huawei.com> Co-authored-by: guo-yanjun<guoyanjun3@huawei.com> # message auto-generated for no-merge-commit merge: !2553 merge aclrt_opt into master 【PR】: 压缩aclrt接口调用路径 Created-by: guo-yanjun Commit-by: guo-yanjun;s00650514 Merged-by: cann-robot Description: # Pull Request ## 描述 当前 aclrt 接口调用链为: ```text libacl_rt.so -> libacl_rt_impl.so -> libruntime.so ``` 该链路跨多个动态库,aclrt接口需要先经过 libacl_rt_impl.so 中转,再进入 libruntime.so 执行真实 runtime 能力,存在额外的动态库间跳转、符号解析和间接调用开销。 因此希望实现 aclrt 压缩 so 能力,将 aclrt*Impl 真实实现下沉并编入 runtime 产物,使主调用链压缩为: ```text libacl_rt.so -> libruntime.so ``` 同时,工具会通过 LD_PRELOAD 劫持 aclrt*Impl 符号进行观测、拦截或调试,因此压缩调用路径时不能直接移除 libacl_rt_impl.so 或破坏其符号兼容性。 此外,aclrt*Impl 实现下沉到 runtime 后,需要重新梳理 dump、profiling、error manager 等组件依赖,避免 runtime 与维测组件之间形成不必要的动态库依赖或循环依赖。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue https://gitcode.com/cann/runtime/issues/493 ## 如何测试 1. 符号面验证 - 使用 nm -D 检查 libacl_rt_impl.so 导出 aclrtSetDeviceImpl 等历史兼容符号。 - 使用 nm -D 检查 libruntime.so / tiny / cmodel runtime 产物导出对应 aclrt*Impl 真实实现符号。 - 使用 readelf -Ws 检查是否存在非预期未定义符号。 - 使用 ldd 检查 runtime/cmodel 产物未因下沉 aclrt_impl 新增非预期 dump/profapi/error_manager 直接依赖。 2. aclrt HLT功能及性能用例验证 3. 工具劫持兼容验证 4. dump callback 验证 5. camodel验证 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!255311 minutes ago
【PR】: 压缩aclrt接口调用路径 Co-authored-by: s00650514<shiqiong3@huawei.com> Co-authored-by: guo-yanjun<guoyanjun3@huawei.com> # message auto-generated for no-merge-commit merge: !2553 merge aclrt_opt into master 【PR】: 压缩aclrt接口调用路径 Created-by: guo-yanjun Commit-by: guo-yanjun;s00650514 Merged-by: cann-robot Description: # Pull Request ## 描述 当前 aclrt 接口调用链为: ```text libacl_rt.so -> libacl_rt_impl.so -> libruntime.so ``` 该链路跨多个动态库,aclrt接口需要先经过 libacl_rt_impl.so 中转,再进入 libruntime.so 执行真实 runtime 能力,存在额外的动态库间跳转、符号解析和间接调用开销。 因此希望实现 aclrt 压缩 so 能力,将 aclrt*Impl 真实实现下沉并编入 runtime 产物,使主调用链压缩为: ```text libacl_rt.so -> libruntime.so ``` 同时,工具会通过 LD_PRELOAD 劫持 aclrt*Impl 符号进行观测、拦截或调试,因此压缩调用路径时不能直接移除 libacl_rt_impl.so 或破坏其符号兼容性。 此外,aclrt*Impl 实现下沉到 runtime 后,需要重新梳理 dump、profiling、error manager 等组件依赖,避免 runtime 与维测组件之间形成不必要的动态库依赖或循环依赖。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue https://gitcode.com/cann/runtime/issues/493 ## 如何测试 1. 符号面验证 - 使用 nm -D 检查 libacl_rt_impl.so 导出 aclrtSetDeviceImpl 等历史兼容符号。 - 使用 nm -D 检查 libruntime.so / tiny / cmodel runtime 产物导出对应 aclrt*Impl 真实实现符号。 - 使用 readelf -Ws 检查是否存在非预期未定义符号。 - 使用 ldd 检查 runtime/cmodel 产物未因下沉 aclrt_impl 新增非预期 dump/profapi/error_manager 直接依赖。 2. aclrt HLT功能及性能用例验证 3. 工具劫持兼容验证 4. dump callback 验证 5. camodel验证 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!255311 minutes ago
【PR】: 为 ACL Runtime API 补齐 C++ 模板封装和函数重载接口 Co-authored-by: ykl999<luyukun1@huawei.com> # message auto-generated for no-merge-commit merge: !1981 merge feat/aclrt-cxx-v2 into master 【PR】: 为 ACL Runtime API 补齐 C++ 模板封装和函数重载接口 Created-by: ykl999 Commit-by: ykl999 Merged-by: cann-robot Description: ## Summary 为 ACL Runtime API 补齐 C++ 模板封装和函数重载接口 ### 新增文件 - include/external/acl/acl_rt_api.h:C++ 扩展头文件,提供 7 个函数重载和 16 个模板函数 ### 修改文件 - stub/gen_stubapi.py:添加过滤逻辑,跳过 C++ 扩展头文件(line 70-71) - tests/ut/acl/testcase/acl_runtime_unittest.cpp:新增 UT 测试用例验证 C++ 接口 ### 设计说明 - acl_rt.h 保持不变(纯 C API) - acl_rt_api.h 新增 C++ 扩展(include acl_rt.h,提供类型安全的模板封装) - C/C++ API 分层设计,架构清晰,符合 CANN 规范 ### 功能特性 **函数重载(简化 API 调用)**: - aclrtMalloc(void** ptr, size_t size) - 自动推导默认内存类型 - aclrtMallocHost(void** ptr, size_t size) - 简化主机内存分配 - aclrtPointerGetAttributes(aclrtPointerAttribute* attr, const void* ptr) - 自动获取内存属性 - aclrtHostRegister(void* ptr, size_t size) - 简化主机内存注册 - aclrtHostUnregister(void* ptr) - 简化主机内存注销 **模板函数(类型安全)**: - aclrtMalloc<T>(T** ptr, size_t size, aclrtMemMallocPolicy policy) - aclrtMallocHost<T>(T** ptr, size_t size) - aclrtMemAllocManaged<T>(T** ptr, size_t size, uint64_t flags) - 支持 void* 自动转换、类型推导、编译期类型检查 ### UT 测试覆盖 - 函数重载测试:验证简化接口正确调用底层 C API - 模板函数测试:验证类型推导、void* 转换、边界检查 - 编译验证:通过 g++ -std=c++11 编译测试 See merge request: cann/runtime!198130 days ago
【PR】: 压缩aclrt接口调用路径 Co-authored-by: s00650514<shiqiong3@huawei.com> Co-authored-by: guo-yanjun<guoyanjun3@huawei.com> # message auto-generated for no-merge-commit merge: !2553 merge aclrt_opt into master 【PR】: 压缩aclrt接口调用路径 Created-by: guo-yanjun Commit-by: guo-yanjun;s00650514 Merged-by: cann-robot Description: # Pull Request ## 描述 当前 aclrt 接口调用链为: ```text libacl_rt.so -> libacl_rt_impl.so -> libruntime.so ``` 该链路跨多个动态库,aclrt接口需要先经过 libacl_rt_impl.so 中转,再进入 libruntime.so 执行真实 runtime 能力,存在额外的动态库间跳转、符号解析和间接调用开销。 因此希望实现 aclrt 压缩 so 能力,将 aclrt*Impl 真实实现下沉并编入 runtime 产物,使主调用链压缩为: ```text libacl_rt.so -> libruntime.so ``` 同时,工具会通过 LD_PRELOAD 劫持 aclrt*Impl 符号进行观测、拦截或调试,因此压缩调用路径时不能直接移除 libacl_rt_impl.so 或破坏其符号兼容性。 此外,aclrt*Impl 实现下沉到 runtime 后,需要重新梳理 dump、profiling、error manager 等组件依赖,避免 runtime 与维测组件之间形成不必要的动态库依赖或循环依赖。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue https://gitcode.com/cann/runtime/issues/493 ## 如何测试 1. 符号面验证 - 使用 nm -D 检查 libacl_rt_impl.so 导出 aclrtSetDeviceImpl 等历史兼容符号。 - 使用 nm -D 检查 libruntime.so / tiny / cmodel runtime 产物导出对应 aclrt*Impl 真实实现符号。 - 使用 readelf -Ws 检查是否存在非预期未定义符号。 - 使用 ldd 检查 runtime/cmodel 产物未因下沉 aclrt_impl 新增非预期 dump/profapi/error_manager 直接依赖。 2. aclrt HLT功能及性能用例验证 3. 工具劫持兼容验证 4. dump callback 验证 5. camodel验证 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!255311 minutes ago
add precommit Co-authored-by: duanpengliang<duanpengliang@huawei.com> # message auto-generated for no-merge-commit merge: !1339 merge master_pre_commit into master add precommit Created-by: duanpengliang Commit-by: duanpengliang Merged-by: cann-robot Description: ## 描述 add precommit for git hook ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/runtime!13392 months ago
[binary]feat: SOMA memory malloc and free async Co-authored-by: yang_pengwei<yangpengwei6@huawei.com> Co-authored-by: t00931625<tangpeixin1@huawei.com> # message auto-generated for no-merge-commit merge: !641 merge br_soma_allocfree into master [binary]feat: SOMA memory malloc and free async Created-by: yang_pengwei Commit-by: t00931625;yang_pengwei Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增异步内存申请释放接口 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/runtime/issues/148 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/runtime!6412 months ago
【PR】: 拼写错误修复 Co-authored-by: chenyiyang18<chenyiyang18@huawei.com> # message auto-generated for no-merge-commit merge: !1846 merge master into master 【PR】: 拼写错误修复 Created-by: cyy010617 Commit-by: chenyiyang18 Merged-by: cann-robot Description: # Pull Request ## 描述 Runtime 拼写错误修复 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 详细修复列表 ### 2.1 acl 目录 (1处) | 文件 | 行号 | 修复内容 | |------|------|---------| | src/acl/acl_tdt_queue/queue_process.cpp | 333 | sucessfully → successfully | | src/acl/acl_tdt_channel/tensor_data_transfer.cpp | 623 | faild → failed | | src/acl/aclrt_impl/context.cpp | 244 | paramete flags → parameter flags | ### 2.2 runtime 目录 (6处) 这里异常分支打印 测试没覆盖 改了过不去门禁 ### 2.3 dfx 目录 (9处) | 文件 | 行号 | 修复内容 | |------|------|---------| | src/dfx/msprof/collector/dvvp/transport/prof_channel.cpp | 83-84 | seperated → separated, shoud → should, seperate → separate | | src/dfx/msprof/collector/dvvp/transport/hash_data.cpp | 262 | seperated → separated | | src/dfx/adump/adump/host/adx_dump_receive.cpp | 25, 42, 61, 70 | sended → sent, deivce → device | | src/dfx/msprof/collector/dvvp/msprofbin/include/running_mode.h | 72 | neccessarySet_ → necessarySet_ | | src/dfx/msprof/collector/dvvp/msprofbin/src/running_mode.cpp | 多处 | neccessarySet_ → necessarySet_, unneccessary → unnecessary | | src/dfx/msprof/collector/dvvp/msprofbin/src/running_mode_closed.cpp | 143 | neccessarySet_ → necessarySet_ | | src/dfx/msprof/collector/dvvp/msprofbin/src/running_mode_open.cpp | 129 | neccessarySet_ → necessarySet_ | | src/dfx/msprof/collector/dvvp/streamio/client/src/sender.cpp | 281 | sended → sent | | src/dfx/msprof/collector/dvvp/adda/impl/ide_daemon_monitor.cpp | 92, 101 | sucess → success | | src/dfx/msprof/collector/dvvp/msprofbin/src/msprof_bin.cpp | 80 | faild → failed | ### 2.4 platform 目录 (4处) | 文件 | 行号 | 修复内容 | |------|------|---------| | src/platform/platform_infos_utils.cpp | 81, 84-85 | resoved_path → resolved_path | | src/platform/platform_infos_def.cpp | 375-387 | instrinsic → intrinsic | | src/platform/platform_info.cpp | 89 | GeInstance → GeInstance (已修复编译错误) | | src/platform/stub/platform_info_stub.cpp | 25 | GeInstance → GeInstance (已修复编译错误) | ### 2.5 mmpa 目录 (38处) __cpluscplus → __cplusplus 注释不影响,不修改 ### 2.6 tsd 目录 (11处) | 文件 | 行号 | 修复内容 | |------|------|---------| | src/tsd/tsdclient/inc/process_mode_manager.h | 74, 133, 375, 389, 403 | capablity → capability, occured → occurred, wheteher → whether, Capabity → Capability, Conct → Connect | | src/tsd/tsdclient/inc/thread_mode_manager.h | 68, 74 | occured → occurred, capablity → capability | | src/tsd/tsdclient/src/process_mode_manager.cpp | 62, 710, 953 | DEFUALT → DEFAULT, GetHdcConctStatus → GetHdcConnectStatus, UseStoredCapabityInfo → UseStoredCapabilityInfo | GetHdcConctStatus → GetHdcConnectStatus 拼写理论上也读的通,不修改 ### 2.7 cmodel_driver 目录 (5处) | 文件 | 行号 | 修复内容 | |------|------|---------| | src/cmodel_driver/driver_impl.h | 25, 31 | Pilling → Piling | | src/cmodel_driver/driver_queue.h | 45, 96, 99 | reprot → report, Handdle → Handle, Triger → Trigger | | src/cmodel_driver/driver_api.c | 294-295 | Handdle → Handle | | src/cmodel_driver/driver_impl.c | 35-36, 146 | Triger → Trigger | | src/cmodel_driver/driver_queue.c | 89, 213 | Handdle → Handle, Triger → Trigger | ### 2.8 其他位置 | 文件 | 行号 | 修复内容 | |------|------|---------| | src/queue_schedule/common/queue_schedule_interface.h | 23 | sucess → success | | src/aicpu_sched/aicpu_schedule/core/operator_kernel/communication/operator_kernel_remote_comm.cpp | 126, 165 | sucess → success | | src/runtime/core/inc/tsch_defines.h | 303 | defination → definition | | src/runtime/core/inc/task/task.hpp | 149, 181 | defination → definition | | src/runtime/core/inc/task/task_info_base.hpp | 305 | defination → definition | | src/runtime/core/inc/task/task_base.hpp | 109 | defination → definition | | src/runtime/core/src/task/task_info/model/model_execute_task.cc | 403 | timout → timeout | | src/dfx/adump/adcore/hdc/hdc_api.h | 70 | timout → timeout | --- ## 三、未修复项 (API 兼容性考虑) 以下拼写错误涉及结构体/类型定义,可能影响 API 兼容性,暂未修复: | 错误 | 正确拼写 | 位置 | 原因 | |------|---------|------|------| | dpuTack | dpuTask | MsprofDpuTrack 结构体字段 | API 字段名 | | pmmComPletionKey | pmmCompletionKey | 类型定义 | API 类型名 | | frequence_ | frequency_ | 多处变量名 | 大量使用,需全面测试 | | lenght | length | 日志字符串 | 少量,可忽略 | | conect | connect | 注释 | 可忽略 | | funtion | function | 注释 | 可忽略 | 顺便修复了一些 printf 格式不匹配的问题; 涉及到一些错误分支的日志打印,测试未覆盖,所以没有修改 See merge request: cann/runtime!18461 month ago
add precommit Co-authored-by: duanpengliang<duanpengliang@huawei.com> # message auto-generated for no-merge-commit merge: !1339 merge master_pre_commit into master add precommit Created-by: duanpengliang Commit-by: duanpengliang Merged-by: cann-robot Description: ## 描述 add precommit for git hook ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/runtime!13392 months ago
docs: 添加 AGENTS.md 和 opencode 配置 Co-authored-by: wangtao43<wangtao43@huawei.com> # message auto-generated for no-merge-commit merge: !1607 merge master into master docs: 添加 AGENTS.md 和 opencode 配置 Created-by: wangtao43 Commit-by: wangtao43 Merged-by: cann-robot Description: ## 概述 为 runtime 项目添加了 AGENTS.md 文件和 opencode 配置,支持 agent 工作流程。 ## 主要变更 ### 新增文件 - **AGENTS.md**: 项目概述、构建命令、目录结构、开发规范 - **.claude/CLAUDE.md**: Agent 提示文件 - **.claude/settings.json**: 权限和插件配置 - **.claude/skills/default-skills/**: 默认 skills 安装配置 - SKILL.md: 技能描述 - scripts/install-default-skills.sh: 安装脚本 - **.opencode/**: opencode 项目配置 - README.md: Agent skills 规划和工作流程 - opencode.json: 插件和权限配置 - plugins/install-default-skills.ts: 自动安装插件 - **.gitignore**: 忽略自动安装的 skills ## 功能说明 这些配置为 runtime 项目提供了 agent 工作支持: - **AGENTS.md**: 为 agent 提供项目工作指导 - **默认 skills**: 自动安装 gitcode-pr 和 gitcode-issue - **opencode 配置**: 定义项目特定的 skills 规划 ## 兼容性 - gitcode-pr 和 gitcode-issue 从公共仓自动安装 - 不在本地仓库维护这些共享 skills - 通过 .gitignore 忽略自动安装的 skills See merge request: cann/runtime!16071 month ago
【PR】: feat:删除本地ut相关三方件编译脚本,使用中心仓 Co-authored-by: duanpengliang<duanpengliang@huawei.com> # message auto-generated for no-merge-commit merge: !2590 merge master_use_center_cmake into master 【PR】: feat:删除本地ut相关三方件编译脚本,使用中心仓 Created-by: duanpengliang Commit-by: duanpengliang Merged-by: cann-robot Description: # Pull Request ## 描述 删除本地ut相关三方件编译脚本,使用中心仓 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: ubuntu 24.04与20.04都编译、ut无问题 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!25904 hours ago
docs: rename guideline files from Chinese to English Co-authored-by: wangtao43<wangtao43@huawei.com> # message auto-generated for no-merge-commit merge: !2466 merge docs/rename-guideline-files into master docs: rename guideline files from Chinese to English Created-by: wangtao43 Commit-by: wangtao43 Merged-by: cann-robot Description: # Pull Request ## 描述 将 docs/guidelines 目录下的中文命名文档改为英文命名,提高国际化可访问性。 变更: - 编码规范.md → coding-convention.md - UT代码规范.md → ut-coding-convention.md ## 变更类型 - [x] 📝 文档内容更新 ## 如何测试 无代码变更,仅文档重命名和引用更新。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签 - [x] 我已经详细阅读了贡献指南 See merge request: cann/runtime!246611 days ago
Initial commit 5 months ago
add pre-smoking Co-authored-by: duanpengliang<duanpengliang@huawei.com> # message auto-generated for no-merge-commit merge: !1421 merge pre_smoking into master add pre-smoking Created-by: duanpengliang Commit-by: duanpengliang Merged-by: cann-robot Description: ## 描述 加前冒烟 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 前冒烟任务可以成功 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/runtime!14211 month ago
Initial commit 5 months ago
【fix】: 优化README.md文档描述 Co-authored-by: perfect_hzy<huzeyong@huawei.com> # message auto-generated for no-merge-commit merge: !2584 merge fix_readme into master 【fix】: 优化README.md文档描述 Created-by: perfect_hzy Commit-by: perfect_hzy Merged-by: cann-robot Description: # Pull Request ## 描述 优化README.md文档描述 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue https://gitcode.com/cann/runtime/issues/468 ## 如何测试 描述测试此变更的步骤和前提条件: 1.按照README.md文档构建编包是否成功 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!25843 days ago
[feat]: Runtime decouple third party openssl Co-authored-by: FengHaozhan<fenghaozhan@huawei.com> # message auto-generated for no-merge-commit merge: !2145 merge delete-openssl into master [feat]: Runtime decouple third party openssl Created-by: FengHaozhan Commit-by: FengHaozhan Merged-by: cann-robot Description: # Pull Request ## 描述 与openssl解耦,删除runtime仓引入的openssl库 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> [#523](https://gitcode.com/cann/runtime/issues/523) ## 如何测试 描述测试此变更的步骤和前提条件: 1.整仓编译正常 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!214520 days ago
[feat]: Runtime decouple third party openssl Co-authored-by: FengHaozhan<fenghaozhan@huawei.com> # message auto-generated for no-merge-commit merge: !2145 merge delete-openssl into master [feat]: Runtime decouple third party openssl Created-by: FengHaozhan Commit-by: FengHaozhan Merged-by: cann-robot Description: # Pull Request ## 描述 与openssl解耦,删除runtime仓引入的openssl库 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> [#523](https://gitcode.com/cann/runtime/issues/523) ## 如何测试 描述测试此变更的步骤和前提条件: 1.整仓编译正常 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!214520 days ago
[refactor] add runtime code review workflow and guidelines Co-authored-by: wangtao43<wangtao43@huawei.com> # message auto-generated for no-merge-commit merge: !2394 merge feature/runtime-code-review-guidelines into master [refactor] add runtime code review workflow and guidelines Created-by: wangtao43 Commit-by: wangtao43 Merged-by: cann-robot Description: ## 变更概要 - 新增 runtime-code-review 统一代码审查能力,支持本地 diff 与 GitCode PR 审查 - 增加 PR 审查辅助脚本,包括 PR 元信息获取、文件分类、上下文聚合、summary 渲染和评论发布 - 新增并整理 docs/guidelines 下的设计模板、编码规范、UT 代码规范和 DT 指导文档 - 更新 build.sh 与 tests/build_ut.sh,对 docs/guidelines 变更跳过构建 ## 验证 - python3 -m py_compile .claude/skills/runtime-code-review/scripts/*.py - bash -n build.sh - bash -n tests/build_ut.sh - bash -n .claude/skills/default-skills/scripts/install-default-skills.sh - 已对 GitCode PR 2358 / 2362 进行 runtime-code-review 联调验证(前者跑通上下文准备链路,后者正确被 closed 状态跳过) ## 影响范围 - .claude/skills/runtime-code-review/** - docs/guidelines/** - build.sh - tests/build_ut.sh - docs/README.md - .opencode/README.md See merge request: cann/runtime!239411 days ago
【PR】: 压缩aclrt接口调用路径 Co-authored-by: s00650514<shiqiong3@huawei.com> Co-authored-by: guo-yanjun<guoyanjun3@huawei.com> # message auto-generated for no-merge-commit merge: !2553 merge aclrt_opt into master 【PR】: 压缩aclrt接口调用路径 Created-by: guo-yanjun Commit-by: guo-yanjun;s00650514 Merged-by: cann-robot Description: # Pull Request ## 描述 当前 aclrt 接口调用链为: ```text libacl_rt.so -> libacl_rt_impl.so -> libruntime.so ``` 该链路跨多个动态库,aclrt接口需要先经过 libacl_rt_impl.so 中转,再进入 libruntime.so 执行真实 runtime 能力,存在额外的动态库间跳转、符号解析和间接调用开销。 因此希望实现 aclrt 压缩 so 能力,将 aclrt*Impl 真实实现下沉并编入 runtime 产物,使主调用链压缩为: ```text libacl_rt.so -> libruntime.so ``` 同时,工具会通过 LD_PRELOAD 劫持 aclrt*Impl 符号进行观测、拦截或调试,因此压缩调用路径时不能直接移除 libacl_rt_impl.so 或破坏其符号兼容性。 此外,aclrt*Impl 实现下沉到 runtime 后,需要重新梳理 dump、profiling、error manager 等组件依赖,避免 runtime 与维测组件之间形成不必要的动态库依赖或循环依赖。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue https://gitcode.com/cann/runtime/issues/493 ## 如何测试 1. 符号面验证 - 使用 nm -D 检查 libacl_rt_impl.so 导出 aclrtSetDeviceImpl 等历史兼容符号。 - 使用 nm -D 检查 libruntime.so / tiny / cmodel runtime 产物导出对应 aclrt*Impl 真实实现符号。 - 使用 readelf -Ws 检查是否存在非预期未定义符号。 - 使用 ldd 检查 runtime/cmodel 产物未因下沉 aclrt_impl 新增非预期 dump/profapi/error_manager 直接依赖。 2. aclrt HLT功能及性能用例验证 3. 工具劫持兼容验证 4. dump callback 验证 5. camodel验证 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!255311 minutes ago
【PR】: fix ssl download error Co-authored-by: duanpengliang<duanpengliang@huawei.com> # message auto-generated for no-merge-commit merge: !2427 merge master_sec into master 【PR】: fix ssl download error Created-by: duanpengliang Commit-by: duanpengliang Merged-by: cann-robot Description: # Pull Request ## 描述 修复下载过程中失败 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 不涉及 ## 如何测试 描述测试此变更的步骤和前提条件: 离线下载成功 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!242712 days ago
[fixbug]环境依赖补增make Co-authored-by: wangzhensheng<wangzhensheng4@huawei.com> # message auto-generated for no-merge-commit merge: !730 merge master into master [fixbug]环境依赖补增make Created-by: wangzhensheng Commit-by: wangzhensheng Merged-by: cann-robot Description: ## 描述 项目编译依赖make,在 install_deps.sh 依赖包安装脚本中补增make的检测及安装。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联issu [#192](https://gitcode.com/cann/runtime/issues/192) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 在无make的环境中,执行该脚本,make能被成功安装,完成项目编译。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了 README.md 文件 中 关于安装依赖的描述。 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/runtime!7302 months ago
【PR】: fix pre-smoking bug && add pre-smoking testcase Co-authored-by: duanpengliang<duanpengliang@huawei.com> # message auto-generated for no-merge-commit merge: !2442 merge master_sec into master 【PR】: fix pre-smoking bug && add pre-smoking testcase Created-by: duanpengliang Commit-by: duanpengliang Merged-by: cann-robot Description: # Pull Request ## 描述 请清晰准确地描述本次 Pull Request 的意图和变更内容。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 流水线pre-smoking任务可以跑成功 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!24429 days ago
使用FetchContent复用工程公共仓代码 Co-authored-by: Feiteng Zheng<zhengfeiteng1@h-partners.com> # message auto-generated for no-merge-commit merge: !1154 merge 20260324-fetch-content into master 使用FetchContent复用工程公共仓代码 Created-by: zhengfeiteng Commit-by: Feiteng Zheng Merged-by: cann-robot Description: ## 描述 使用FetchContent复用工程公共仓代码,删除重复代码。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 已验证修改前后run包二进制一致。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/runtime!11541 month ago

runtime(运行时)

🔥Latest News

  • [2026/4] 支持Ascend 950PR/Ascend 950DT芯片。持续增强AclGraph功能,优化文档结构,提升开发者体验。
  • [2025/12] runtime项目首次上线。

概述

本仓提供CANN运行时组件和维测功能组件。

  • Runtime组件:提供Ascend NPU运行时用户编程接口和运行时核心实现,包括设备管理、流管理、Event管理、内存管理、任务调度等功能。
  • 维测功能组件:包括性能数据采集、模型和算子Dump、日志、错误日志记录等功能。
    • 性能调优(msprof)模块:进行性能调优时,可以使用性能调优工具来采集和分析运行在昇腾AI处理器SoCNPU IP加速器上的AI任务各个运行阶段的关键性能指标,用于可根据输出的性能数据,快速定位软、硬件性能瓶颈,提升AI任务性能分析的效率。
    • 精度调试(adump)模块:提供Ascend NPU运行时用户Dump单算子或模型(每一层算子)的输入/输出数据,用于与指定算子或模型进行对比,定位精度问题;提供Ascend NPU运行异常时Dump异常算子的输入/输出数据、Workspace信息,Tiling信息,用于分析AI Core Error问题。
    • 日志(log)模块:日志提供记录进程执行过程信息的能力,在其他进程运行时,日志的接口提供进程打印和落盘日志的功能,方便系统故障的诊断分析,快速实现问题定位。该模块下的msnpureport为命令行工具,支持导出device侧日志和查询设置device侧状态等功能。

版本配套

本项目源码会跟随CANN软件版本发布,关于CANN软件版本与本项目标签的对应关系请参阅release仓库中的相应版本说明。 请注意,为确保您的源码定制开发顺利进行,请选择配套的CANN版本与Gitcode标签源码,使用master分支可能存在版本不匹配的风险。

目录结构

关键目录结构如下:

├── cmake                                          # 工程编译目录
├── docs                                           # 文档介绍
├── example                                        # 基于acl接口开发的样例代码
├── include                                        # 3.1包整体对外发布的头文件
|   ├── dfx                                        # dfx相关头文件  
|   ├── driver                                     # 驱动相关头文件
|   ├── external                                   # 本仓对外提供的头文件
|   ......
├── pkg_inc                                        # 仓间管控相关头文件 
├── scripts                                        # 辅助构建相关文件
├── src                                            # 所有3.1包内各模块的源代码
|   ├── acl                                        # acl对外api存放目录  
|   ├── dfx                                        # dfx模块目录
|   |   ├── adump                                  # adump模块目录
|   |   ├── log                                    # log模块目录
|   |   ├── msprof                                 # msprof模块目录
|   |   ├── trace                                  # trace模块目录
|   |   ......                                     
|   ├── mmpa                                       # mmpa模块目录
|   ├── runtime                                    # runtime模块目录
|   ......
├── stub                                           # 打桩相关目录
├── tests                                          # UT用例
......
├── CMakeLists.txt                                 # 构建编译配置文件
├── build.sh                                       # 项目工程编译脚本

环境部署

环境安装

手动安装

对于有昇腾设备的开发者,若您想手动搭建昇腾环境,请参考下述步骤。

安装基础依赖

本项目基础依赖如下,请注意版本要求。

  • python >= 3.7.0 (python 3.7 python3.8官方已经EOL,CANN将于2027年3月停止支持,请升级到>= 3.9.0版本)
  • pip3
  • gcc >= 7.3.0, <= 13
  • cmake >= 3.16.0
  • ccache
  • autoconf
  • gperf
  • libtool
  • make
  • libc6-dev/glibc-devel

Ubuntu/Debian操作系统安装命令示例如下:

sudo apt install python3 python3-pip python3-dev gcc-9 g++-9 libc6-dev cmake ccache autoconf gperf libtool libtool-bin make

CentOS/EulerOS操作系统安装命令示例如下:

sudo yum install python3 python3-pip python3-devel gcc gcc-c++ glibc-devel cmake ccache autoconf gperf libtool make
安装软件
  • 场景1:体验master版本能力或基于master版本进行开发

    1. 安装驱动与固件(可选,仅运行样例依赖)

      若仅编译runtime包,可跳过本操作步骤。运行runtime样例时须安装驱动与固件。

      下载和安装操作请参考《CANN软件安装指南》中“准备软件包”和“安装NPU驱动和固件”章节。

    2. 安装CANN包

      请单击下载链接,选择最新时间版本,并根据产品型号和环境架构下载对应包。安装命令如下,更多指导参考《CANN软件安装指南》。

      • 安装CANN toolkit包

        # 确保安装包具有可执行权限
        chmod +x Ascend-cann-toolkit_${cann_version}_linux-${arch}.run
        # 安装命令
        ./Ascend-cann-toolkit_${cann_version}_linux-${arch}.run --install --install-path=${install_path}
        
        • ${cann_version}:表示CANN包版本号。
        • ${arch}:表示CPU架构,如aarch64x86_64
        • ${install_path}:表示指定安装路径,需要与Toolkit包安装在相同路径,root用户默认安装在/usr/local/Ascend目录。
      • 安装CANN ops算子包(可选,仅运行样例依赖)。

        若仅编译runtime包,可跳过本操作步骤。运行runtime样例时须安装CANN ops算子包。

        # 确保安装包具有可执行权限
        chmod +x Ascend-cann-${soc_name}-ops_${cann_version}_linux-${arch}.run
        # 安装命令
        ./Ascend-cann-${soc_name}-ops_${cann_version}_linux-${arch}.run --install --install-path=${install_path}
        
        • ${soc_name}表示NPU型号名称。

          产品 soc_name
          Atlas A2 训练系列产品/Atlas A2 推理系列产品 910b
          Atlas A3 训练系列产品/Atlas A3 推理系列产品 A3
          Ascend 950PR/Ascend 950DT产品 950
  • 场景2:体验已发布版本能力或基于已发布版本进行开发

    请访问CANN官网下载中心,选择发布版本(仅支持CANN 8.5.0及后续版本)、产品型号和环境架构,参考CANN 快速安装指导完成安装。

环境验证

安装完CANN包后,需验证环境和驱动是否正常。

  • 检查NPU设备

    # 运行npu-smi,若能正常显示设备信息,则驱动正常
    npu-smi info
    
  • 检查CANN版本

      # 查看CANN Toolkit开发套件包的version字段提供的版本信息(默认路径安装),<arch>表示CPU架构(aarch64或x86_64)。
      cat /usr/local/Ascend/cann/<arch>-linux/ascend_toolkit_install.info
      # 查看CANN ops包版本信息(默认路径安装)
      cat /usr/local/Ascend/cann/${arch}-linux/ascend_ops_install.info
    

源码构建

本项目支持源码构建,编译运行前需参考以上步骤完成环境部署。

源码构建可选择如下方式:

  • 本机源码构建:参考下文“下载源码”、“环境变量配置”和“编译runtime包”章节执行构建。
  • Docker源码构建:参考.devcontainer/README.md,在容器内完成源码构建。

下载源码

```bash
# 下载项目源码,以master分支为例
git clone https://gitcode.com/cann/runtime.git
```

环境变量配置

按需选择合适的命令使环境变量生效。

# 默认路径安装,以root用户为例(非root用户,将/usr/local替换为${HOME})
source /usr/local/Ascend/cann/set_env.sh
# 指定路径安装
source ${install_path}/cann/set_env.sh

编译runtime包

若您的编译环境可以访问网络,编译过程中将自动下载开源第三方软件,可以使用如下命令进行编译:

bash build.sh

若您的编译环境无法访问网络,可以直接调用脚本获取开源组件压缩包,脚本将自动下载至当前新建的 third_party 目录中:

python download_3rd_party.py

下载完成后,可以使用如下命令进行编译:

bash build.sh --cann_3rd_lib_path=third_party

更多编译参数可以通过bash build.sh -h查看。

编译完成之后会在build_out目录下生成cann-npu-runtime_<version>_linux-<arch>.run软件包。 <version>表示版本号。 <arch>表示操作系统架构,取值包括x86_64与aarch64。

开源第三方软件依赖

runtime在编译时,依赖的第三方开源软件列表如下:

开源软件 版本 下载地址
abseil-cpp 20230802.1 abseil-cpp-20230802.1.tar.gz
acl-compat (x86_64) 9.1.0 acl-compat_9.1.0_linux-x86_64.tar.gz
acl-compat (aarch64) 9.1.0 acl-compat_9.1.0_linux-aarch64.tar.gz
boost 1.87.0 boost_1_87_0.tar.gz
eigen 5.0.0 eigen-5.0.0.tar.gz
googletest 1.14.0 googletest-1.14.0.tar.gz
json 3.11.3 include.zip
libboundscheck 1.1.16 libboundscheck-v1.1.16.tar.gz
libseccomp 2.5.4 libseccomp-2.5.4.tar.gz
mockcpp 2.7-h5 mockcpp-2.7.tar.gz
mockcpp_patch 2.7-h5 mockcpp-2.7-h5.patch
protobuf 25.1 protobuf-25.1.tar.gz
makeself 2.5.0 makeself-release-2.5.0-patch1.tar.gz
cann-cmake master-023 cmake-master-023.tar.gz

注意

如果您从其他地址下载,请确保版本号一致。

安装runtime包

执行如下命令安装编译生成的runtime软件包。

./cann-npu-runtime_<version>_linux-<arch>.run --full --install-path=${install_path}
  • ${version}:表示run包版本号。
  • ${arch}:表示CPU架构,如aarch64、x86_64。
  • ${install_path}:表示指定安装路径,可选,默认安装在/usr/local/Ascend目录。

安装完成之后,用户编译生成的Runtime软件包会替换已安装CANN开发套件包中的Runtime相关软件。

本地验证

编译完成后,用户可以进行开发测试,验证项目功能是否正常,本节将介绍如何做单元测试(UT: Unit Testing)。

说明: 执行 UT 用例依赖 googletest 单元测试框架,详细介绍参见 googletest 官网

编译执行UT测试用例:

bash tests/build_ut.sh --ut=acl --target=ascendcl_utest -c --cann_3rd_lib_path={your_3rd_party_path}

其中,{your_3rd_party_path}必须为绝对路径。

指定测试模块

通过--ut指定模块名称,上述示例中指定的模块名称为acl

runtime仓中的UT用例按模块分类归档在tests/ut/的不同目录下,所有模块名称以及和用例路径的映射关系可以查询tests/build_ut.sh中的ut_path_map,例如:acl模块的UTtests/ut/acl下,runtime模块的UTtests/ut/runtime/runtime下。

指定测试目标文件

通过--target指定待测用例编译出的具体目标文件。

各个模块所包含的目标文件可以从对应模块的CMakeLists.txt文件中查看。例如对于acl,从tests/ut/acl/CMakeLists.txt中的add_custom_target可以看出将编译目标命名为ascendcl_utest,并且包含了ascendcl_c_utestascendcl_cpp_utest两个目标文件。上述示例中通过指定targetascendcl_utest表示编译执行acl模块中的所有用例。也可以指定具体的目标文件进行编译执行(可以同时指定多个,用空格分隔)。

其他编译参数

通过-c可以获取覆盖率,如无需获取覆盖率,可省略此参数。

需先安装 lcov(Ubuntu / Debian:sudo apt install lcov;openEuler:sudo dnf install lcov);若因版本差异报错,请按提示调整脚本参数。

通过--asan可以启用AddressSanitizer进行内存错误检测,如无需启用,可省略此参数。

AddressSanitizer通常不需要单独安装,已集成在gcc中。如需单独安装asan,请确保与gcc版本兼容,例如gcc 9.5.0匹配libasan6版本。

通过--cann_3rd_lib_path指定第三方依赖的路径,若在联网环境中,可省略此参数。

更加详细的编译命令参数可以通过bash tests/build_ut.sh -h查看。

UT测试用例编译的过程件以及产物位于outputbuild下,如果想清除历史编译记录,可以执行如下操作:

rm -rf output/ build/

接下来可参考example目录下的样例,进一步了解本仓

学习教程

Runtime提供了开发指南、API参考,详细可参见 Runtime 参考资料

相关信息

Introduction

本项目提供CANN运行时组件和维测功能组件。

Customize my domain