CANN/runtime简单Label示例
0_simple_label【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime概述本示例演示 CANN Runtime 的 Label 创建与按索引切换能力适合作为基于模型运行实例的设备端流程控制最小示例。产品支持情况本样例关键接口在不同产品上的支持情况如下接口Atlas A3 训练系列产品/Atlas A3 推理系列产品Atlas A2 训练系列产品/Atlas A2 推理系列产品aclrtCreateLabelx√aclrtCreateLabelListx√aclrtSetLabelx√aclrtSwitchLabelByIndexx√aclmdlRIBuildBegin√√aclmdlRIBindStream√√aclmdlRIEndTask√√aclmdlRIBuildEnd√√aclmdlRIExecuteAsync√√aclmdlRIUnbindStream√√aclmdlRIDestroy√√功能说明创建持久化 Stream并将其绑定到模型运行实例。创建两个 Label并把它们组织成 LabelList。在设备内存中准备分支索引在绑定后的持久化 Stream 上录入 SwitchLabelByIndex 与 SetLabel 任务。执行模型运行实例并完成资源销毁。说明aclrtSetLabel只支持已经通过aclmdlRIBindStream绑定到模型运行实例的ACL_STREAM_PERSISTENT类型 Stream。若直接对普通 Stream 调用该接口运行时可能返回ACL_ERROR_RT_STREAM_MODEL (107005)。编译运行环境安装详情以及运行详情请见 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在该Sample中涉及的关键功能点及其关键接口如下所示初始化调用aclInit接口初始化AscendCL配置。调用aclFinalize接口实现AscendCL去初始化。Device与Context管理调用aclrtSetDevice接口指定用于运算的Device。调用aclrtCreateContext接口创建Context。调用aclrtDestroyContext接口销毁Context。调用aclrtResetDeviceForce接口强制复位当前运算的Device回收Device上的资源。Stream管理调用aclrtCreateStreamWithConfig接口创建持久化Stream。调用aclrtCreateStream接口创建执行模型运行实例的Stream。调用aclrtSynchronizeStream接口阻塞等待Stream上任务执行完成。调用aclrtDestroyStream接口销毁Stream。内存管理调用aclrtMalloc接口申请Device内存存放分支索引。调用aclrtFree接口释放Device上的内存。数据传输调用aclrtMemcpy接口将Host侧的分支索引写入Device内存。模型运行实例管理调用aclmdlRIBuildBegin和aclmdlRIBuildEnd接口开始和结束模型运行实例构建。调用aclmdlRIBindStream和aclmdlRIUnbindStream接口绑定和解绑持久化Stream。调用aclmdlRIEndTask接口标记绑定Stream上的任务下发结束。调用aclmdlRIExecuteAsync接口异步执行模型运行实例。调用aclmdlRIDestroy接口销毁模型运行实例。Label创建与切换调用aclrtCreateLabel和aclrtDestroyLabel接口创建并释放Label。调用aclrtCreateLabelList和aclrtDestroyLabelList接口组装并释放LabelList。调用aclrtSetLabel接口在Stream上设置Label。调用aclrtSwitchLabelByIndex接口根据Device内存中的分支索引执行Label切换。已知 issue暂无。【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考