在香橙派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算子例程

        受限于篇幅,本笔记不描述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芯片性能会更好的发挥,也会越来越好用!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,125评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,293评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,054评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,077评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,096评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,062评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,988评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,817评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,266评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,486评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,646评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,375评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,974评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,621评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,642评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,538评论 2 352

推荐阅读更多精彩内容