体验昇腾Ascend C 编程语言极简易用的算子开发
摘要:昇腾Ascend C编程语言,让基于昇腾AI的算法创新更加简单。
本文分享自华为云社区《CANN黑科技解密|昇腾Ascend C编程语言 — 极简易用的算子开发体验》,作者:昇腾CANN 。
AI应用的大脑是神经网络,而构成神经网络的基石是一个个算子。为了让开发者的网络在昇腾硬件上高效运行,昇腾异构计算架构CANN(Compute Architecture for Neural Networks)提供了丰富的高性能算子库,包括神经网络库、线性代数计算库等,高性能算子数量达到1400+。有了高性能算子库的支撑,主流神经网络可轻松在昇腾硬件上高效运行。
但随着人工智能的爆发式增长,算法更新层出不穷,固定的高性能算子库可能无法完全满足开发者的多样化创新需求,为了让开发者提出的创新算法能够在硬件上运行起来,自定义算子开发的能力必不可少。
但算子开发是个复杂的工程,需要考虑众多因素,包括语言学习成本、功能逻辑的实现、硬件指令的适配、以及算子运行精度与性能的达标等等。往往一个经验丰富的算法专家开发一个高性能的算子都要耗时数周甚至更长的时间。
算子开发总体流程
为提升算子开发效率,降低算子开发成本,昇腾推出了面向算子开发场景的昇腾Ascend C编程语言。昇腾Ascend C编程语言原生支持C和C++标准规范,最大化匹配用户开发习惯;通过多层接口抽象,屏蔽了底层硬件差异;通过自动并行计算等关键技术,在保证性能的同时大大降低算子开发门槛。另外,昇腾Ascend C提供了孪生调试功能,大大缩短了算子调测时间。
Ascend C编程语言在异构计算架构CANN中的位置
多层级高性能类库接口
工欲善其事,必先利其器。为简化开发逻辑,昇腾Ascend C支持结构化核函数编程,提供了面向不同场景的高性能类库接口。开发者仅需通过类库接口的组装调用,即可轻松实现高性能算子。
Ascend C提供的类库接口
AI应用领域广泛,开发者的背景与需求也各不相同。为满足不同层级开发者的诉求,昇腾Ascend C针对计算接口和数据搬移接口,进行了分层分级,让开发者可以根据自身需求选择合适的接口。
针对计算类接口,当前Ascend C支持三个层级,其中级数越低,自由度越高,更易于表达复杂场景所需功能;级数越高,接口的封装度越高,更易于表达常用语义,使用起来也更简单。
计算接口分层分级与示例
针对搬移类接口,Ascend C将不同类型物理内存间的数据搬移抽象为一个统一的数据搬运接口,通过参数控制不同的搬运级别,从而满足不同数据搬运场景的需求。
数据搬运接口分层分级与示例
另外,多层级的类库接口封装,可以更好地屏蔽不同型号硬件间的差异,轻松实现算子代码对不同硬件的兼容。
自动并行计算
多层级的类库接口可以让开发者轻松实现算子的算法逻辑,达成预期功能。但一个好的算子,计算效率也是必须考虑的重要指标。众所周知,将任务并行处理是提高计算效率的关键手段,但AI处理器的内存层次结构比较复杂、数据通路多,数据之间的依赖关系复杂,这种场景下,并行计算之间的流水如何排布,各任务间的数据同步如何实现,往往是比较困难的。
为了方便开发者实现高效的并行计算,昇腾Ascend C采用SPMD(Single-Program Multiple-Data)并行模式,开发者仅需关注一个计算核心上的算子程序实现,程序调用时,可自动启动N个运行实例(我们称之为Block),每个实例都可部署到不同的计算核心上执行。由此,大大简化了开发者在多个计算核心上的并行编程逻辑。
单程序多数据SPMD并行计算
在算子逻辑实现上,Ascend C基于流水线并行的编程范式,将算子核心逻辑划分为“搬入、计算、搬出”,开发者只需聚焦实现“搬入、计算、搬出”内容,程序运行时,系统会自动将核内数据进行分片,每一片数据都专注完成单一功能,实现计算性能最大化。
核内多片数据流水线并行调度
孪生调试
昇腾Ascend C提供的多层级类库接口以及自动并行计算功能,给开发者提供了轻松高效的编码体验。但在上一代算子开发的整个流程中,代码编写的时间往往仅占不到30%,剩下70%多的时间都在进行功能与性能调试,好的调试能力对提升端到端开发效率的重要性不言而喻。
开发时间占比示例
那为什么算子调试如此耗时呢?究其主要原因,一方面是由于NPU环境下本身调试困难;另一方面是因为编程过程隐藏了并行细节,导致同步死锁、地址越界、数据溢出等问题难定位。
为提升算子调试效率,Ascend C提供了孪生调试能力,开发者既可以在CPU域进行调试调优,又可以在NPU侧进行调优验证,通过CPU域与NPU域相结合的方式,降低调试难度,提升调试效率。
在CPU域,开发者可通过业界标准C++工具GCC编译器进行编译,并通过GDB通用调试工具进行单步调试,精准验证程序执行流程是否符合预期。另外,昇腾Ascend C还提供了主动Bug分析工具,方便开发者快速进行问题定位;在NPU域,昇腾Ascend C提供了仿真调试能力与上板调试能力,开发者可以通过仿真调试的Profiling流水图、指令日志以及数据日志,精准进行性能调优,也可以通过上板调试进行真实行为的验证。孪生调试的能力,在提升算子调试效率的同时又可保证精度与性能的达标。
Ascend C孪生调试
人工智能蓬勃发展,算法创新层出不穷。昇腾提供的Ascend C编程语言,通过易上手、高性能、易调测的优势,为开发者的创新算法更轻松高效地在昇腾平台运行奠定了基石,让基于昇腾平台的AI创新更加简单。
点击如下链接,快速体验Ascend C算子开发

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
人工智能框架生态峰会即将召开,聚焦 AI 大模型技术与科学智能探索!
人工智能技术的迅猛发展正推动着全球创新的浪潮。在AI创新的背后,人工智能框架作为AI根技术,为开发者提供强大的工具和资源,扮演着至关重要的角色。备受瞩目的人工智能框架生态峰会2023即将召开,本次峰会将聚集顶尖AI公司、研究机构、开源社区、高校等,共同探讨人工智能框架的发展趋势与技术成果、成功案例和最佳实践,旨在促进各方广泛合作与深度交流,推动大模型与科学智能的创新,加速AI技术创新和应用落地。 作为全球领先的人工智能框架,昇思MindSpore将在峰会中发挥重要作用,引领人工智能框架的创新与发展。昇思首创多维混合并行技术,并具备全场景协同和全流程极简的特点,可实现一次开发云边端全场景部署、原生支持大模型训练、支持科学智能等关键特性。同时,昇思作为开源项目,鼓励开发者参与共建,目前已开源400多个模型,超过474万用户下载安装使用,在Gitee千万开源项目中综合排名第一,服务企业数量超过5500家,高校授课数量超过200所,超过40所科研机构选择昇思进行科研创新,顶级会议论文数量超过900篇,在所有AI框架中排名中国第一、全球第二,是国内最具创新活力的AI开源社区。 随着人工智能的发展...
- 下一篇
三维人脸建模和驱动技术,让数字人快速“活”起来
摘要:本文剖析MetaStudio中数字人制作管线背后的一些关键技术,让开发者快速了解当前平台提供的核心能力。 本文分享自华为云社区《三维人脸建模和驱动技术,让数字人快速“活”起来》,作者: 华为云社区精选 。 虚拟数字人一直是业界的热点研究问题,广泛应用在营销、直播、AR、VR等场景中。而传统的数字人制作流程非常依赖于美术人员,制作周期长、成本高、生产效率低。本次分享主要介绍华为云数字内容生产线MetaStudio中的数字人制作管线背后的一些关键技术,利用计算机视觉和图形学等技术,来提升数字人模型制作和动画制作的效率,具体包括高精度三维人脸重建、个性化人脸自动绑定、实时面部表情捕捉等技术,最后介绍一下基于隐式表示的数字人建模和驱动相关前沿技术和应用前景。 本文将剖析MetaStudio中数字人制作管线背后的一些关键技术,让开发者快速了解当前平台提供的核心能力。 什么是数字人 美国作家尼尔·斯蒂芬森在1992年出版的科幻小说《雪崩》中创造了两个概念:元宇宙(Metaverse)和虚拟分身(Avatar)。“虚拟分身”在中国发展至今拥有更广泛的称呼“虚拟数字人”,被视为未来人们进入“元宇...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装Docker,最新的服务器搭配容器使用
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Red5直播服务器,属于Java语言的直播服务器
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker使用Oracle官方镜像安装(12C,18C,19C)