| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
【fix】:统一使用 aclrtLaunchHostFunc,移除混用接口 Co-authored-by: qq_64748107<2592856994@qq.com> # message auto-generated for no-merge-commit merge: !4605 merge fix/callback-hostfunc-only-892 into master 【fix】:统一使用 aclrtLaunchHostFunc,移除混用接口 Created-by: qq_64748107 Commit-by: qq_64748107 Merged-by: cann-robot Description: # Pull Request ## 描述 ## 关联 Issue #892 ## 问题 example/2_advanced_features/callback/0_simple_callback/callback_sample.cpp 中 aclrtLaunchCallback 与 aclrtLaunchHostFunc 在同一个 Stream 上混用,违反文档约束: 「对于同一个 Stream,两套实现异步场景下的 callback 功能的接口不能混用,否则可能出现异常」 ## 修复方案 统一使用 aclrtLaunchHostFunc 接口,移除 aclrtLaunchCallback 系列接口 (SubscribeReport/ProcessReport/UnSubscribeReport)和自建后台线程。 aclrtLaunchHostFunc 内部自动创建并管理回调线程,代码大幅简化。 ## 改动文件 callback_sample.h:删除 ThreadFunc、HostFuncThreadFunc、HostFunc 声明,移除冗余的 #include <thread> 和 #include <string> callback_sample.cpp:删除自建线程和第一套接口,统一用 aclrtLaunchHostFunc;删除 GetThreadId 调用和线程 ID 日志;简化 Callback() 为 before→kernel→after 三个任务 CMakeLists.txt:移除未使用的 ../callback_utils.cpp 编译项 README.md / README_en.md:更新描述、API 列表、示例输出 ## 验证 - 编译运行通过,回调执行顺序正确 - 相关 UT(8个)全部通过 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的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!4605 | 1 个月前 | |
【fix】:统一使用 aclrtLaunchHostFunc,移除混用接口 Co-authored-by: qq_64748107<2592856994@qq.com> # message auto-generated for no-merge-commit merge: !4605 merge fix/callback-hostfunc-only-892 into master 【fix】:统一使用 aclrtLaunchHostFunc,移除混用接口 Created-by: qq_64748107 Commit-by: qq_64748107 Merged-by: cann-robot Description: # Pull Request ## 描述 ## 关联 Issue #892 ## 问题 example/2_advanced_features/callback/0_simple_callback/callback_sample.cpp 中 aclrtLaunchCallback 与 aclrtLaunchHostFunc 在同一个 Stream 上混用,违反文档约束: 「对于同一个 Stream,两套实现异步场景下的 callback 功能的接口不能混用,否则可能出现异常」 ## 修复方案 统一使用 aclrtLaunchHostFunc 接口,移除 aclrtLaunchCallback 系列接口 (SubscribeReport/ProcessReport/UnSubscribeReport)和自建后台线程。 aclrtLaunchHostFunc 内部自动创建并管理回调线程,代码大幅简化。 ## 改动文件 callback_sample.h:删除 ThreadFunc、HostFuncThreadFunc、HostFunc 声明,移除冗余的 #include <thread> 和 #include <string> callback_sample.cpp:删除自建线程和第一套接口,统一用 aclrtLaunchHostFunc;删除 GetThreadId 调用和线程 ID 日志;简化 Callback() 为 before→kernel→after 三个任务 CMakeLists.txt:移除未使用的 ../callback_utils.cpp 编译项 README.md / README_en.md:更新描述、API 列表、示例输出 ## 验证 - 编译运行通过,回调执行顺序正确 - 相关 UT(8个)全部通过 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的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!4605 | 1 个月前 | |
【fix】:统一使用 aclrtLaunchHostFunc,移除混用接口 Co-authored-by: qq_64748107<2592856994@qq.com> # message auto-generated for no-merge-commit merge: !4605 merge fix/callback-hostfunc-only-892 into master 【fix】:统一使用 aclrtLaunchHostFunc,移除混用接口 Created-by: qq_64748107 Commit-by: qq_64748107 Merged-by: cann-robot Description: # Pull Request ## 描述 ## 关联 Issue #892 ## 问题 example/2_advanced_features/callback/0_simple_callback/callback_sample.cpp 中 aclrtLaunchCallback 与 aclrtLaunchHostFunc 在同一个 Stream 上混用,违反文档约束: 「对于同一个 Stream,两套实现异步场景下的 callback 功能的接口不能混用,否则可能出现异常」 ## 修复方案 统一使用 aclrtLaunchHostFunc 接口,移除 aclrtLaunchCallback 系列接口 (SubscribeReport/ProcessReport/UnSubscribeReport)和自建后台线程。 aclrtLaunchHostFunc 内部自动创建并管理回调线程,代码大幅简化。 ## 改动文件 callback_sample.h:删除 ThreadFunc、HostFuncThreadFunc、HostFunc 声明,移除冗余的 #include <thread> 和 #include <string> callback_sample.cpp:删除自建线程和第一套接口,统一用 aclrtLaunchHostFunc;删除 GetThreadId 调用和线程 ID 日志;简化 Callback() 为 before→kernel→after 三个任务 CMakeLists.txt:移除未使用的 ../callback_utils.cpp 编译项 README.md / README_en.md:更新描述、API 列表、示例输出 ## 验证 - 编译运行通过,回调执行顺序正确 - 相关 UT(8个)全部通过 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的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!4605 | 1 个月前 | |
【fix】:统一使用 aclrtLaunchHostFunc,移除混用接口 Co-authored-by: qq_64748107<2592856994@qq.com> # message auto-generated for no-merge-commit merge: !4605 merge fix/callback-hostfunc-only-892 into master 【fix】:统一使用 aclrtLaunchHostFunc,移除混用接口 Created-by: qq_64748107 Commit-by: qq_64748107 Merged-by: cann-robot Description: # Pull Request ## 描述 ## 关联 Issue #892 ## 问题 example/2_advanced_features/callback/0_simple_callback/callback_sample.cpp 中 aclrtLaunchCallback 与 aclrtLaunchHostFunc 在同一个 Stream 上混用,违反文档约束: 「对于同一个 Stream,两套实现异步场景下的 callback 功能的接口不能混用,否则可能出现异常」 ## 修复方案 统一使用 aclrtLaunchHostFunc 接口,移除 aclrtLaunchCallback 系列接口 (SubscribeReport/ProcessReport/UnSubscribeReport)和自建后台线程。 aclrtLaunchHostFunc 内部自动创建并管理回调线程,代码大幅简化。 ## 改动文件 callback_sample.h:删除 ThreadFunc、HostFuncThreadFunc、HostFunc 声明,移除冗余的 #include <thread> 和 #include <string> callback_sample.cpp:删除自建线程和第一套接口,统一用 aclrtLaunchHostFunc;删除 GetThreadId 调用和线程 ID 日志;简化 Callback() 为 before→kernel→after 三个任务 CMakeLists.txt:移除未使用的 ../callback_utils.cpp 编译项 README.md / README_en.md:更新描述、API 列表、示例输出 ## 验证 - 编译运行通过,回调执行顺序正确 - 相关 UT(8个)全部通过 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的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!4605 | 1 个月前 | |
【fix】:统一使用 aclrtLaunchHostFunc,移除混用接口 Co-authored-by: qq_64748107<2592856994@qq.com> # message auto-generated for no-merge-commit merge: !4605 merge fix/callback-hostfunc-only-892 into master 【fix】:统一使用 aclrtLaunchHostFunc,移除混用接口 Created-by: qq_64748107 Commit-by: qq_64748107 Merged-by: cann-robot Description: # Pull Request ## 描述 ## 关联 Issue #892 ## 问题 example/2_advanced_features/callback/0_simple_callback/callback_sample.cpp 中 aclrtLaunchCallback 与 aclrtLaunchHostFunc 在同一个 Stream 上混用,违反文档约束: 「对于同一个 Stream,两套实现异步场景下的 callback 功能的接口不能混用,否则可能出现异常」 ## 修复方案 统一使用 aclrtLaunchHostFunc 接口,移除 aclrtLaunchCallback 系列接口 (SubscribeReport/ProcessReport/UnSubscribeReport)和自建后台线程。 aclrtLaunchHostFunc 内部自动创建并管理回调线程,代码大幅简化。 ## 改动文件 callback_sample.h:删除 ThreadFunc、HostFuncThreadFunc、HostFunc 声明,移除冗余的 #include <thread> 和 #include <string> callback_sample.cpp:删除自建线程和第一套接口,统一用 aclrtLaunchHostFunc;删除 GetThreadId 调用和线程 ID 日志;简化 Callback() 为 before→kernel→after 三个任务 CMakeLists.txt:移除未使用的 ../callback_utils.cpp 编译项 README.md / README_en.md:更新描述、API 列表、示例输出 ## 验证 - 编译运行通过,回调执行顺序正确 - 相关 UT(8个)全部通过 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的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!4605 | 1 个月前 | |
优化example目录结构易用性及补充用例 Co-authored-by: qiang_zq<qiang.zhangqiang@huawei.com> # message auto-generated for no-merge-commit merge: !1163 merge sample into master 优化example目录结构易用性及补充用例 Created-by: qiang_zq Commit-by: qiang_zq Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1、example 目录结构优化,按学习阶段重新组织目录结构(0_quickstart ~ 6_scenarios) 2、补充部分API的example用例 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/runtime/issues/284 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 部分用例执行过程 source /home/developer/Ascend/cann/set_env.sh && export SOC_VERSION=ascend910b3 && export ASCENDC_CMAKE_DIR=/home/developer/Ascend/cann/aarch64-linux/tikcpp/ascendc_kernel_cmake && export ASCEND_INSTALL_PATH=/home/developer/Ascend/cann && cd /mnt/workspace/gitCode/qiang_zq/runtime/example/3_memory_advanced/allocator/0_custom_allocator && rm -rf build && dos2unix run.sh 2>/dev/null || sed -i 's/\\r$//' run.sh && bash run.sh Configuring CMake... -- The C compiler identification is GNU 13.3.0 -- The CXX compiler identification is GNU 13.3.0 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/cc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Configuring done -- Generating done -- Build files have been written to: /mnt/workspace/gitCode/qiang_zq/runtime/example/3_memory_advanced/allocator/0_custom_allocator/build Building... [ 50%] Building CXX object CMakeFiles/main.dir/main.cpp.o [100%] Linking CXX executable main [100%] Built target main Build completed successfully! Executable location: /mnt/workspace/gitCode/qiang_zq/runtime/example/3_memory_advanced/allocator/0_custom_allocator/build/main Run the sample: ./build/main ./build/main [INFO] CustomAlloc size=256 [INFO] CustomAllocAdvise size=128 [INFO] CustomAlloc size=128 [INFO] CustomFree invoked [INFO] CustomFree invoked [INFO] Allocator desc queried: descOut=0xaaaabd6a3780 allocCount=2 freeCount=2 用例执行报告 0_quickstart (3/3) ✅ ✅ 0_hello_cann ✅ 1_error_handling ✅ 2_system_info 1_basic_features (23/23) ✅ ✅ device/0_device_normal ✅ device/1_device_multi_thread ✅ device/2_device_P2P ✅ event/0_event_status ✅ event/1_event_timestamp ✅ memory/0_h2h_memory_copy ✅ memory/10_ipc_memory_withpid ✅ memory/11_ipc_memory_withoutpid ✅ memory/1_h2d_sync_memory_copy ✅ memory/2_h2d_async_memory_copy ✅ memory/3_d2h_sync_memory_copy ✅ memory/4_d2h_async_memory_copy ✅ memory/5_d2d_sync_memory_copy ✅ memory/6_d2d_async_memory_copy ✅ memory/7_physical_memory_sharing_withpid ✅ memory/8_physical_memory_sharing_withoutpid ✅ memory/9_multistream_sync_memory ✅ stream/0_simple_stream ✅ stream/1_stream_with_failure_mode ✅ stream/2_multi_stream 2_advanced_features (17/17) ✅ ✅ built_in_task/0_reduce_task ✅ built_in_task/1_random_num_task ✅ callback/0_simple_callback ✅ callback/1_callback_hostfunc ✅ callback/2_callback_exception ✅ group/0_compute_group ✅ kernel/0_launch_kernel ✅ kernel/1_launch_kernel_with_reslimit ✅ label/0_simple_label ✅ model_ri/0_simple_model ✅ model_ri/1_model_update ✅ model_ri/2_model_switch ✅ notify/0_ipc_notify_withpid ✅ notify/1_ipc_notify_withoutpid ✅ notify/2_cntnotify ✅ tdt_buffer/0_shared_buffer ✅ tdt_channel/0_simple_channel ✅ tdt_channel/1_channel_capacity ✅ tdt_queue/0_simple_queue ✅ tdt_queue/1_queue_route ✅ tdt_queue/2_queue_grant_attach 3_memory_advanced (1/1) ✅ ✅ allocator/0_custom_allocator 4_reliability (2/2) ✅ ✅ overflow_detection/0_overflow_detection ✅ snapshot/0_snapshot_management 5_performance (6/6) ✅ ✅ adump/0_adump_args ✅ adump/1_adump_callback ✅ adump/2_model_dump_config ✅ profiling/0_create_config ✅ profiling/1_msproftx ✅ profiling/2_subscribe_model ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> docs/02_dev_guide/初始化.md example/*.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/runtime!1163 | 6 个月前 | |
fix: 为 example 目录下的 run.sh 添加 set -e Co-authored-by: wangtao43<wangtao43@huawei.com> # message auto-generated for no-merge-commit merge: !2160 merge fix/add-set-e-to-run-sh into master fix: 为 example 目录下的 run.sh 添加 set -e Created-by: wangtao43 Commit-by: wangtao43 Merged-by: cann-robot Description: # Pull Request ## 描述 在 example 目录下的 run.sh 脚本中添加 set -e 指令,确保脚本在遇到错误时立即退出,提高脚本的健壮性和错误处理能力。 ## 变更类型 请选择本次引入的变更类型(勾选对应项): - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 变更详情 - 修改了 36 个 run.sh 脚本文件 - 在版权声明之后添加 set -e 指令 - 涉及目录: - example/1_basic_features/ - example/2_advanced_features/ - example/5_performance/ ## 如何测试 无需测试,脚本修改不影响功能,仅增强错误处理。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md) ## 其他信息 此修改提高了脚本的健壮性,当脚本中的命令执行失败时,脚本会立即退出,避免后续错误。 See merge request: cann/runtime!2160 | 4 个月前 |
0_simple_callback
描述
本样例展示了如何通过 aclrtLaunchHostFunc 在 Stream 上下发 Host 回调任务,在 NPU 任务执行前后插入 CPU 回调函数。该接口内部自动创建并管理回调线程,无需用户自行创建线程和注册。
产品支持情况
本样例关键接口在不同产品上的支持情况如下:
| 接口 | Ascend 950PR/Ascend 950DT | Atlas A3 训练系列产品/Atlas A3 推理系列产品 | Atlas A2 训练系列产品/Atlas A2 推理系列产品 |
|---|---|---|---|
| aclrtLaunchHostFunc | √ | √ | √ |
编译运行
环境安装详情以及运行详情请见 example 目录下的 README。
运行步骤如下:
# ${install_root} 替换为 CANN 安装根目录,默认安装在`/usr/local/Ascend`目录
source ${install_root}/cann/set_env.sh
# 自动识别 SOC_VERSION 和 ASCENDC_CMAKE_DIR
source ${git_clone_path}/example/set_sample_env.sh
# 编译运行
bash run.sh
CANN RUNTIME API
在该 Sample 中,涉及的关键功能点及其关键接口如下:
- 初始化与资源管理
aclInit/aclFinalizeaclrtSetDevice/aclrtResetDeviceForceaclrtCreateContext/aclrtDestroyContextaclrtCreateStream/aclrtDestroyStreamForceaclrtSetStreamFailureMode
- Host 回调
aclrtLaunchHostFunc
- 内存与数据传输
aclrtMalloc/aclrtFreeaclrtMemcpyaclrtSynchronizeStream
示例输出
[INFO] This callback before task, result: user data is: 520.
[INFO] After begin a task, launch one hostfunc.
[INFO] This callback after task, result: user data is: 520.
[INFO] After assigning the task, the current int is: ...
已知 issue
暂无。