自定义算子工程+aclop单算子模型调用样例
概述
本样例基于示例自定义算子工程,介绍了aclopExecuteV2单算子模型的方式执行固定shape算子。
支持的产品
本样例支持如下产品型号:
- Ascend 950PR/Ascend 950DT
- Atlas A3 训练系列产品/Atlas A3 推理系列产品
- Atlas A2 训练系列产品/Atlas A2 推理系列产品
- Atlas 200I/500 A2 推理产品
- Atlas 推理系列产品
目录结构介绍
├── aclop_invocation
│ ├── add_custom.json
│ ├── CMakeLists.txt
│ └── main.cpp
代码实现简介
完成自定义算子的开发部署后,可以通过单算子模型调用的方式来验证单算子的功能。具体可参考单算子调用中“单算子模式执行”相关章节。
单算子模型调用,在离线模式下需要提前通过atc --singleop生成单算子离线模型,并在应用中配置模型目录。
本样例中通过aclopExecuteV2接口执行单算子模型,核心流程如下:
- 通过
aclCreateTensorDesc创建输入/输出Tensor描述,并使用aclCreateDataBuffer准备Device侧数据Buffer。 - 调用
aclopSetModelDir指定模型目录后,使用aclopExecuteV2执行算子计算。 - 同步流
aclrtSynchronizeStream,并将Device侧结果拷回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 # 使用atc模型转换工具生成单算子离线模型 atc --singleop=../add_custom.json --output=. --soc_version=${soc_version} cmake .. && make -j ./execute_add_opAI处理器的型号<soc_version>请通过如下方式获取:
-
针对如下产品型号:在安装昇腾AI处理器的服务器执行
npu-smi info命令进行查询,获取Name信息。实际配置值为AscendName,例如Name取值为xxxyy,实际配置值为Ascendxxxyy。- Atlas A2 训练系列产品 / Atlas A2 推理系列产品
- Atlas 200I/500 A2 推理产品
- Atlas 推理系列产品
- Atlas 训练系列产品
-
针对如下产品型号,在安装昇腾AI处理器的服务器执行
npu-smi info -t board -i <id> -c <chip_id>命令进行查询,获取Chip Name和NPU Name信息,实际配置值为Chip Name_NPU Name。例如Chip Name取值为Ascendxxx,NPU Name取值为1234,实际配置值为Ascendxxx_1234。其中:id:设备id,通过
npu-smi info -l命令查出的NPU ID即为设备idchip_id:芯片id,通过
npu-smi info -m命令查出的Chip ID即为芯片id- Atlas A3 训练系列产品 / Atlas A3 推理系列产品
基于同系列的AI处理器型号创建的算子工程,其基础功能(基于该工程进行算子开发、编译和部署)通用。
执行结果如下,说明执行成功。
test pass -