| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
【PR】:新增 ACL 引用计数插件生命周期样例 Co-authored-by: 2403_89963296<2540257541@qq.com> # message auto-generated for no-merge-commit merge: !4840 merge 新增用例-0_quickstart/5_runtime_lifecycle_callbacks/0_reference_counted_plugin_lifecycle into master 【PR】:新增 ACL 引用计数插件生命周期样例 Created-by: 2403_89963296 Commit-by: 2403_89963296 Merged-by: cann-robot Description: # Pull Request ## 描述 在 example/0_quickstart/5_runtime_lifecycle_callbacks/ 下新增 0_reference_counted_plugin_lifecycle 样例。 样例展示 ACL 初始化与去初始化回调的注册、注销和触发过程,并通过 aclFinalizeReference 验证引用计数归零后的去初始化行为。同时完成 Device 0 设置与查询、异常路径清理以及最终业务不变量校验。 ## 变更类型 - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 如何测试 测试环境:Atlas A3 单 Device 环境。 1. 执行 source ${install_root}/set_env.sh。 2. 执行 source ${git_clone_path}/example/set_sample_env.sh。 3. 进入样例目录并执行 bash run.sh。 4. 确认有效初始化和去初始化回调各执行一次,已注销回调均未执行。 5. 确认 Device 0 设置成功、最终引用计数为 0,并输出样例成功标记。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读并遵守贡献指南 ## 其他信息 样例涉及的生命周期接口静态支持 Atlas A2、Atlas A3 和 Ascend 950 系列产品,当前样例 README 记录已在 Atlas A3, A5 单 Device 环境完成实机验证。 See merge request: cann/runtime!4840 | 5 天前 | |
【PR】: 新增 Event 等待状态与超时诊断样例 Co-authored-by: 2403_89963296<2540257541@qq.com> # message auto-generated for no-merge-commit merge: !4929 merge example/1_basic_features/event/2_event_wait_diagnostics into master 【PR】: 新增 Event 等待状态与超时诊断样例 Created-by: 2403_89963296 Commit-by: 2403_89963296 Merged-by: cann-robot Description: # Pull Request ## 描述 新增 example/1_basic_features/event/2_event_wait_diagnostics 样例,演示单 Device 应用中生产者 Stream 与消费者 Stream 通过普通 Event 建立任务依赖并诊断等待过程。 主要变更如下: 1. 查询普通 Event 创建前后的可用数量,并在首次 Record 后获取 Event ID。 2. 生产者 Stream 执行 value += 1 的耗时任务并 Record Event;消费者 Stream 使用 5 秒有限超时等待该 Event。 3. 分别在消费者同步前后查询等待状态,验证其从 NOT_READY 迁移为 COMPLETE。 4. 消费者执行依赖任务 value *= 2,校验最终结果为 2,形成任务依赖验证闭环。 5. 补充 CMake 构建配置、自动化运行脚本、中英文 README,并更新 Event 样例中英文导航。 6. 正常路径按顺序释放资源,异常路径使用强制 Stream/Device 清理接口回收已创建资源。 ## 变更类型 - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 如何测试 测试环境: - CANN:9.2.0-weekly.20260909.01 - SoC:Ascend910_9362 - 编译器:GCC/G++ 13.3.0 测试步骤: 1. 进入 example/1_basic_features/event/2_event_wait_diagnostics 目录。 2. 执行 bash run.sh,完成环境解析、CMake 配置、编译和运行。 3. 检查脚本退出码和输出日志。 测试结果: - CMake 配置及编译成功,样例进程正常退出。 - Event 创建前后的可用数量均为 65536,符合普通 Event 可能在首次 Record 时申请底层资源的预期。 - 首次 Record 后成功获取 Event ID 0。 - 消费者同步前等待状态为 NOT_READY,同步后为 COMPLETE。 - 最终输出为 2,与预期一致。 - 脚本输出 [SUCCESS] Event wait diagnostics sample executed successfully.。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - 普通 Event 的底层资源可能在首次 Record 时才实际申请,因此样例只展示创建前后的 Event 可用数量,不断言其必须减少一个。 - Event 必须通过 aclrtCreateEvent 创建,不能替换为 aclrtCreateEventExWithFlag,以保证样例覆盖普通 Event 的行为。 See merge request: cann/runtime!4929 | 1 天前 | |
【PR】: 新增可复用 Kernel 参数用户内存样例 Co-authored-by: 2403_89963296<2540257541@qq.com> # message auto-generated for no-merge-commit merge: !4953 merge example/2_advanced_features/kernel/8_reusable_kernel_args into master 【PR】: 新增可复用 Kernel 参数用户内存样例 Created-by: 2403_89963296 Commit-by: 2403_89963296 Merged-by: cann-robot Description: # Pull Request ## 描述 新增 8_reusable_kernel_args 样例,展示在单 Device 场景下由用户管理 Kernel 参数内存并复用参数列表的完整流程。 主要变更如下: - 根据核函数句柄查询参数列表句柄区和参数数据区所需大小,并申请对应的 Host 内存。 - 使用 aclrtKernelArgsInitByUserMem 初始化参数列表,通过 aclrtKernelArgsAppend 追加输出地址和标量参数。 - 保留标量参数句柄,首次下发并校验输出为 7 后,通过 aclrtKernelArgsParaUpdate 将参数更新为 23,复用同一参数列表再次下发并校验结果。 - 完善异常返回和资源清理流程,确保 Stream、Device 内存、Host 内存及 Runtime 资源均被释放。 - 增加中英文 README、CMake 构建脚本、运行脚本及 Kernel 样例导航入口。 ## 变更类型 - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 如何测试 前提条件:已安装支持样例所用 Kernel 参数接口的 CANN 软件,并已配置可用的 Ascend Device。 1. 设置环境变量。 bash source ${install_root}/set_env.sh source ${git_clone_path}/example/set_sample_env.sh 2. 编译并运行样例。 bash cd ${git_clone_path}/example/2_advanced_features/kernel/8_reusable_kernel_args bash run.sh 3. 检查输出,确认首次下发结果为 7、参数更新后第二次下发结果为 23,且程序打印运行成功信息并返回 0。 测试结果: - Atlas A3 单 Device 实机编译、运行通过,两个输出值均符合预期。 - Atlas A2 与 Ascend 950PR/Ascend 950DT 交叉构建通过。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - 样例使用查询结果申请参数内存,不依赖固定缓冲区大小。 - 参数列表句柄区和参数数据区均由用户管理,并在 Stream 销毁后释放。 - 本 PR 已基于最新主线完成 rebase,中英文 Kernel 样例导航同时保留 7_binary_introspection 和 8_reusable_kernel_args。 See merge request: cann/runtime!4953 | 1 天前 | |
【PR】: 新增 CMO 预取策略对比样例 Co-authored-by: 2403_89963296<2540257541@qq.com> # message auto-generated for no-merge-commit merge: !4847 merge 新增用例-example/3_memory_advanced/cache_maintenance/0_prefetch_strategy_comparison into master 【PR】: 新增 CMO 预取策略对比样例 Created-by: 2403_89963296 Commit-by: 2403_89963296 Merged-by: cann-robot Description: # Pull Request ## 描述 在 example/3_memory_advanced/cache_maintenance/ 下新增 0_prefetch_strategy_comparison 样例。 样例分别使用 aclrtCmoAsync 和 aclrtCmoAsyncWithDesc 对等价工作集执行直接预取与描述符式预取。描述符路径覆盖描述符大小查询、配置,以及持久化 Stream 与最小 Model RI 的构建执行流程。 两条路径运行相同的 Ascend C Kernel,并逐元素验证 256 个结果均符合 output = input * 3 + 7 且完全一致。同时补充中英文说明文档、构建运行脚本及目录导航。 ## 变更类型 - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue 关联 [#964](https://gitcode.com/cann/runtime/issues/964)。 ## 如何测试 测试环境:Atlas A3 单 Device,已安装对应版本 CANN Toolkit。 1. 加载 CANN 和样例环境变量。 2. 进入样例目录并执行 bash run.sh。 3. 确认样例编译成功、进程返回值为 0,并输出: Verified 256 elements: direct and descriptor prefetch results are identical and correct. ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 样例支持 Atlas A2、Atlas A3 和 Ascend 950PR/Ascend 950DT。 See merge request: cann/runtime!4847 | 5 天前 | |
【PR】: feat:remove all exclude Co-authored-by: duanpengliang<duanpengliang@huawei.com> # message auto-generated for no-merge-commit merge: !4195 merge master_precommit into master 【PR】: feat:remove all exclude Created-by: duanpengliang Commit-by: duanpengliang Merged-by: cann-robot Description: # Pull Request ## 描述 pre-commit example scripts docs,并把这些目录pre-commit排除项给去掉 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 pre-commit readme docs无新增文件 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!4195 | 1 个月前 | |
fix: runtime仓的前冒烟建议可以把example里面的用例跑下,确保构建后示例用例可以通过 (#900) Co-authored-by: zhangjie<zhangjie230@huawei.com> # message auto-generated for no-merge-commit merge: !4933 merge fix-issue-900 into master fix: runtime仓的前冒烟建议可以把example里面的用例跑下,确保构建后示例用例可以通过 (#900) Created-by: newstarzj Commit-by: zhangjie Merged-by: cann-robot Description: ## 描述 - 修复摘要: runtime仓的前冒烟建议可以把example里面的用例跑下,确保构建后示例用例可以通过 - 变更文件: - example/5_performance/README.md - example/5_performance/README_en.md - example/5_performance/adump/0_adump_args/CMakeLists.txt - example/5_performance/adump/1_adump_callback/CMakeLists.txt - example/5_performance/adump/2_model_dump_config/CMakeLists.txt - example/5_performance/adump/3_save_exception_info/CMakeLists.txt - example/5_performance/adump/3_save_exception_info/main.cpp - example/5_performance/adump/README.md - example/5_performance/adump/README_en.md - example/5_performance/adump/run.sh - example/5_performance/log/0_acl_log/CMakeLists.txt - example/5_performance/log/0_acl_log/README.md - example/5_performance/log/0_acl_log/README_en.md - example/5_performance/log/0_acl_log/main.cpp - example/5_performance/log/CMakeLists.txt - example/5_performance/log/README.md - example/5_performance/log/README_en.md - example/5_performance/log/run.sh - example/5_performance/profiling/README.md - example/5_performance/profiling/README_en.md - example/5_performance/profiling/run.sh ### Diff 摘要 text (no diff stat) ## 变更类型 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## 关联的Issue https://gitcode.com/cann/runtime/issues/900 ## 如何测试 - 测试结论: PASS - 检测到代码变更文件 12 个: .gitignore, example/5_performance/README.md, example/5_performance/README_en.md, example/5_performance/adump/0_adump_args/CMakeLists.txt, example/5_performance/adump/1_adump_callback/CMakeLists.txt, example/5_performance/adump/2_model_dump_config/CMakeLists.txt, example/5_performance/adump/3_save_exception_info/CMakeLists.txt, example/5_performance/adump/3_save_exception_info/main.cpp ## 核对清单 <!-- [x] 表示选中 --> - [ ] 我的代码遵循了项目的代码风格 - [ ] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [ ] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 ## 风险和遗留问题 - 测试日志未包含明确通过信号 - 测试日志未能映射到 plan 测试计划中的关键输入或命令 See merge request: cann/runtime!4933 | 2 天前 | |
【PR】: 新增模型任务回退执行样例 Co-authored-by: 2403_89963296<2540257541@qq.com> # message auto-generated for no-merge-commit merge: !4843 merge 新增用例-example/6_scenarios/fault_tolerant_exec/0_model_task_fallback into master 【PR】: 新增模型任务回退执行样例 Created-by: 2403_89963296 Commit-by: 2403_89963296 Merged-by: cann-robot Description: # Pull Request ## 描述 新增 0_model_task_fallback 模型任务回退执行样例: - 捕获主计算任务和可选后处理任务,并验证完整执行路径。 - 查询模型中的 Stream 和任务,识别主任务及可选任务。 - 将主任务切换至备用输入,并禁用可选后处理任务。 - 更新模型后再次执行,验证主输出来自备用输入且可选输出保持哨兵值。 - 新增样例 CMake、运行脚本及中英文 README。 - 更新 fault_tolerant_exec 中英文样例目录导航。 ## 变更类型 - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 如何测试 1. 准备支持的 Ascend NPU 环境并设置 CANN 环境变量: ```bash source ${install_root}/set_env.sh source example/set_sample_env.sh See merge request: cann/runtime!4843 | 5 天前 | |
feat: 完善 0_quickstart 示例的 CANN 环境自动探测 Co-authored-by: weixin_51634168<2082464740@qq.com> Co-authored-by: gitcode-bot<noreply@gitcode.com> # message auto-generated for no-merge-commit merge: !3672 merge master into master feat: 完善 0_quickstart 示例的 CANN 环境自动探测 Created-by: weixin_51634168 Commit-by: chenyang;gitcode-bot;weixin_51634168 Merged-by: cann-robot Description: ## 完善 0_quickstart 示例的 CANN 环境自动探测 ### 概述 在 example/0_quickstart 下继续补齐 CANN 环境自动探测能力,覆盖此前未改造的剩余示例。根据各示例对环境变量的实际需求,分别采用轻量的 example/common/resolve_cann_env.sh 或功能完整的 example/set_sample_env.sh,避免用户手动配置 ASCEND_INSTALL_PATH/SOC_VERSION/ASCENDC_CMAKE_DIR。 同时增强公共脚本 example/common/resolve_cann_env.sh 的安装路径覆盖范围,使其与 example/set_sample_env.sh 保持一致的候选目录。 ### 变更内容 #### 1. 增强 example/common/resolve_cann_env.sh 在候选路径列表中新增 ascend-toolkit/latest 布局,覆盖更多昇腾开发板与容器安装场景: - $HOME/Ascend/ascend-toolkit/latest - /usr/local/Ascend/ascend-toolkit/latest #### 2. 改造 example/0_quickstart/3_cross_version/0_runtime_compatibility/run.sh - 移除对 ASCEND_HOME_PATH 必须手动设置的硬性要求 - 复用 example/common/resolve_cann_env.sh 自动探测 ASCEND_INSTALL_PATH - 探测失败时给出清晰错误提示 #### 3. 改造 example/0_quickstart/4_custom_kernel_launch/run.sh - 该示例编译 AscendC 自定义算子,需要 ASCEND_INSTALL_PATH、SOC_VERSION、ASCENDC_CMAKE_DIR 三个变量 - 直接 source example/set_sample_env.sh 一次性完成全部环境检测 - 保留对 SOC_VERSION、ASCENDC_CMAKE_DIR 及 ascendc.cmake 存在性的校验 ### 设计思路 | 示例 | 所需环境变量 | 采用方案 | 思路 | |---|---|---|---| | 0_hello_cann | ASCEND_INSTALL_PATH | resolve_cann_env.sh | 仅需 CANN 路径,避免 set_sample_env.sh 编译 helper 的开销 | | 1_error_handling | ASCEND_INSTALL_PATH | resolve_cann_env.sh | 同上 | | 2_system_info | ASCEND_INSTALL_PATH | resolve_cann_env.sh | 同上 | | 3_cross_version/0_runtime_compatibility | ASCEND_INSTALL_PATH | resolve_cann_env.sh | 同上 | | 4_custom_kernel_launch | ASCEND_INSTALL_PATH + SOC_VERSION + ASCENDC_CMAKE_DIR | 直接 source set_sample_env.sh | 一次性完成三项检测 | ### 使用场景 - **昇腾开发板** - **容器/云服务器** - **多环境切换** --- ## 变更类型 - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 如何测试 ```bash cd example/0_quickstart/3_cross_version/0_runtime_compatibility ./run.sh cd example/0_quickstart/4_custom_kernel_launch ./run.sh See merge request: cann/runtime!3672 | 1 个月前 | |
【PR】: runtime support launch blocking Co-authored-by: nevermore_t<tianjingxuan2@huawei.com> Co-authored-by: x00508183<xiachanglin@huawei.com> Co-authored-by: jiaxingru<jiaxingru1@huawei.com> # message auto-generated for no-merge-commit merge: !4247 merge feature/launch-blocking into master 【PR】: runtime support launch blocking Created-by: xiachanglin Commit-by: x00508183;jiaxingru;nevermore_t Merged-by: cann-robot Description: # Pull Request ## 描述 本需求提供一种面向调试场景的 blocking launch 能力,使用户在启动程序前设置环境变量后,Runtime 将纳入范围的 kernel/model launch 从“下发后立即返回”改为“下发后等待执行完成再返回”。这样执行错误在当前 launch API 返回,帮助用户定位问题算子。 新增环境变量: ASCEND_RT_LAUNCH_BLOCKING,默认不打开该环境变量时,Runtime 保持原有异步 launch 行为。当 ASCEND_RT_LAUNCH_BLOCKING=1 Runtime 对纳入范围的 kernel/model launch 执行做如下增强: 1. 先按原有流程完成任务下发。 2. 如果任务下发失败,直接返回原 launch 错误,不额外同步。 3. 如果任务下发成功,根据 stream 状态、no-blocking 逃生状态和环境变量判断是否需要同步。 4. 需要同步时,等待该 stream 当前已下发任务执行完成,再从当前 launch API 返回。 该功能的目标是调试定位。 涉及API: aclrtLaunchKernel、aclrtLaunchKernelWithConfig、aclrtLaunchKernelV2 aclrtLaunchKernelWithHostArgs、aclrtLaunchKernelWithArgsArray 、aclrtLaunchSIMTKernelWithArgsArray、aclrtLaunchSIMTKernelWithHostArgs aclmdlRIExecuteAsync ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> https://gitcode.com/cann/runtime/issues/921 ## 如何测试 描述测试此变更的步骤和前提条件: 1. UT 2. ST 3. rdv ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!4247 | 8 天前 | |
【PR】: feat:remove all exclude Co-authored-by: duanpengliang<duanpengliang@huawei.com> # message auto-generated for no-merge-commit merge: !4195 merge master_precommit into master 【PR】: feat:remove all exclude Created-by: duanpengliang Commit-by: duanpengliang Merged-by: cann-robot Description: # Pull Request ## 描述 pre-commit example scripts docs,并把这些目录pre-commit排除项给去掉 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 pre-commit readme docs无新增文件 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!4195 | 1 个月前 | |
Initial commit | 8 个月前 | |
【PR】:优化 Runtime 样例可执行性与文档一致性 Co-authored-by: shi-qiong<shiqiong3@huawei.com> # message auto-generated for no-merge-commit merge: !3236 merge feature/runtime-example-usability-fixes into master 【PR】:优化 Runtime 样例可执行性与文档一致性 Created-by: shi-qiong Commit-by: shi-qiong Merged-by: cann-robot Description: # Pull Request ## 描述 本次 PR 主要优化 Runtime example 的文档一致性、运行步骤完整性和自动化执行友好性,降低样例运行和评估过程中的误判风险。 | 编号 | 级别 | 描述 | 建议 | |------|------|------|------| | 1 | 严重 | 5_performance/profiling/3_mstx_with_domain/README.md 疑似从 toolkit 仓错误搬运:引用 sample_run.sh(实际为 run.sh)、安装路径指向 /usr/local/Ascend/ascend-toolkit/8.x.x/tools/mstx/samples、表格链接 ./mstx_with_domain 子目录不存在(实际为同级 cpp 文件),与 CMakeLists.txt+run.sh 工程结构不符 | 按本仓实际工程结构重写该 README,对齐全仓统一的"编译运行"小节格式 | | 2 | 一般 | 4 处失败链接:4_reliability/README.md→snapshot/(目录缺失)、4_reliability/fault_tolerant/README.md→../snapshot/、2_advanced_features/notify/README.md→2_cntnotify(目录缺失)、3_mstx_with_domain 表格链接 | 删除失效链接,或补齐对应目录/用例 | | 3 | 一般 | 31 个用例 README 环境配置步骤不完整:2/3/4/5 模块普遍改用手动 export SOC_VERSION,未提及 set_sample_env.sh,与 1_basic_features(全部使用 set_sample_env.sh)方案并存,文档体系不统一 | 全仓统一环境配置方式,推荐统一采用 source set_sample_env.sh 并在所有用例 README 写全 4 步骤 | | 4 | 一般 | 设备复位接口不一致:ipcevent/0_ipcevent、ipcevent/1_ipcevent_multi_device 使用 aclrtResetDevice,其余 50 个用例统一使用 aclrtResetDeviceForce | 统一为 aclrtResetDeviceForce 或在 README 注明差异原因 | | 5 | 一般 | 10 个 memory 用例的示例输出夹带伪版本号 CANN Version: 1.0.0, TimeStamp: ...,与真实 CANN 版本(9.1.0)不符,且位置不统一 | 清理示例输出中的占位版本号 | | 6 | 提示 | ipcevent/1_ipcevent_multi_device 在设备数不足时 exit 1,易被自动化框架误判为 FAIL | 启动前调用 aclrtGetDeviceCount 预检,不满足时优雅退出(exit 0 + SKIP 提示) | | 7 | 提示 | 22 个 advanced/performance 用例缺少「示例输出」小节 | 补充各用例的预期运行输出 | | 8 | 提示 | 0_quickstart/0_hello_cann README 文字"快速入门示示例"("示例"重复);stream/0_simple_stream 输出"beging assigning task"拼写错误 | 修正文字笔误 | | 9 | 提示 | 产品支持表口径不一致:quickstart/1_basic_features 含"Ascend 950PR/950DT",2/3/4/5 仅列 Atlas A3/A2,差异未说明 | 统一产品支持表口径或补注差异原因 | 主要变更包括: - 修正部分 README 中错误链接、错误脚本名、错误路径和示例表格链接。 - 统一部分 advanced/performance 样例的环境配置说明,补充 set_sample_env.sh 使用方式。 - 为缺少示例输出的样例补充「示例输出」小节。 - 移除 memory 样例输出中的伪 CANN 版本号。 - 修复 quickstart/stream 文档与输出中的文字拼写问题。 - 为 ipcevent/1_ipcevent_multi_device 增加设备数预检,设备不足时以 SKIP 方式优雅退出,避免自动化框架误判为 FAIL。 - 补充产品支持表说明和 Device 复位接口使用约定。 - 调整 3_mstx_with_domain 样例 README、run.sh 和代码,使其与实际工程结构一致。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue 无。 ## 如何测试 描述测试此变更的步骤和前提条件: 1. 执行 git diff --check,确认无空白格式问题。 2. 执行修改后的样例验证,确认 3_mstx_with_domain 可正常编译运行。 3. 执行 ipcevent/1_ipcevent_multi_device,在设备数不足场景下确认输出 SKIP 提示并返回 0。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 本次修改聚焦 Runtime example 易用性整改,未包含本地评估报告目录和辅助 skill 目录。 See merge request: cann/runtime!3236 | 2 个月前 | |
【PR】:优化 Runtime 样例可执行性与文档一致性 Co-authored-by: shi-qiong<shiqiong3@huawei.com> # message auto-generated for no-merge-commit merge: !3236 merge feature/runtime-example-usability-fixes into master 【PR】:优化 Runtime 样例可执行性与文档一致性 Created-by: shi-qiong Commit-by: shi-qiong Merged-by: cann-robot Description: # Pull Request ## 描述 本次 PR 主要优化 Runtime example 的文档一致性、运行步骤完整性和自动化执行友好性,降低样例运行和评估过程中的误判风险。 | 编号 | 级别 | 描述 | 建议 | |------|------|------|------| | 1 | 严重 | 5_performance/profiling/3_mstx_with_domain/README.md 疑似从 toolkit 仓错误搬运:引用 sample_run.sh(实际为 run.sh)、安装路径指向 /usr/local/Ascend/ascend-toolkit/8.x.x/tools/mstx/samples、表格链接 ./mstx_with_domain 子目录不存在(实际为同级 cpp 文件),与 CMakeLists.txt+run.sh 工程结构不符 | 按本仓实际工程结构重写该 README,对齐全仓统一的"编译运行"小节格式 | | 2 | 一般 | 4 处失败链接:4_reliability/README.md→snapshot/(目录缺失)、4_reliability/fault_tolerant/README.md→../snapshot/、2_advanced_features/notify/README.md→2_cntnotify(目录缺失)、3_mstx_with_domain 表格链接 | 删除失效链接,或补齐对应目录/用例 | | 3 | 一般 | 31 个用例 README 环境配置步骤不完整:2/3/4/5 模块普遍改用手动 export SOC_VERSION,未提及 set_sample_env.sh,与 1_basic_features(全部使用 set_sample_env.sh)方案并存,文档体系不统一 | 全仓统一环境配置方式,推荐统一采用 source set_sample_env.sh 并在所有用例 README 写全 4 步骤 | | 4 | 一般 | 设备复位接口不一致:ipcevent/0_ipcevent、ipcevent/1_ipcevent_multi_device 使用 aclrtResetDevice,其余 50 个用例统一使用 aclrtResetDeviceForce | 统一为 aclrtResetDeviceForce 或在 README 注明差异原因 | | 5 | 一般 | 10 个 memory 用例的示例输出夹带伪版本号 CANN Version: 1.0.0, TimeStamp: ...,与真实 CANN 版本(9.1.0)不符,且位置不统一 | 清理示例输出中的占位版本号 | | 6 | 提示 | ipcevent/1_ipcevent_multi_device 在设备数不足时 exit 1,易被自动化框架误判为 FAIL | 启动前调用 aclrtGetDeviceCount 预检,不满足时优雅退出(exit 0 + SKIP 提示) | | 7 | 提示 | 22 个 advanced/performance 用例缺少「示例输出」小节 | 补充各用例的预期运行输出 | | 8 | 提示 | 0_quickstart/0_hello_cann README 文字"快速入门示示例"("示例"重复);stream/0_simple_stream 输出"beging assigning task"拼写错误 | 修正文字笔误 | | 9 | 提示 | 产品支持表口径不一致:quickstart/1_basic_features 含"Ascend 950PR/950DT",2/3/4/5 仅列 Atlas A3/A2,差异未说明 | 统一产品支持表口径或补注差异原因 | 主要变更包括: - 修正部分 README 中错误链接、错误脚本名、错误路径和示例表格链接。 - 统一部分 advanced/performance 样例的环境配置说明,补充 set_sample_env.sh 使用方式。 - 为缺少示例输出的样例补充「示例输出」小节。 - 移除 memory 样例输出中的伪 CANN 版本号。 - 修复 quickstart/stream 文档与输出中的文字拼写问题。 - 为 ipcevent/1_ipcevent_multi_device 增加设备数预检,设备不足时以 SKIP 方式优雅退出,避免自动化框架误判为 FAIL。 - 补充产品支持表说明和 Device 复位接口使用约定。 - 调整 3_mstx_with_domain 样例 README、run.sh 和代码,使其与实际工程结构一致。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue 无。 ## 如何测试 描述测试此变更的步骤和前提条件: 1. 执行 git diff --check,确认无空白格式问题。 2. 执行修改后的样例验证,确认 3_mstx_with_domain 可正常编译运行。 3. 执行 ipcevent/1_ipcevent_multi_device,在设备数不足场景下确认输出 SKIP 提示并返回 0。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 本次修改聚焦 Runtime example 易用性整改,未包含本地评估报告目录和辅助 skill 目录。 See merge request: cann/runtime!3236 | 2 个月前 | |
【PR】: feat:remove all exclude Co-authored-by: duanpengliang<duanpengliang@huawei.com> # message auto-generated for no-merge-commit merge: !4195 merge master_precommit into master 【PR】: feat:remove all exclude Created-by: duanpengliang Commit-by: duanpengliang Merged-by: cann-robot Description: # Pull Request ## 描述 pre-commit example scripts docs,并把这些目录pre-commit排除项给去掉 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 pre-commit readme docs无新增文件 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!4195 | 1 个月前 | |
fix: 修复set_sample_env.sh中SOC_VERSION正则匹配不支持含连字符形态 Co-authored-by: good_luck_to_me<qiaoruimin@huawei.com> # message auto-generated for no-merge-commit merge: !4018 merge fix/sample-env-soc-version-regex into master fix: 修复set_sample_env.sh中SOC_VERSION正则匹配不支持含连字符形态 Created-by: good_luck_to_me Commit-by: good_luck_to_me Merged-by: cann-robot Description: ## 描述 修复 example/set_sample_env.sh 中 SOC_VERSION 正则匹配不支持含连字符形态的问题。 aclrtGetSocName() 返回的多 die 形态(如 Ascend910B4-1、Ascend910C4-1)含连字符 -,而脚本中两处正则 ^[A-Za-z0-9_]+$ 字符类不含 -,导致: - awk 提取 SOC_VERSION 失败,变量为空 - _set_soc_is_valid 校验不通过 - 脚本报错退出,所有样例无法获取 SOC_VERSION 环境变量 ## 变更类型 - [x] 🐛 Bug 修复 ## 关联的Issue ## 如何测试 1. 在 Ascend910B4-1 等 NPU 环境上执行 source example/set_sample_env.sh 2. 验证 SOC_VERSION 正确导出为 Ascend910B4-1 3. 模拟 helper 输出各形态字符串,验证正则匹配: - Ascend910B4-1 / Ascend910C4-1(含连字符)✅ 匹配 - Ascend910B3 / Ascend310P3(无连字符)✅ 兼容 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定 ## 其他信息 改动仅涉及 example/set_sample_env.sh 两处正则字符类,在 [A-Za-z0-9_] 基础上加入 -(置于末尾避免被解释为范围符)。 See merge request: cann/runtime!4018 | 1 个月前 | |
【PR】: feat:remove all exclude Co-authored-by: duanpengliang<duanpengliang@huawei.com> # message auto-generated for no-merge-commit merge: !4195 merge master_precommit into master 【PR】: feat:remove all exclude Created-by: duanpengliang Commit-by: duanpengliang Merged-by: cann-robot Description: # Pull Request ## 描述 pre-commit example scripts docs,并把这些目录pre-commit排除项给去掉 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 pre-commit readme docs无新增文件 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!4195 | 1 个月前 |
样例使用指导
example目录下提供了一系列Runtime接口样例,包括Device管理、Stream管理、Event管理、内存管理、Kernel执行等,供开发者参考,帮助开发者快速入门,进而掌握Runtime关键特性。
目录总览
- 0_quickstart:快速入门样例,以
aclnnAdd向量加法为入口,展示 初始化配置、Device/Stream 创建、Tensor 与 DataBuffer 管理、workspace 分配、算子执行、同步等待和资源释放流程。 - 1_basic_features:基础特性样例,包含设备管理(包括单线程、多线程)、 内存管理(包括内存复制、进程间内存共享、虚拟内存管理等)、Stream管理(包括单流任务下发、多流任务下发等)等样例。
- 2_advanced_features:高级特性样例,包括算子Kernel加载与执行、ACL Graph、Reduce和随机数生成的内置系统任务执行、Host侧回调函数下发等样例。
- 3_memory_advanced:高级内存管理样例,包括自定义内存分配器、Host内存注册、统一寻址、Stream内存操作、Stream有序内存分配等样例。
- 4_reliability:可靠性样例,包括溢出检测、错误恢复等样例。
- 5_performance:性能分析与精度调试样例。
- 6_scenarios:场景化样例,面向训练流水线、多设备推理和容错执行等典型场景。
产品支持表说明
各样例 README 中的产品支持表仅列出当前样例已完成验证或已明确声明支持情况的产品。Ascend 950PR/Ascend 950DT 为新增产品,部分历史样例尚未完成该产品验证;未在表格中列出的产品不代表不支持。若某产品明确不支持,样例 README 会在表格中以 × 标识,并根据需要补充说明。
环境准备
编译运行样例前,需获取固件、驱动及CANN软件包并安装,详细步骤请参见《CANN软件安装指南》。
若对本仓src目录下的源码有定制,那么在安装CANN软件之后,还需编译源码并部署到环境上,具体操作请参见README。
运行样例
1.下载样例代码并上传至安装CANN软件的环境,切换到样例目录。
# 此处以基础内存样例为例
cd ${git_clone_path}/example/1_basic_features/memory/0_h2h_memory_copy
2.设置环境变量。
# ${install_root} 替换为 CANN 安装根目录,默认安装在`/usr/local/Ascend`目录
source ${install_root}/cann/set_env.sh
export ASCEND_INSTALL_PATH=${install_root}/cann
3.执行以下命令运行样例。
# 请注意部分用例的运行命令不同,具体以各用例目录下的README.md中的编译运行命令为准
bash run.sh
样例代码说明
所有样例演示了CANN Runtime API 的典型使用方式。
- 样例代码用于学习和接口理解。
- 为了突出核心流程,部分示例会简化工程化处理。
- 用于生产环境前,请补充完整的错误处理、资源管理和边界检查。
Device 复位接口使用约定
单机单进程样例通常使用 aclrtResetDeviceForce 清理当前样例占用的 Device 资源;单机多进程 IPC 样例使用 aclrtResetDevice 释放当前进程的 Device 资源,避免强制复位影响同机其他进程。