自定义算子工程+aclnn单算子API调用样例
概述
本样例基于示例自定义算子工程,介绍了aclnnOpType单算子API的方式执行固定shape算子。
支持的产品
本样例支持如下产品型号:
- Ascend 950PR/Ascend 950DT
- Atlas A3 训练系列产品/Atlas A3 推理系列产品
- Atlas A2 训练系列产品/Atlas A2 推理系列产品
- Atlas 200I/500 A2 推理产品
- Atlas 推理系列产品
目录结构介绍
├── aclnn_invocation
│ ├── CMakeLists.txt
│ └── main.cpp
代码实现介绍
完成自定义算子的开发部署后,可以通过单算子API调用的方式来验证单算子的功能。具体可参考单算子API调用章节以及单算子调用中“单算子API执行”相关章节。
单算子API执行是基于C语言的API执行算子,无需提供单算子描述文件进行离线模型的转换,可直接调用单算子API接口。
本样例中通过aclnnAddCustomGetWorkspaceSize与aclnnAddCustom两段式接口执行算子计算,核心流程如下:
- 创建输入/输出
aclTensor并准备Device侧数据。 - 调用
aclnnAddCustomGetWorkspaceSize获取本次计算所需workspace大小,并申请对应Device内存。 - 调用
aclnnAddCustom执行计算,同步流aclrtSynchronizeStream,并将结果拷回Host侧进行验证。
编译运行
-
编译、打包和部署自定义算子工程
运行此样例前,请参考自定义算子工程样例完成前期准备。
-
配置环境变量
请根据当前环境上CANN开发套件包的安装方式,选择对应配置环境变量的命令。
-
默认路径,root用户安装CANN软件包
source /usr/local/Ascend/cann/set_env.sh -
默认路径,非root用户安装CANN软件包
source $HOME/Ascend/cann/set_env.sh -
指定路径install_path,安装CANN软件包
source ${install_path}/cann/set_env.sh
-
-
样例执行
在本样例根目录下执行如下步骤,运行该样例。
mkdir -p build; cd build cmake .. && make -j ./execute_add_op执行结果如下,说明执行成功。
test pass