| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
【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 | 21 天前 | |
fix: 修复 3_d2h_sync_memory_copy 样例缺少流同步导致 D2H 拷贝读到旧值(#825) Co-authored-by: good_luck_to_me<qiaoruimin@huawei.com> # message auto-generated for no-merge-commit merge: !4314 merge fix/d2h-sync-memcpy-issue825 into master fix: 修复 3_d2h_sync_memory_copy 样例缺少流同步导致 D2H 拷贝读到旧值(#825) Created-by: good_luck_to_me Commit-by: good_luck_to_me Merged-by: cann-robot Description: ## 描述 修复样例 3_d2h_sync_memory_copy 缺少流同步导致 D2H 拷贝读到旧值 0 的问题。 **根因**:WriteDo 通过用户 stream 异步下发内核写操作后,直接调用 aclrtMemcpy 进行 D2H 同步拷贝。aclrtMemcpy 不会做隐式流同步,两个操作分属不同 stream,D2H 拷贝可能在内核写完成前执行,读到设备内存初始值 0。 **修复**:在 aclrtMemcpy 前增加 aclrtSynchronizeStream(stream) 确保内核写完成。 ## 变更类型 - [x] 🐛 Bug 修复 ## 关联的Issue #825 ## 如何测试 1. source CANN 环境变量 2. 切换到样例目录 example/1_basic_features/memory/3_d2h_sync_memory_copy 3. 执行 bash run.sh **修复前输出**: [INFO] Destination data: 0 [FAILURE] Memory copy failed. Value at source is 123, but value at destination is 0 **修复后输出**: [INFO] Destination data: 123 [SUCCESS] Memory copy successfully. Values at source and destination are equal: 123 **验证环境**:Ascend910(910_9362)、CANN 9.2.0、aarch64、GCC 13.3.0 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定 ## 其他信息 无 See merge request: cann/runtime!4314 | 20 天前 | |
fix: 初始化random_num_task样例counter(#827) Co-authored-by: jiaxingru<jiaxingru1@huawei.com> # message auto-generated for no-merge-commit merge: !4295 merge fix/issue-827-random-counter-init into master fix: 初始化random_num_task样例counter(#827) Created-by: m0_60337577 Commit-by: jiaxingru Merged-by: cann-robot Description: # Pull Request ## 描述 random_num_task 样例申请 16 字节 Device 内存作为随机数 counter 后,未写入明确的初始偏移量。由于 aclrtMalloc 不保证初始化内存,首个随机数任务的结果可能受到 Device 内存历史数据影响。 本次修改在 counter 分配成功后调用 aclrtMemset,将 128 位 counter 初始化为 0,再提交首个随机数任务。后续随机数任务继续共享并推进同一 counter,保持样例原有状态管理方式不变。 ## 变更类型 - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue https://gitcode.com/cann/runtime/issues/827 ## 如何测试 1. 执行 clang-format --dry-run --Werror -style=file example/2_advanced_features/built_in_task/1_random_num_task/main.cpp,检查通过。 2. 使用 -std=c++17 -Wall -Werror -fsyntax-only 进行语法检查,检查通过。 3. 设置 ASCEND_INSTALL_PATH=/home/developer/Ascend/cann-9.1.0,执行样例目录下的 bash run.sh,CMake 构建成功,Ascend 实机运行成功。 4. 使用相同 seed=0 多次运行,五组随机数输出逐项一致,程序均打印 Sample Run Successfully.。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档(本次不涉及对外文档变更) - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 本次仅修复样例中的 counter 初始化,不修改 Runtime 接口或随机数任务实现。 See merge request: cann/runtime!4295 | 21 天前 | |
【PR】: 新增 Host 内存零拷贝 Runtime 样例 Co-authored-by: LiuPeiling<1245275864@qq.com> # message auto-generated for no-merge-commit merge: !4316 merge feature/runtime7-simple-zero-copy into master 【PR】: 新增 Host 内存零拷贝 Runtime 样例 Created-by: freedom178 Commit-by: LiuPeiling Merged-by: cann-robot Description: # Pull Request ## 描述 新增 Host 内存注册与映射访问样例 0_simple_zero_copy。 本样例面向单个 Atlas A2 A3 A5 Device,申请三块 Host 锁页内存并注册为 Device 可映射内存,将映射地址传入 Ascend C Kernel,完成 16384 个 FP16 向量加法并在 Host 侧校验结果。 本次新增覆盖 3 个 CANN Runtime API: 本样例新增覆盖以下 3 个 CANN Runtime API: - aclrtHostRegisterV2 - 将一段已经分配的 Host 内存注册到 Runtime。 - 本样例使用 ACL_HOST_REG_MAPPED 标志,使该内存可以映射到 Device 地址空间。 - 注册期间 Host 内存不能提前释放。 - aclrtHostGetDevicePointer - 获取已注册 Host 内存对应的 Device 映射地址。 - 该接口不会分配 Device 内存,也不会复制数据。 - 本样例将返回的映射地址作为 Kernel 参数,使 NPU 直接读取输入并写入输出。 - aclrtHostUnregister - 解除 Host 内存在 Runtime 中的注册和 Device 映射关系。 - 调用后原 Device 映射地址不再允许 Kernel 使用。 - 本样例在 Kernel 执行和结果校验完成后调用该接口,再通过 aclrtFreeHost 释放 Host 内存。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [ ] 我的代码遵循了项目的代码风格 - [ ] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [ ] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!4316 | 18 天前 | |
【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 | 21 天前 | |
【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 | 21 天前 | |
fix(example): 修复 README 失效链接(#667) Co-authored-by: nevermore_t<tianjingxuan2@huawei.com> # message auto-generated for no-merge-commit merge: !3220 merge fix/issue-667-broken-links into master fix(example): 修复 README 失效链接(#667) Created-by: nevermore_t Commit-by: nevermore_t Merged-by: cann-robot Description: ## 描述 修复 issue #667 报告的 README 失效链接。 PR !1608 删除了 2_cntnotify 和 snapshot 两个样例目录(A2/A3 不支持 cntnotify 接口,snapshot 为试验接口后续 950 已不支持),但未同步清理父目录 README 中的引用链接,导致死链。 本次变更: - 删除 notify/README.md 中指向已删除的 2_cntnotify 的链接 - 删除 fault_tolerant/README.md 中指向已删除的 snapshot 的链接 - 统一 11 个 README 的 section title:"可先参考"→"可选参考"(更符合作为标题的语义,英文版对应 References) ## 变更类型 - [x] 📝 文档内容更新 ## 关联的Issue #667 ## 如何测试 1. 确认 example/2_advanced_features/notify/ 下不再有 2_cntnotify 目录引用 2. 确认 example/4_reliability/ 下不再有 snapshot 目录引用 3. 确认所有保留的链接指向的目录存在 4. grep -r "可先参考" example/ 返回空(已全部替换为"可选参考") ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定 See merge request: cann/runtime!3220 | 2 个月前 | |
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】: 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 | 21 天前 | |
【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 | 21 天前 | |
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 | 21 天前 | |
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 | 21 天前 |
样例使用指导
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 资源,避免强制复位影响同机其他进程。