CANN/runtime条件模型示例
2026/6/15 22:00:58 网站建设 项目流程

3_cond_model

【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime

描述

本样例展示 aclGraph 条件操作(IF/WHILE/SWITCH)的图捕获与执行,覆盖 3 个典型场景:

  1. IF 条件双分支验证(true 分支 alpha=2.0,false 分支 alpha=0.5)
  2. WHILE 单次迭代循环(循环体执行一次后退出)
  3. SWITCH 多分支选择(3 个 case 各用不同 alpha)

核心结论:aclGraph 条件操作通过aclmdlRICondHandle+aclmdlRIAddCondTask实现 IF/WHILE/SWITCH 分支捕获,通过aclmdlRICondHandleGetCondPtr获取设备端条件指针,执行时由条件值动态决定分支走向。

注意:本样例需要 CANN 版本支持 aclGraph 条件操作 API(aclmdlRICondHandleCreateaclmdlRIAddCondTaskaclmdlRICaptureToModelRIBegin等),请确认 CANN 版本包含这些接口后再运行。

产品支持情况

本样例在以下产品上的支持情况如下:

产品是否支持
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品

编译运行

1.下载样例代码至安装CANN软件的环境,切换到样例目录。

cd ${git_clone_path}/example/2_advanced_features/model_ri/3_cond_model

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 source ${git_clone_path}/example/set_sample_env.sh

3.执行以下命令运行样例。

bash run.sh

CANN 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 算子
    • 调用aclnnAddGetWorkspaceSizeaclnnAdd接口执行加法算子计算。

已知issue

暂无

【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询