前言:
Ascend C算子开发支持孪生调试技术,可以在CPU侧模拟NPU侧的行为,因此可以先在CPU侧开发和调试。但进行单算子API方式和模型方式调用等操作时,还是需要真实NPU环境的,本文介绍如何在启智平台成功搭建AscendC算子开发和调试环境。在此,致谢CANN训练营的小伙伴“豆豆”大神,在我向他求教的时候,他给我推荐了启智和思路。
一、概述:
从上篇的坑里,以及其它资料,我知道搭建AscendC开发环境,需要注意下列事项:
1、CANN的toolkit版本和算子开发包版本:本次开发使用的是“7.0.RC1.alpha002”。
2、使用云环境时,CANN的toolkit版本与驱动的版本需要兼容。
3、CMake的版本不低于3.16。
二、准备软件
软件包括CANN的toolkit、算子开发包和cmake。选择软件包的时候,需要根据host的硬件架构和操作系统选择合适的版本。硬件架构一般分为X86_64,或者ARM,对应的操作系统是Linux和Euler。对应的软件版本如下表所示:
具体软件按下图所示步骤去查找:
1、从昇腾社区首页进去,产品页,选择CANN
2、选择社区版
3、选择对应的版本下载toolkit和算子开发包。页面提供了X86_64和ARM两种架构的软件包,需要根据实际的硬件架构选择对应的版本。
三、搭建环境
首先需要先在启智注册,可以点这个链接【openi.pcl.ac.cn/user/sign_u…】进行注册,注册完成后,绑定微信后会送50个积分点,可以用50个小时的昇腾910,太香了。
1、完成注册后,先创建项目,然后再项目里选择创建“调试任务”,在弹出的页面里,按下图参数进行选择,特别需要注意的是镜像选择,选择目前启智提供的最新版本的“mindspore_2.1.0-cann_6.3.2-py_3.7-euler_2.10.7-aarch64-d910b”,尽管镜像CANN的版本是6.3.2,但与7.0比较接近,这样镜像的驱动会大概率可以兼容7.0(祈祷一定要兼容呀)
2、等待创建完成,然后进入环境。
3、检查下驱动版本和cmake版本
4、下载并安装toolkit、算子开发包、CMake(需要时)
从镜像名称可以看出,我们选择的是arm架构,910B芯片的开发环境。所以软件包,选择aarch64的版本。
1)下载并安装CANN的toolkit
wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C13SPC702/Ascend-cann-toolkit_7.0.RC1.alpha002_linux-aarch64.run -O Ascend-cann-toolkit_7.0.RC1.alpha002_linux-aarch64.run
chmod +x Ascend-cann-toolkit_7.0.RC1.alpha002_linux-aarch64.run
./Ascend-cann-toolkit_7.0.RC1.alpha002_linux-aarch64.run --install --force
2)下载并安装算子开发包
wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C13SPC702/Ascend-cann-communitysdk_7.0.RC1.alpha002_linux-aarch64.tar.gz -O Ascend-cann-communitysdk_7.0.RC1.alpha002_linux-aarch64.tar.gz
tar -xf Ascend-cann-communitysdk_7.0.RC1.alpha002_linux-aarch64.tar.gz -C ~/Ascend/ascend-toolkit/latest
3)镜像的CMake版本是3.16,不用再额外下载CMake的新版本。如果下载的话,可以用这个版本。
wget https://github.com/Kitware/CMake/releases/download/v3.26.4/cmake-3.26.4-linux-aarch64.tar.gz
tar -xf cmake-3.26.4-linux-aarch64.tar.gz
5、配置环境变量
source /home/ma-user/Ascend/ascend-toolkit/set_env.sh
export ASCEND_CUSTOM_PATH=$HOME/Ascend/ascend-toolkit/latest
export ASCEND_HOME_DIR=$HOME/Ascend/ascend-toolkit/latest
如果新安装了CMake,执行下一句:
export PATH=/home/ma-user/work/cmake-3.26.4-linux-x86_64/bin:$PATH
四、验证:
1、下载CANN训练营提供的例程——Ascend的开源Sample仓:gitee.com/ascend/samp…
git clone https://gitee.com/ascend/samples.git
由于git速度较慢,我选择将sample包下载到本地,然后在上传到云环境中,
并解压缩。
unzip samples-master.zip
2、验证Add_Custom
1)验证NPU模式下,简单的核函数调用方式:
进入samples-masteroperatorAddCustomSamplekernel_direct_call 目录(采用git方式 用sample 替换 sample-master),运行:
bash run.sh ascend910B1 npu_onboard
2)验证单算子API方式调用
进入samples-masteroperatorAddCustomSampleaclnn_online_model目录(采用git方式 用sample 替换 sample-master),运行:
bash run.sh
五、结语:
至此,AscendC算子开发的NPU环境已经成功搭建完成,下面就可以开始神奇算子开发旅程了,希望大家都能学会先进的AscendC算子开发方法,同时赢得大奖。