体验昇腾Ascend C 编程语言极简易用的算子开发

体验,ascend,编程语言,简易,算子,开发 · 浏览次数 : 139

小编点评

**昇腾Ascend C编程语言简易易学,提升开发效率** Ascend C 编程语言是一款易于学习、高性能的 C 编程语言,特别适用于开发基于昇腾AI的算法。它提供以下优势: * **支持 C 和 C++ 标准**:最大化与用户开发习惯的兼容性。 * **多层接口抽象**:屏蔽底层硬件差异。 * **自动并行计算**:简化并行编程逻辑。 * **孪生调试**:快速定位问题。 Ascend C 提供以下特性: * **计算接口和数据搬移接口的多层分层**,可满足不同硬件需求。 * **自动并行计算**,简化并行编程逻辑。 * **多层级类库接口封装**,提升代码可维护性。 * **单程序多数据 SPMD 并行**,简化并行编程。 * **孪生调试**,确保精度与性能的达标。 Ascend C 适用于各种 AI 开发任务,包括: * 神经网络训练 * 数据分析 * 图像处理 * 自然语言处理 **结论:** Ascend C 编程语言是开发基于昇腾AI的算法的理想选择。它提供易于学习、高性能、易调测等优势,可帮助开发者轻松高效地开发出高效的 AI 算法。

正文

摘要:昇腾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算子开发

Ascend C算子开发快速体验

 

点击关注,第一时间了解华为云新鲜技术~

与体验昇腾Ascend C 编程语言极简易用的算子开发相似的内容:

体验昇腾Ascend C 编程语言极简易用的算子开发

摘要:昇腾Ascend C编程语言,让基于昇腾AI的算法创新更加简单。 本文分享自华为云社区《CANN黑科技解密|昇腾Ascend C编程语言 — 极简易用的算子开发体验》,作者:昇腾CANN 。 AI应用的大脑是神经网络,而构成神经网络的基石是一个个算子。为了让开发者的网络在昇腾硬件上高效运行,昇

让你的文档从静态展示到一键部署可操作验证

用户在根据文档进行操作时,会出现根据文档内容搭建环境困难、代码调试失败、功能无法使用的情况,主要是由于文档中有年久失修、没人维护、无法跑通的代码,给用户快速上手带来很多的挑战。为了解决文档中的这些用户体验问题,通过函数计算的能力让阿里云的文档从静态展示升级为动态可操作验证,用户在文档中单击一键部署可

HDC2022的无障碍参会体验,手语服务是如何做到的?

华为开发者大会2022(HDC)上,HMS Core手语数字人以全新形象亮相,并在直播中完成了长达3个多小时的实时手语翻译,向线上线下超过一千万的观众提供了专业、实时、准确的手语翻译服务,为听障人士提供了无障碍参会体验。面对专业性强且词汇量大的科技大会,HMS Core手语数字人是如何准确且流畅地打

【一行代码秒上云】Serverless六步构建全栈网站

摘要:Serverless怎么玩?听一千道一万不如亲手来实践,跟着我们以华为云Serverless实践FunctionGraph来免费体验一下六步构建全栈网站吧 前言: Serverless怎么玩?听一千道一万不如亲手来实践,跟着我们以华为云Serverless实践FunctionGraph来免费体

在nodejs中体验http/2

前言 2015年,HTTP/2 发布,直到2021年公司的项目才开始在实践中应用;自己对http2诸多特点的理解只存在于字面上,于是尝试在nodejs中实践一下,加深自己的理解。 多路复用 同域名下所有通信都在单个连接上完成,消除了因多个 TCP 连接而带来的延时和内存消耗,这在大量请求同时发出的情

视野修炼-技术周刊第57期

① Rspress - 基于 Rspack 的高性能静态站点生成器 ② We OCR - 支持离线使用的图片文字识别工具 ③ pnpm v8.9 - MacOS上带来更大的性能提升 ④ 用户体验:嵌套菜单! ⑤ Draggable objects - 详细介绍网页元素的拖拽实现

袋鼠云出品!数栈UI 5.0全新体验升级,设计背后的故事

我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品。我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值。 前言 数栈作为云原⽣⼀站式⼤数据开发平台,从2016年发布第⼀个版本开始,数栈就始终坚持着以技术为 核⼼、安全为底线、提效为⽬标、中台为战略的思想,坚定不移地⾛国产化信

AR空间音频能力,打造沉浸式声音体验

随着元宇宙的兴起,3D虚拟现实广泛引用,让数字化信息和现实世界融合,目前大家的目光主要聚焦于视觉交互层面,为了在虚拟环境中更好的再现真实世界的三维空间体验,引入听觉层面必不可少,空间音频孕育而生。 空间音频是一种音频体验,会让用户更容易体验到声音的立体感和深度,将环绕声更准确地定位在合适的方位,让用

体验IntelliJ IDEA的远程开发(Remote Development)

IntelliJ IDEA的远程开发功能,可以将编译和运行等消耗资源任务放在服务器上执行,降低本地电脑负载,但是体验上和之前的IDEA操作保持一致,破旧的老机器也能焕发青春

玩一玩 Ubuntu 下的 VSCode 编程

一:背景 1. 讲故事 今天是五一的最后一天,想着长期都在 Windows 平台上做开发,准备今天换到 Ubuntu 系统上体验下,主要是想学习下 AT&T 风格的汇编,这里 Visual Studio 肯定是装不了了,还得上 VSCode,刚好前几天买了一个小工控机,这里简单记录下 零到一 的过程