参加原生创新算子挑战赛,需要基于CANN版本为8.0.RC1.alpha002进行Ascend C算子编写。我在启智社区的云环境创建调试任务进行实验的,选择的镜像版本如下:
打开调试任务之后,打开终端显示如下:
输入“bash”切换到bash命令格式:
创建一个工作目录:
mkdir work
进入到工作目录,下载CANN8.0.RC1.alpha00软件:
不同的操作系统,CPU架构不一样,可以使用如下命令查看CPU架构是aarch64还是x86_64。
uname -m
确定好CPU架构为aarch64之后,下载对应的安装包:
wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C17SPC702/Ascend-cann-toolkit_8.0.RC1.alpha002_linux-aarch64.run
下载好了软件包之后,赋执行权限并安装 :
chmod +x Ascend-cann-toolkit_8.0.RC1.alpha002_linux-aarch64.run
./Ascend-cann-toolkit_8.0.RC1.alpha002_linux-aarch64.run --full
安装过程大约需要15-20分钟。安装好之后显示如下信息:
其中表明CANN8.0.RC1.alpha002安装在/usr/local/Ascend目录下,这个地址对后面的Ascend C算子开发有很大作用,需要记住。
下载cmake,由于启智社区没有安装cmake,所以我下载cmake 3.27.4-linux-aarch64.tar.gz版本,使用如下代码:
wget https://temp-2a3b.obs.cn-north-4.myhuaweicloud.com/cmake-3.27.4-linux-aarch64.tar.gz
解压压缩包:
tar -xf cmake-3.27.4-linux-aarch64.tar.gz
配置环境变量:
source /usr/local/Ascend/ascend-toolkit/set_env.sh
export PATH=/home/ma-user/work/cmake-3.27.4-linux-aarch64/bin:$PATH
export ASCEND_HOME_DIR=/usr/local/Ascend/ascend-toolkit/latest
再次检验cmake版本,安装成功:
至此,环境安装成功。
接着就可以下载samples仓库:
git clone https://gitee.com/ascend/samples.git
AddKernelInvocation样例运行
打开样例目录
cd samples/operator/AddCustomSample/KernelLaunch/AddKernelInvocation
配置环境变量
export ASCEND_INSTALL_PATH=/usr/local/Ascend/ascend-toolkit/latest
样例执行
bash run.sh -r [RUN_MODE] -v [SOC_VERSION]
```
- SOC_VERSION:昇腾AI处理器型号,如果无法确定具体的[SOC_VERSION],则在安装昇腾AI处理器的服务器执行npu-smi info命令进行查询,在查询到的“Name”前增加Ascend信息,例如“Name”对应取值为xxxyy,实际配置的[SOC_VERSION]值为Ascendxxxyy。支持以下参数取值(xxx请替换为具体取值):
- Atlas 推理系列产品(Ascend 310P处理器)参数值:Ascend310P1、Ascend310P3
- Atlas 训练系列产品参数值:AscendxxxA、AscendxxxB
- Atlas A2训练系列产品参数值:AscendxxxB1、AscendxxxB2、AscendxxxB3、AscendxxxB4
- RUN_MODE:编译方式,可选择CPU调试,NPU仿真,NPU上板。支持参数为[cpu / sim / npu],默认值为cpu。
注:针对Atlas 训练系列产品使用NPU仿真调试,会存在精度问题,可选择其他芯片进行NPU仿真调试。
示例:
bash run.sh -r cpu -v Ascend910A
bash run.sh -r npu -v Ascend910A
编译算子工程
编译自定义算子工程,构建生成自定义算子包
切换到算子工程AddCustom目录
cd samples/operator/AddCustomSample/FrameworkLaunch/AddCustom
- 修改CMakePresets.json中ASCEND_CANN_PACKAGE_PATH为CANN软件包安装后的实际路径。(/usr/local/Ascend/ascend-toolkit/latest)
在算子工程AddCustom目录下执行如下命令,进行算子工程编译。
./build.sh
编译成功后,会在当前目录下创建build_out目录,并在build_out目录下生成自定义算子安装包custom_opp__.run,例如“custom_opp_ubuntu_x86_64.run”。
3.部署算子包
执行如下命令,在自定义算子安装包所在路径下,安装自定义算子包。
cd build_out
./custom_opp_euleros_aarch64.run
配置环境变量
export ASCEND_INSTALL_PATH=/usr/local/Ascend/ascend-toolkit/latest
通过aclnn调用的方式调用AddCustom算子工程
样例运行
进入到样例目录
```
cd samples/operator/AddCustomSample/FrameworkLaunch/AclNNInvocation
样例执行
样例执行过程中会自动生成测试数据,然后编译与运行aclnn样例,最后检验运行结果。具体过程可参见run.sh脚本。
```
bash run.sh
使用aclopExecuteV2模型调用的方式调用AddCustom算子工程
进入到样例目录
cd samples/operator/AddCustomSample/FrameworkLaunch/AclOfflineModel
样例执行
样例执行过程中会自动生成测试数据,然后编译与运行acl离线模型调用样例,最后检验运行结果。具体过程可参见run.sh脚本。
```
bash run.sh
```