| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix sample run failed Co-authored-by: qiang_zq<qiang.zhangqiang@huawei.com> # message auto-generated for no-merge-commit merge: !1608 merge sample into master fix sample run failed Created-by: qiang_zq Commit-by: qiang_zq Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 一、执行sample样例 报错 1)执行/example/2_advanced_features/group/0_compute_group 下的run.sh报错: [ERROR] Operation failed: aclrtGetGroupCount(&groupCount) returned error code 207000 2)执行/example/2_advanced_features/label/0_simple_label 下的run.sh报错: [ERROR] Operation failed: aclrtSetLabel(labels[0], stream) returned error code 107005 3)执行 /example/2_advanced_features/notify/2_cntnotify 下的run.sh报错: [ERROR] Operation failed: aclrtCntNotifyCreate(&cntNotify, 0) returned error code 207000 4)执行 /example/2_advanced_features/tdt_buffer/0_shared_buffer 下的run.sh报错: [ERROR] Operation failed: acltdtAllocBuf(64, ACL_TDT_NORMAL_MEM, &headBuf) returned error code 200006 5)执行 /example/2_advanced_features/tdt_channel/0_simple_channel 下的run.sh报错: [ERROR] Operation failed: acltdtSendTensor(channel, sendDataset, 1000) returned error code 100000 6)执行 /example/2_advanced_features/tdt_channel/1_channel_capacity 下的run.sh报错: [ERROR] acltdtCreateChannelWithCapacity is nullptr 7)执行/example/2_advanced_features/tdt_queue/0_simple_queue 下的run.sh报错: [ERROR] Operation failed: acltdtSetQueueAttr(attr, ACL_TDT_QUEUE_NAME_PTR, sizeof(queueName), queueName) returned error code 100000 8)执行/example/2_advanced_features/tdt_queue/1_queue_route 下的run.sh报错: [ERROR] Operation failed: CreateQueue("route_src_queue", 4, &srcQid) returned error code 100000 9)执行 /example/2_advanced_features/tdt_queue/2_queue_grant_attach 下的run.sh报错: [ERROR] Operation failed: acltdtSetQueueAttr(attr, ACL_TDT_QUEUE_NAME_PTR, sizeof(queueName), queueName) returned error code 100000 10)执行 /example/4_reliability/overflow_detection/0_overflow_detection下的run.sh报错: [ERROR] Operation failed: aclrtSetStreamOverflowSwitch(stream, 1) returned error code 207000 11)执行 /example/4_reliability/snapshot/0_snapshot_management下的run.sh报错: [ERROR] Operation failed: aclrtSnapShotProcessRestore() returned error code 507909 二、方案 0)样例均为新增sample 1)A2、A3不支持 group、cntnotify、tdt_buffer、acltdtEnqueue相关接口 导致执行失败,snapshot为试验接口,后续950已不支持,这些样例删除 2)修复其他报错用例 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> NA ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 1)执行/home/cyj/402zhuxian/runtime/example/2_advanced_features/group/0_compute_group 下的run.sh报错: --A2、A3不支持,删除 2)执行/home/cyj/402zhuxian/runtime/example/2_advanced_features/label/0_simple_label 下的run.sh报错:  3)执行 /home/cyj/402zhuxian/runtime/example/2_advanced_features/notify/2_cntnotify 下的run.sh报错: -- --A2、A3不支持,删除 4)执行 /home/cyj/402zhuxian/runtime/example/2_advanced_features/tdt_buffer/0_shared_buffer 下的run.sh报错: -- A2、A3不支持,删除 5)执行 /home/cyj/402zhuxian/runtime/example/2_advanced_features/tdt_channel/0_simple_channel 下的run.sh报错:  6)执行 /home/cyj/402zhuxian/runtime/example/2_advanced_features/tdt_channel/1_channel_capacity 下的run.sh报错:  7)执行/home/cyj/402zhuxian/runtime/example/2_advanced_features/tdt_queue/0_simple_queue 下的run.sh报错:  8)执行/home/cyj/402zhuxian/runtime/example/2_advanced_features/tdt_queue/1_queue_route 下的run.sh报错:  9)执行 /home/cyj/402zhuxian/runtime/example/2_advanced_features/tdt_queue/2_queue_grant_attach 下的run.sh报错: -- A2、A3不支持,删除 10)执行 /home/cyj/402zhuxian/runtime/example/4_reliability/overflow_detection/0_overflow_detection下的run.sh报错:  11)执行 /home/cyj/402zhuxian/runtime/example/4_reliability/snapshot/0_snapshot_management下的run.sh报错: -- -试验接口,后续950已不支持,删除 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> example/*/README.md ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/runtime!1608 | 3 个月前 | |
【PR】: fix: sample 易用性规范性优化 Co-authored-by: qiang_zq<qiang.zhangqiang@huawei.com> # message auto-generated for no-merge-commit merge: !2067 merge master into master 【PR】: fix: sample 易用性规范性优化 Created-by: qiang_zq Commit-by: qiang_zq Merged-by: cann-robot Description: # Pull Request ## 描述 1、sample样例 readme规范化 整改 2、sample样例 补充优化注释 3、sample样例 cmakelist 连接包优化,libascendcl.so -> libacl_rt.so 4、新增一键导入 SOC_VERSION和ASCENDC_CMAKE_DIR变量的工具 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. example/0_quickstart/4_custom_kernel_launch Vector addition result: result[0] = 1.5 (expected: 1.5) result[1] = 3.0 (expected: 3.0) result[2] = 4.5 (expected: 4.5) result[3] = 6.0 (expected: 6.0) result[4] = 7.5 (expected: 7.5) result[5] = 9.0 (expected: 9.0) result[6] = 10.5 (expected: 10.5) result[7] = 12.0 (expected: 12.0) Free device memory successfully Destroy stream successfully Reset device successfully ACL finalize successfully Sample run successfully with <<<>>> kernel call! 2. 样例执行验证 ===== START 0_quickstart/0_hello_cann ===== RESULT 0_quickstart/0_hello_cann rc=0 -- 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/0_quickstart/0_hello_cann/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/0_quickstart/0_hello_cann/build/main Run the sample: ./build/main ACL init successfully Set device 0 successfully Create stream successfully Input vectors: self: [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0] other: [0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0] alpha: 1.0 Create output aclDataBuffer successfully, buffer addr = 0x12e0c0016000 Get workspace size successfully, workspace size = 0 Launch aclnnAdd successfully Synchronize stream successfully Vector addition result: result[0] = 1.5 (expected: 1.5) result[1] = 3.0 (expected: 3.0) result[2] = 4.5 (expected: 4.5) result[3] = 6.0 (expected: 6.0) result[4] = 7.5 (expected: 7.5) result[5] = 9.0 (expected: 9.0) result[6] = 10.5 (expected: 10.5) result[7] = 12.0 (expected: 12.0) Free device memory successfully Destroy stream successfully Reset device successfully ACL finalize successfully Sample run successfully! ===== END 0_quickstart/0_hello_cann ===== ===== START 0_quickstart/1_error_handling ===== RESULT 0_quickstart/1_error_handling rc=0 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/0_quickstart/1_error_handling/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/0_quickstart/1_error_handling/build/main Run the sample: ./build/main [INFO] ACL init and set device successfully [INFO] Current run mode: ACL_HOST [INFO] Triggering an expected invalid-parameter error with aclrtGetRunMode(nullptr) [ERROR] Diagnostics: ret=100000, peekErr=0, lastErr=0, recentErrMsg=[PID: 334883] 2026-05-12-16:34:08.984.159 Invalid_Argument_Null_Pointer(EH0002): Argument [runMode] must not be null. Solution: Try again with a correct pointer argument. [WARN] aclrtGetErrorVerbose(0) returned error code 207000 [INFO] After diagnostics are consumed once: peekErr=207000, lastErr=207000, recentErrMsg=<null> [INFO] ACL finalize successfully ===== END 0_quickstart/1_error_handling ===== ===== START 0_quickstart/2_system_info ===== RESULT 0_quickstart/2_system_info rc=0 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/0_quickstart/2_system_info/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/0_quickstart/2_system_info/build/main Run the sample: ./build/main [INFO] ACL init successfully [INFO] ACL Runtime API version: 1.16.0 [INFO] CANN package [runtime] version string: 9.0.0 [INFO] CANN package [runtime] version number: 90000000 [INFO] Current run mode: ACL_HOST [INFO] Float conversion: 1.625000 -> 0x3e80 -> 1.625000 [INFO] Data type size: ACL_FLOAT=4, ACL_FLOAT16=2, ACL_INT64=8 [INFO] ACL finalize successfully ===== END 0_quickstart/2_system_info ===== ===== START 1_basic_features/device/0_device_normal ===== RESULT 1_basic_features/device/0_device_normal rc=0 [INFO]: Current compile soc version is ascend910_9362 -- 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/1_basic_features/device/0_device_normal/build [ 50%] Building CXX object CMakeFiles/main.dir/main.cpp.o [100%] Linking CXX executable main [100%] Built target main -- Install configuration: \"Debug\" [INFO] Start to run device_normal sample. [INFO] result[0] is: 1.200000 [INFO] result[1] is: 2.200000 [INFO] result[2] is: 3.200000 [INFO] result[3] is: 5.400000 [INFO] result[4] is: 6.400000 [INFO] result[5] is: 7.400000 [INFO] result[6] is: 9.600000 [INFO] result[7] is: 10.600000 [INFO] Run the device_normal sample successfully. ===== END 1_basic_features/device/0_device_normal ===== ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!2067 | 2 个月前 | |
fix sample run failed Co-authored-by: qiang_zq<qiang.zhangqiang@huawei.com> # message auto-generated for no-merge-commit merge: !1608 merge sample into master fix sample run failed Created-by: qiang_zq Commit-by: qiang_zq Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 一、执行sample样例 报错 1)执行/example/2_advanced_features/group/0_compute_group 下的run.sh报错: [ERROR] Operation failed: aclrtGetGroupCount(&groupCount) returned error code 207000 2)执行/example/2_advanced_features/label/0_simple_label 下的run.sh报错: [ERROR] Operation failed: aclrtSetLabel(labels[0], stream) returned error code 107005 3)执行 /example/2_advanced_features/notify/2_cntnotify 下的run.sh报错: [ERROR] Operation failed: aclrtCntNotifyCreate(&cntNotify, 0) returned error code 207000 4)执行 /example/2_advanced_features/tdt_buffer/0_shared_buffer 下的run.sh报错: [ERROR] Operation failed: acltdtAllocBuf(64, ACL_TDT_NORMAL_MEM, &headBuf) returned error code 200006 5)执行 /example/2_advanced_features/tdt_channel/0_simple_channel 下的run.sh报错: [ERROR] Operation failed: acltdtSendTensor(channel, sendDataset, 1000) returned error code 100000 6)执行 /example/2_advanced_features/tdt_channel/1_channel_capacity 下的run.sh报错: [ERROR] acltdtCreateChannelWithCapacity is nullptr 7)执行/example/2_advanced_features/tdt_queue/0_simple_queue 下的run.sh报错: [ERROR] Operation failed: acltdtSetQueueAttr(attr, ACL_TDT_QUEUE_NAME_PTR, sizeof(queueName), queueName) returned error code 100000 8)执行/example/2_advanced_features/tdt_queue/1_queue_route 下的run.sh报错: [ERROR] Operation failed: CreateQueue("route_src_queue", 4, &srcQid) returned error code 100000 9)执行 /example/2_advanced_features/tdt_queue/2_queue_grant_attach 下的run.sh报错: [ERROR] Operation failed: acltdtSetQueueAttr(attr, ACL_TDT_QUEUE_NAME_PTR, sizeof(queueName), queueName) returned error code 100000 10)执行 /example/4_reliability/overflow_detection/0_overflow_detection下的run.sh报错: [ERROR] Operation failed: aclrtSetStreamOverflowSwitch(stream, 1) returned error code 207000 11)执行 /example/4_reliability/snapshot/0_snapshot_management下的run.sh报错: [ERROR] Operation failed: aclrtSnapShotProcessRestore() returned error code 507909 二、方案 0)样例均为新增sample 1)A2、A3不支持 group、cntnotify、tdt_buffer、acltdtEnqueue相关接口 导致执行失败,snapshot为试验接口,后续950已不支持,这些样例删除 2)修复其他报错用例 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> NA ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 1)执行/home/cyj/402zhuxian/runtime/example/2_advanced_features/group/0_compute_group 下的run.sh报错: --A2、A3不支持,删除 2)执行/home/cyj/402zhuxian/runtime/example/2_advanced_features/label/0_simple_label 下的run.sh报错:  3)执行 /home/cyj/402zhuxian/runtime/example/2_advanced_features/notify/2_cntnotify 下的run.sh报错: -- --A2、A3不支持,删除 4)执行 /home/cyj/402zhuxian/runtime/example/2_advanced_features/tdt_buffer/0_shared_buffer 下的run.sh报错: -- A2、A3不支持,删除 5)执行 /home/cyj/402zhuxian/runtime/example/2_advanced_features/tdt_channel/0_simple_channel 下的run.sh报错:  6)执行 /home/cyj/402zhuxian/runtime/example/2_advanced_features/tdt_channel/1_channel_capacity 下的run.sh报错:  7)执行/home/cyj/402zhuxian/runtime/example/2_advanced_features/tdt_queue/0_simple_queue 下的run.sh报错:  8)执行/home/cyj/402zhuxian/runtime/example/2_advanced_features/tdt_queue/1_queue_route 下的run.sh报错:  9)执行 /home/cyj/402zhuxian/runtime/example/2_advanced_features/tdt_queue/2_queue_grant_attach 下的run.sh报错: -- A2、A3不支持,删除 10)执行 /home/cyj/402zhuxian/runtime/example/4_reliability/overflow_detection/0_overflow_detection下的run.sh报错:  11)执行 /home/cyj/402zhuxian/runtime/example/4_reliability/snapshot/0_snapshot_management下的run.sh报错: -- -试验接口,后续950已不支持,删除 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> example/*/README.md ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/runtime!1608 | 3 个月前 | |
fix sample run failed Co-authored-by: qiang_zq<qiang.zhangqiang@huawei.com> # message auto-generated for no-merge-commit merge: !1608 merge sample into master fix sample run failed Created-by: qiang_zq Commit-by: qiang_zq Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 一、执行sample样例 报错 1)执行/example/2_advanced_features/group/0_compute_group 下的run.sh报错: [ERROR] Operation failed: aclrtGetGroupCount(&groupCount) returned error code 207000 2)执行/example/2_advanced_features/label/0_simple_label 下的run.sh报错: [ERROR] Operation failed: aclrtSetLabel(labels[0], stream) returned error code 107005 3)执行 /example/2_advanced_features/notify/2_cntnotify 下的run.sh报错: [ERROR] Operation failed: aclrtCntNotifyCreate(&cntNotify, 0) returned error code 207000 4)执行 /example/2_advanced_features/tdt_buffer/0_shared_buffer 下的run.sh报错: [ERROR] Operation failed: acltdtAllocBuf(64, ACL_TDT_NORMAL_MEM, &headBuf) returned error code 200006 5)执行 /example/2_advanced_features/tdt_channel/0_simple_channel 下的run.sh报错: [ERROR] Operation failed: acltdtSendTensor(channel, sendDataset, 1000) returned error code 100000 6)执行 /example/2_advanced_features/tdt_channel/1_channel_capacity 下的run.sh报错: [ERROR] acltdtCreateChannelWithCapacity is nullptr 7)执行/example/2_advanced_features/tdt_queue/0_simple_queue 下的run.sh报错: [ERROR] Operation failed: acltdtSetQueueAttr(attr, ACL_TDT_QUEUE_NAME_PTR, sizeof(queueName), queueName) returned error code 100000 8)执行/example/2_advanced_features/tdt_queue/1_queue_route 下的run.sh报错: [ERROR] Operation failed: CreateQueue("route_src_queue", 4, &srcQid) returned error code 100000 9)执行 /example/2_advanced_features/tdt_queue/2_queue_grant_attach 下的run.sh报错: [ERROR] Operation failed: acltdtSetQueueAttr(attr, ACL_TDT_QUEUE_NAME_PTR, sizeof(queueName), queueName) returned error code 100000 10)执行 /example/4_reliability/overflow_detection/0_overflow_detection下的run.sh报错: [ERROR] Operation failed: aclrtSetStreamOverflowSwitch(stream, 1) returned error code 207000 11)执行 /example/4_reliability/snapshot/0_snapshot_management下的run.sh报错: [ERROR] Operation failed: aclrtSnapShotProcessRestore() returned error code 507909 二、方案 0)样例均为新增sample 1)A2、A3不支持 group、cntnotify、tdt_buffer、acltdtEnqueue相关接口 导致执行失败,snapshot为试验接口,后续950已不支持,这些样例删除 2)修复其他报错用例 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> NA ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 1)执行/home/cyj/402zhuxian/runtime/example/2_advanced_features/group/0_compute_group 下的run.sh报错: --A2、A3不支持,删除 2)执行/home/cyj/402zhuxian/runtime/example/2_advanced_features/label/0_simple_label 下的run.sh报错:  3)执行 /home/cyj/402zhuxian/runtime/example/2_advanced_features/notify/2_cntnotify 下的run.sh报错: -- --A2、A3不支持,删除 4)执行 /home/cyj/402zhuxian/runtime/example/2_advanced_features/tdt_buffer/0_shared_buffer 下的run.sh报错: -- A2、A3不支持,删除 5)执行 /home/cyj/402zhuxian/runtime/example/2_advanced_features/tdt_channel/0_simple_channel 下的run.sh报错:  6)执行 /home/cyj/402zhuxian/runtime/example/2_advanced_features/tdt_channel/1_channel_capacity 下的run.sh报错:  7)执行/home/cyj/402zhuxian/runtime/example/2_advanced_features/tdt_queue/0_simple_queue 下的run.sh报错:  8)执行/home/cyj/402zhuxian/runtime/example/2_advanced_features/tdt_queue/1_queue_route 下的run.sh报错:  9)执行 /home/cyj/402zhuxian/runtime/example/2_advanced_features/tdt_queue/2_queue_grant_attach 下的run.sh报错: -- A2、A3不支持,删除 10)执行 /home/cyj/402zhuxian/runtime/example/4_reliability/overflow_detection/0_overflow_detection下的run.sh报错:  11)执行 /home/cyj/402zhuxian/runtime/example/4_reliability/snapshot/0_snapshot_management下的run.sh报错: -- -试验接口,后续950已不支持,删除 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> example/*/README.md ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/runtime!1608 | 3 个月前 |
1_stream_with_failure_mode
描述
本样例展示 Stream 遇错即停模式,并通过核函数任务模拟 Stream 执行过程中发生错误的场景。
本样例包含三部分内容:普通 Stream 上的遇错即停演示、aclrtStreamStop 辅助演示、aclrtStreamAbort 辅助演示。
产品支持情况
本样例支持以下产品:
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
编译运行
如果当前环境不满足 stop/abort 辅助演示的额外前置条件,样例会打印 WARN 并跳过对应辅助演示;主流程中的 aclrtSetStreamFailureMode 演示仍然会继续执行。
1.下载样例代码至安装CANN软件的环境,切换到样例目录。
cd ${git_clone_path}/example/1_basic_features/stream/1_stream_with_failure_mode
2.设置环境变量。
# ${install_root} 替换为 CANN 安装根目录,默认安装在`/usr/local/Ascend`目录
source ${install_root}/cann/set_env.sh
export ASCEND_INSTALL_PATH=${install_root}/cann
# 设置 SOC_VERSION 和 ASCENDC_CMAKE_DIR
# -SOC_VERSION: 昇腾AI处理器的型号,如 Ascend910_9362,Ascend910B2等
# -ASCENDC_CMAKE_DIR: 样例中涉及调用AscendC算子,需配置AscendC编译器 ascendc.cmake 路径,如 /usr/local/Ascend/cann/x86_64-linux/tikcpp/ascendc_kernel_cmake
source ${git_clone_path}/example/set_sample_env.sh
3.执行以下命令运行样例。
bash run.sh
CANN RUNTIME API
在该Sample中,涉及的关键功能点及其关键接口,如下所示:
- 初始化
- 调用
aclInit接口进行初始化配置。 - 调用
aclFinalize接口实现去初始化。
- 调用
- Device 管理
- 调用
aclrtSetDevice接口指定用于运算的 Device。 - 调用
aclrtResetDeviceForce接口强制复位当前运算的 Device,回收 Device 上的资源。
- 调用
- Context 管理
- 调用
aclrtCreateContext接口创建 Context。 - 调用
aclrtDestroyContext接口销毁 Context。
- 调用
- Stream 管理
- 调用
aclrtCreateStream接口创建 Stream。 - 调用
aclrtCreateStreamWithConfig接口创建ACL_STREAM_DEVICE_USE_ONLY类型的 Stream;在 Atlas A2/Atlas A3 上,aclrtStreamStop要求目标 Stream 通过aclrtCreateStreamWithConfig(..., ACL_STREAM_DEVICE_USE_ONLY)创建。 - 调用
aclrtSynchronizeStream接口可以阻塞等待 Stream 上任务的完成。 - 调用
aclrtSetStreamFailureMode接口可以设置 Stream 执行任务遇到错误的操作,默认为遇错继续,可以设置为遇错即停。 - 调用
aclrtRegStreamStateCallback接口注册 Stream 状态回调。 - 调用
aclrtStreamStop接口停止辅助 Stream;样例会单独创建一条 device-use-only Stream,并在其上提交长时核任务后调用aclrtStreamStop。 - 调用
aclrtStreamAbort接口中止辅助 Stream。aclrtStreamAbort不支持ACL_STREAM_DEVICE_USE_ONLYStream,因此样例会在普通 Stream 上单独演示;演示后再次调用aclrtSynchronizeStream时,可能返回 stream abort 类状态码,属于预期结果,样例会记录日志而不会将整个流程判定为失败。 - 调用
aclrtDestroyStreamForce接口强制销毁 Stream,丢弃所有任务。
- 调用
- 内存管理
- 调用
aclrtMalloc接口申请 Device 上的内存。 - 调用
aclrtFree接口释放 Device 上的内存。
- 调用
- 数据传输
- 调用
aclrtMemcpy接口通过内存复制的方式实现数据传输。
- 调用
示例输出
[INFO] Assigning task without failure mode.
[ERROR] Operation failed: aclrtSynchronizeStream(stream) returned error code 507035
[INFO] Without failure mode, the result is 2.
[INFO] Assigning task with failure mode.
[ERROR] Operation failed: aclrtSynchronizeStream(stream) returned error code 507035
[INFO] After set failure mode, the current result is: 1.
[INFO] aclrtStreamStop returned 0.
[WARN] aclrtSynchronizeStream(after stop) returned 507000.
[INFO] aclrtStreamAbort returned 0.
[INFO] aclrtSynchronizeStream(after abort) returned 507035 after stream abort, which is expected.
[INFO] Resource cleanup completed.
[INFO] Run the stream_with_failure_mode sample successfully.