0_overflow_detection
【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime
概述
本示例演示流级溢出检测开关、状态查询和重置流程。
功能说明
- 查询当前 Device 的浮点溢出模式,并切换为
ACL_RT_OVERFLOW_MODE_SATURATION。 - 在饱和模式下创建 Stream,打开溢出检测开关并读取当前配置。
- 申请固定
64 Byte的 Device 状态缓冲区,获取一次溢出状态并同步到 Host。 - 调用
aclrtResetOverflowStatus后再次查询状态,并在结束时恢复原始饱和模式。 - 销毁 Stream、Context 和状态缓存。
产品支持情况
本样例支持以下产品:
| 产品 | 是否支持 |
|---|---|
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
编译运行
环境安装详情以及运行详情请见 example 目录下的 README。
运行步骤如下:
# ${install_root} 替换为 CANN 安装根目录,默认安装在`/usr/local/Ascend`目录 source ${install_root}/cann/set_env.sh export ASCEND_INSTALL_PATH=${install_root}/cann # 编译运行 bash run.shCANN RUNTIME API
在本样例中,涉及的关键功能点及其关键接口如下所示:
- 初始化与 Context/Stream 管理
- 调用
aclInit和aclFinalize接口完成 ACL 初始化与去初始化。 - 调用
aclrtSetDevice、aclrtResetDeviceForce接口管理 Device。 - 调用
aclrtCreateContext和aclrtDestroyContext接口创建和销毁 Context。 - 调用
aclrtCreateStream、aclrtSynchronizeStream和aclrtDestroyStream接口管理 Stream。
- 调用
- Device 浮点溢出模式管理
- 调用
aclrtGetDeviceSatMode和aclrtSetDeviceSatMode接口查询并设置 Device 饱和模式。
- 调用
- 溢出检测状态管理
- 调用
aclrtSetStreamOverflowSwitch和aclrtGetStreamOverflowSwitch接口开启或查询 Stream 溢出检测开关。 - 调用
aclrtGetOverflowStatus接口获取当前溢出状态。 - 调用
aclrtResetOverflowStatus接口重置溢出状态。
- 调用
- 内存管理与数据传输
- 调用
aclrtMalloc和aclrtFree接口管理状态缓存。 - 调用
aclrtMemcpy接口将状态数据同步到 Host 侧。
- 调用
已知 issue
aclrtSetStreamOverflowSwitch仅在ACL_RT_OVERFLOW_MODE_SATURATION模式下可用;如果当前产品或运行时不支持该能力,相关接口可能返回ACL_ERROR_RT_FEATURE_NOT_SUPPORT (207000)。样例会记录告警并在完成资源清理后退出。
【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考