3_cond_model
【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime
描述
本样例展示 aclGraph 条件操作(IF/WHILE/SWITCH)的图捕获与执行,覆盖 3 个典型场景:
- IF 条件双分支验证(true 分支 alpha=2.0,false 分支 alpha=0.5)
- WHILE 单次迭代循环(循环体执行一次后退出)
- SWITCH 多分支选择(3 个 case 各用不同 alpha)
核心结论:aclGraph 条件操作通过aclmdlRICondHandle+aclmdlRIAddCondTask实现 IF/WHILE/SWITCH 分支捕获,通过aclmdlRICondHandleGetCondPtr获取设备端条件指针,执行时由条件值动态决定分支走向。
注意:本样例需要 CANN 版本支持 aclGraph 条件操作 API(aclmdlRICondHandleCreate、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),仅供参考