在香橙派AIPro上运行Ascend C自定义算子

前言:

        使用昇腾平台进行推理开发,在进行离线模型转换时,可能会遇到不支持的算子;或者进行网络调优时,发现某算子性能较低,这都需要开发自定义算子。因此,基于香橙派AIPro开发板进行开发时,也需要使用到自定义算子开发技术。笔者欣喜的发现CANN社区版从CANN_toolkit8.0RC1.alpha001版本开始,已经支持Atlas 200 A2推理产品进行Ascend C算子开发。香橙派AIPro开发板官方镜像(2024.02.27)预装的CANN版本是7.0,本文描述了在此镜像基础上,安装新版本的CANN,并下载sample仓代码进行Ascend C算子运行测试。

一、概述

一)Ascend C算子开发

        从CANN社区版8.0RC1.alpha001版本开始,支持Ascend C的产品型号增加了 Atlas 200 A2推理产品,Ascend 官方Sample仓也完善了相关例程。可以通过访问下述网址获取最新的信息:

        昇腾社区官网:https://www.hiascend.com/

        昇腾gitee sample仓:https://gitee.com/ascend/samples

 

        Ascend C算子开发流程如下图所示:

 

        本篇笔记,讲述的是上图红框圈出来的内容,即:在香橙派AI Pro开发板上1)安装Ascend C开发调试的软件环境;使用官方的sample仓的AddCustom例程,进行2)编译部署;3)算子调用,用来验证Ascend C算子开发环境安装和配置正确。对Ascend C算子开发感兴趣的小伙伴,可以访问:

https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/80RC1alpha002/devguide/opdevg/ascendcopdevg/atlas_ascendc_10_0025.html

        获取进一步信息。

二)OrangePi AIPro开发板

        Orange Pi AIpro是香橙派联合华为推出的,采用昇腾AI技术路线,在昇腾全栈 AI 软硬件平台赋能下,满足大多数AI算法原型验证、推理应用开发的需求的一款AI开发板。

http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-AIpro.html

 

        这款开发板具有如下特点:

1、算力强劲,内存容量大——8T/20T,内存8G/16G;

2、接口丰富,易于扩展;

3、支持多种操作系统——Ubuntu、Openeuler;

4、用途广应用场景广泛,覆盖 AIoT各行各业;

5、资料丰富、样例丰富、易学易用。

二、环境准备

        搭建Ascend C算子开发环境包括安装toolkit、驱动、固件;配置环境变量等内容。本篇笔记将描述在香橙派AI Pro开发板(8T/16G)上完成环境搭建和例程运行。镜像版本为opiaipro_ubuntu22.04_desktop_aarch64_20240227.img.xz,需要:将预装的CANN7.0版本升级到CANN8.0.RC1.alpha002;驱动和固件已经支持CANN8.0,无需升级;配置环境变量。

        感兴趣的小伙伴,可以参考:“文档首页/CANN社区版/8.0.RC1.alpha002/快速安装CANN“,https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/80RC1alpha002/quickstart/quickstart/quickstart_18_0004.html

一)下载&安装 toolkit

1、下载toolkit

        从昇腾社区官方下载“https://www.hiascend.com/software/cann”CANN社区版8.0.RC1.alpha002/,建议下载最新版。将下图所示toolkit包下载到香橙派AI Pro开发板。

 

2、安装Toolkit

        对toolkit包赋予执行权限,运行安装。具体可参考:https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/80RC1alpha002/softwareinst/instg/instg_0038.html

 

二)下载&更新驱动和固件(本次不需要,操作要慎重)

1、下载驱动和固件

        驱动和固件,与toolkit版本以及硬件有关,如下图所示:

 

2、安装、更新固件和驱动

        本次无需更新固件和驱动,对更新固件和驱动感兴趣的小伙伴可以移步:

https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/80RC1alpha002/softwareinst/instg/instg_0019.html,如下图红框中的内容。

 

3、查看驱动和固件版本

    查看驱动版本 npu-smi info

 

    查看固件版本 /var/davinci/driver/upgrade-tool --device_index -1 --component -1 --all --version

 

三)配置环境变量

        环境变量应该按实际CANN的安装路径进行配置,以root用户,CANN默认安装路径:/usr/local/Ascend,配置环境变量如下:

source /usr/local/Ascend/ascend-toolkit/set_env.sh

export ASCEND_CUSTOM_PATH=/usr/local/Ascend/ascend-toolkit/latest

export ASCEND_HOME_DIR=/usr/local/Ascend/ascend-toolkit/latest

    另外Ascend C算子例程要求 Cmake 版本>3.16,开发板环境已满足条件:

 

运行Ascend C算子例程

        受限于篇幅,本笔记不描述Ascend C算子的开发过程,仅对现有的例程,进行核函数调用和单算子调用的操作过程并记录。

一)下载sample仓

gitee上的Ascend / samples仓:

https://gitee.com/ascend/samples/tree/master/operator

 

二)核函数运行验证

        核函数即算子kernel程序开发完成后,即可编写host侧的核函数调用程序,实现从host
侧的APP程序调用算子,进行运行验证。主要有CPU侧和NPU侧两种运行验证方法:

CPU侧运行验证:主要通过ICPU_RUN_KF CPU调测宏等CPU调测库提供的接口来完成;

NPU侧运行验证:主要通过使用<<<>>>内核调用符和AscendCL API提供的运行时接口来完成。

 

        CPU侧功能验证结果:

 

        npu侧运行结果:

 

        进一步阅读可参考:https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/80RC1alpha002/devguide/opdevg/ascendcopdevg/atlas_ascendc_10_0019.html

三)算子编译部署

        进行算子调用前,无论是单算子调用还是在网络中使用自定义算子,都需要对算子工程进行编译和部署。https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/80RC1alpha002/devguide/opdevg/ascendcopdevg/atlas_ascendc_10_0035.html

 

1、检查、修改编译选项

 

2编译自定义算子

bash build.sh

 

3安装自定义算子

        在自定义算子包所在路径下,执行如下命令,安装自定义算子包。

 

        我们可以在自定义算子安装路径下查看:

 

四)运行ACLNN调用工程

 

运行结果:

 

        至此,Ascend C自定义算子例程已经在香橙派 AIPro的开发板上完成了验证测试。相信随着CANN的持续更新,昇腾AI芯片性能会更好的发挥,也会越来越好用!

  • 29
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值