环境准备
环境准备
更新CANN软件
-
切换至root用户,并进入默认下载目录/home/HwHiAiUser/Downloads。
su rootcd /home/HwHiAiUser/Downloads -
单击链接,获取8.0.RC1.alpha001版本的CANN开发套件包Ascend-cann-toolkit_8.0.RC1.alpha001_linux-aarch64.run,并上传至当前目录。
-
增加对软件包的可执行权限。
chmod +x Ascend-cann-toolkit_8.0.RC1.alpha001_linux-aarch64.run -
卸载环境上原有的Ascend-cann-toolkit开发套件包。
./Ascend-cann-toolkit_8.0.RC1.alpha001_linux-aarch64.run --uninstall -
删除软件包所在目录下的文件。
rm -rf /usr/local/Ascend/ascend-toolkit/* -
静默安装最新版本的Ascend-cann-toolkit开发套件包,即自动签署华为企业业务最终用户许可协议(EULA)。
./Ascend-cann-toolkit_8.0.RC1.alpha001_linux-aarch64.run --full --quiet -
安装protobuf依赖。
pip install protobuf==3.20.0 -
执行如下命令配置环境变量。
echo "source /usr/local/Ascend/ascend-toolkit/set_env.sh" >> /root/.bashrc -
执行如下命令使环境变量生效。
source /root/.bashrc
获取算子samples代码
在开发者套件连接个人PC并且网络连接正常的情况下,执行如下命令返回至用户根目录,在根目录下载算子samples代码。
cd ~
git clone https://gitee.com/ascend/samples.git
AddCustom算子样例执行
AddCustom算子样例支持多种方式调用执行,以下内容以ACLNN接口和核函数两种常用的方式为例进行介绍,更多方式请参考样例仓中的readme指导。
ACLNN接口调用执行
-
进入AddCustom算子样例目录。
cd ~/samples/operator/AddCustomSample/目录示例如下:

-
执行编译打包命令生成自定义算子包。
cd FrameworkLaunch/AddCustom./build.sh编译成功结果示例:

-
部署自定义算子包。
./build_out/custom_opp_ubuntu_aarch64.run部署成功结果示例:

-
通过应用程序样例调用算子的ACLNN接口进行测试。
cd ~/samples/operator/AddCustomSample/FrameworkLaunch/AclNNInvocationbash run.sh测试结果示例:

核函数调用执行
-
进入AddCustom算子样例核函数调用执行目录。
cd ~/samples/operator/AddCustomSample/KernelLaunch/AddKernelInvocation -
运行kernellanch调用执行样例脚本。
bash run.sh -v Ascend310B1 -r npu
新建算子工程开发算子
-
创建工程与IR json文件。
-
执行如下命令返回根目录。
cd ~ -
创建AddCustom.json文件。
vim AddCustom.json -
键盘按下“i”键进入INSERT模式,复制以下内容至文件,以AddCustom为例:
[{"op": "AddCustom","language": "cpp","input_desc": [{"name": "x","param_type": "required","format": ["ND"],"type": ["float16"]},{"name": "y","param_type": "required","format": ["ND"],"type": ["float16"]}],"output_desc": [{"name": "z","param_type": "required","format": ["ND"],"type": ["float16"]}]}] -
编辑完成后,按“ESC”键退出INSERT模式,执行**:wq**保存AddCustom.json文件。
-
-
使用msopgen工具创建Ascend C算子工程。
/usr/local/Ascend/ascend-toolkit/latest/python/site-packages/bin/msopgen gen -i AddCustom.json -f tf -c ai_core-ascend310b -lan cpp -out ~/AddCustom
-
开发算子的host侧代码及kernel侧代码。
可参考Samples仓AddCustom算子样例,host侧:
cp ~/samples/operator/AddCustomSample/FrameworkLaunch/AddCustom/op_host/* ~/AddCustom/op_host/kernel侧:
cp ~/samples/operator/AddCustomSample/FrameworkLaunch/AddCustom/op_kernel/* ~/AddCustom/op_kernel/ -
修改算子工程中配置文件CMakePresets.json,将CMakePresets.json中ASCEND_CANN_PACKAGE_PATH的value值修改为实际CANN包安装目录/usr/local/Ascend/ascend-toolkit/latest。
-
执行如下命令打开配置文件。
cd ~/AddCustomvim CMakePresets.json -
使用键盘的方向键令光标移动到ASCEND_CANN_PACKAGE_PATH的值位置,按下键盘上“i”键进入到INSERT模式,修改为CANN包安装目录

修改完成后按“ESC”键退出INSERT模式,执行**:wq**保存文件。
-
-
编译生成算子安装包。
在AddCustom目录下执行如下命令编译自定义AddCustom算子,生成算子安装包。
./build.sh
Atlas 200I DK A2开发者套件
Ascend C算子开发
在线提单