CANN/runtime条件模型示例
3_cond_model【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime描述本样例展示 aclGraph 条件操作IF/WHILE/SWITCH的图捕获与执行覆盖 3 个典型场景IF 条件双分支验证true 分支 alpha2.0false 分支 alpha0.5WHILE 单次迭代循环循环体执行一次后退出SWITCH 多分支选择3 个 case 各用不同 alpha核心结论aclGraph 条件操作通过aclmdlRICondHandleaclmdlRIAddCondTask实现 IF/WHILE/SWITCH 分支捕获通过aclmdlRICondHandleGetCondPtr获取设备端条件指针执行时由条件值动态决定分支走向。注意本样例需要 CANN 版本支持 aclGraph 条件操作 APIaclmdlRICondHandleCreate、aclmdlRIAddCondTask、aclmdlRICaptureToModelRIBegin等请确认 CANN 版本包含这些接口后再运行。产品支持情况本样例在以下产品上的支持情况如下产品是否支持Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√编译运行1.下载样例代码至安装CANN软件的环境切换到样例目录。cd ${git_clone_path}/example/2_advanced_features/model_ri/3_cond_model2.设置环境变量。# ${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 source ${git_clone_path}/example/set_sample_env.sh3.执行以下命令运行样例。bash run.shCANN RUNTIME API在该样例中涉及的关键功能点及其关键接口如下所示初始化调用aclInit接口进行初始化配置。调用aclFinalize接口实现去初始化。Device 管理调用aclrtSetDevice接口指定用于运算的 Device。调用aclrtResetDeviceForce接口复位当前运算的 Device回收 Device上的资源。Context 管理调用aclrtCreateContext接口创建 Context。调用aclrtDestroyContext接口销毁 Context。Stream 管理调用aclrtCreateStream接口创建 Stream。调用aclrtDestroyStream接口销毁 Stream。调用aclrtSynchronizeStream接口阻塞等待 Stream 上任务的完成。内存管理调用aclrtMalloc接口申请 Device 上的内存。调用aclrtFree接口释放 Device 上的内存。数据传输调用aclrtMemcpy接口通过内存复制的方式实现数据传输。调用aclrtMemcpyAsync接口进行异步的内存复制。aclGraph 条件操作调用aclmdlRICaptureBegin接口开始图捕获。调用aclmdlRICaptureEnd接口结束图捕获得到 modelRI 句柄。调用aclmdlRICaptureGetInfo接口获取图捕获状态和 modelRI。调用aclmdlRICondHandleCreate接口创建条件句柄。调用aclmdlRICondHandleGetCondPtr接口获取条件指针。调用aclmdlRIAddCondTask接口注册条件任务IF/WHILE/SWITCH。调用aclmdlRICaptureToModelRIBegin接口开始子模型捕获。调用aclmdlRIExecuteAsync接口异步执行模型运行实例。调用aclmdlRIDestroy接口销毁模型运行实例。aclnn 算子调用aclnnAddGetWorkspaceSize和aclnnAdd接口执行加法算子计算。已知issue暂无【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考