【AI系统】昇腾异构计算架构 CANN

昇腾异构计算架构 CANN

本文将介绍昇腾 AI 异构计算架构 CANN(Compute Architecture for Neural Networks),这是一套为高性能神经网络计算需求专门设计和优化的架构。CANN 包括硬件层面的达·芬奇架构和软件层面的全栈支持,旨在提供强大的硬件基础和管理网络模型、计算流及数据流的软件栈,以支撑神经网络在异构处理器上的执行。

通过本文内容的学习,读者将能够理解 CANN 如何为深度学习提供全面的硬件和软件支持,以及如何通过其多层级架构实现高效的 AI 应用开发和性能优化。

总体架构

本节参考文献:《Ascend C 异构并行程序设计》——苏统华,杜鹏,闫长江,2024

昇腾 AI 异构计算架构(Compute Architecture for Neural Networks,CANN)是专门为高性能神经网络计算需求所设计和优化的一套架构。在硬件层面,昇腾 AI 处理器所包含的达·芬奇架构在硬件设计上进行计算资源的定制化设计,在功能实现上进行深度适配,为神经网络计算性能的提升提供了强大的硬件基础。在软件层面,CANN 所包含的软件栈则提供了管理网络模型、计算流以及数据流的功能,支撑起神经网络在异构处理器上的执行流程。

如下图所示,CANN 作为昇腾 AI 处理器的异构计算架构,支持业界多种主流的 AI 框架,包括 MindSpore、TensorFlow、PyTorch、Jittor 等。Ascend C 算子开发语言,开放全量低阶 API 接口使能开发者完成高性能自定义算子开发;开放高阶 API 接口,降低开发难度,开发者可快速实现复杂自定义算子开发。GE 图引擎(Graph Engine),包括图优化、图编译、图执行等,便于开发者使用,优化整网性能。HCCL 集合通信库(Huawei Collective Communication Library),可供开发者直接调用,改善网络拥塞,提升网络资源利用率和运维效率。AOL 算子加速库(Ascend Operator Library),提供基础算子和大模型融合算子 API 接口对外开放,供开发者直接调用,使能大模型极致性能优化。Runtime 运行时,将硬件资源(计算、通信、内存管理等)的 API 接口对外开放,满足开发者对模型开发、系统优化、第三方 AI 框架对接等不同场景诉求。

在这里插入图片描述

CANN 提供了功能强大、适配性好、可自定义开发的 AI 异构计算架构,自顶向下分为 5 部分。

在这里插入图片描述

昇腾计算语言(Ascend Computing Language,简称 AscendCL):AscendCL 接口是昇腾计算开放编程框架,是对底层昇腾计算服务接口的封装。它提供设备(Device)管理、上下文(Context)管理、流(Stream)管理、内存管理、模型加载与执行、算子加载与执行、媒体数据处理、图(Graph)管理等 API 库,供用户开发 AI 应用。

昇腾计算服务层(Ascend Computing Service Layer): 主要提供昇腾算子库 AOL(Ascend Operator Library),通用神经网络(Neural Network,NN)库、线性代数计算库(Basic Linear Algebra Subprograms,BLAS)等高性能算子加速计算;昇腾调优引擎 AOE(Ascend Optimization Engine),通过算子调优 OPAT、子图调优 SGAT、梯度调优 GDAT、模型压缩 AMCT 提升模型端到端运行速度。同时提供 AI 框架适配器 Framework Adaptor 用于兼容 TensorFlow、PyTorch 等主流 AI 框架。

昇腾计算编译层(Ascend Computing Compilation Layer):昇腾计算编译层通过图编译器(Graph Compiler)将用户输入中间表达(Intermediate Representation,IR)的计算图编译成昇腾硬件可执行模型;同时借助张量加速引擎 TBE(Tensor Boost Engine)的自动调度机制,高效编译算子。

昇腾计算执行层(Ascend Computing Execution Layer):负责模型和算子的执行,提供运行时库(Runtime)、图执行器(Graph Executor)、数字视觉预处理(Digital Vision Pre-Processing,DVPP)、 AI 预处理(Artificial Intelligence Pre-Processing,AIPP)、华为集合通信库(Huawei Collective Communication Library,HCCL)等功能单元。

昇腾计算基础层(Ascend Computing Base Layer):主要为其上各层提供基础服务,如共享虚拟内存(Shared Virtual Memory,SVM)、设备虚拟化(Virtual Machine,VM)、主机-设备通信(Host Device Communication,HDC)等。

关键功能特性

推理应用开发

CANN 提供了在昇腾平台上开发神经网络应用的昇腾计算语言 AscendCL(Ascend Computing Language),提供运行资源管理、内存管理、模型加载与执行、算子加载与执行、媒体数据处理等 API,实现利用昇腾硬件计算资源、在昇腾 CANN 平台上进行深度学习推理计算、图形图像预处理、单算子加速计算等能力。简单来说,就是统一的 API 框架,实现对所有资源的调用。

模型训练

CANN 针对训练任务提供了完备的支持,针对 PyTorch、TensorFlow 等开源框架网络模型,CANN 提供了模型迁移工具,支持将其快速迁移到昇腾平台。此外,CANN 还提供了多种自动化调测工具,支持数据异常检测、融合异常检测、整网数据比对等,帮助开发者高效问题定位。

算子开发

CANN 提供了超过 1400 个硬件亲和的高性能算子,可覆盖主流 AI 框架的算子加速需求,同时,为满足开发者的算法创新需求,CANN 开放了自定义算子开发的能力,开发者可根据自身需求选择不同的算子开发方式。

特性与优点

  1. 统一 APP 编程语言:提供一套标准的 AscendCL 编程接口,对应用程序开发者屏蔽底层多种芯片差异,提升用户 APP 编程易用性。

  2. 统一的网络构图接口:提供了标准的昇腾计算 AIR,支持多宽广,支持用户在昇腾处理器上快速部署神经网络业务。

  3. 高性能计算引擎及算子库:通过高性能编程引擎/执行引擎/调优引擎和预置高性能算子库,支持用户快速部署神经网络业务,降低部署成本并最大程度发挥昇腾计算能力。

  4. 基础业务:驱动、虚拟化、媒体、集合通信等能力。

CANN 各层面能力

CANN 包含许多硬件无关的优化,但是到 Low Level 优化层面,由于各家厂商芯片特点不同,每家芯片都存在一些硬件耦合的 Low Level 优化,CANN 也如此,通过 CANN,对上层保持用户使用界面的兼容和统一,尽可能让用户较少感知硬件差异,对下则根据不同代际芯片的特点提升能力。

在这里插入图片描述

昇腾计算语言

昇腾计算开放了编程框架,封装底层昇腾计算服务接口,提升编程易用性,该开放编程框架名字叫做 AscendCL(AscendCL Computing Language)。其中包含了三个部分:

  1. 应用开发接口

该系列接口提供深度学习推理计算、图形图像预处理以及单算子调用及加速能力,通过这些能力实现对昇腾硬件计算的调用。该系列接口通常用于开发离线推理应用,或供第三方框架调用以及供第三方系统开发 lib 调用。

  1. 图开发接口

该系列接口提供了统一的网络构图接口,支持多种框架调用,支持用户在昇腾 AI 处理器上快速部署神经网络业务。通过该系列接口可以支持基于算子原型进行构图,也可以利用 Parsar 进行神经网络解析输出 IR。

  1. 算子开发接口

该系列接口有一个单独的名称——Ascend C。Ascend C 是 CANN 在算子开发场景为开发者提供的编程语言,原生支持 C&C++标准规范,最大化匹配用户的开发习惯。Ascend C 支持结构化的核函数编程,自动流水并行调度以及 CPU/NPU 孪生调试等特性。

在这里插入图片描述

昇腾计算服务层

昇腾计算服务层是基于底层框架封装出来的一些能力集合,包含一套完善的昇腾算子库(Ascend Operator Library,AOL)以及调优工具的集合——昇腾调优引擎(Ascend Optimize Engine,AOE)。算子库中包含了 NN(Neural Network)算子库,BLAS(Basic Linear Algebra Subprograms)算子库,DVPP(Digital Vision Pre-Processing)算子库,AIPP(AI Pre-Processing)算子库,HCCL(Huawei Collective Communication Library)算子库以及融合算子库等,支持单个算子直接调用,也支持将算子集成到框架中进行调用。

昇腾调优引擎用于在推理、训练等场景对模型、算子、子图等进行调优,充分利用硬件资源,不断提升网络的性能。支持整图调优,调度调优,以及分布式场景下通信梯度的调优。调优是门槛相对较高的一项开发活动,以算子调优为例,需要开发者了解诸如片内高速缓存大小、数据搬运逻辑、调度策略等,人工调优是一项耗时耗力的工作,昇腾调优引擎通过将一些常见调优手段、分析方法固化到工具中,使开发者只需通过调优工具对模型进行分析,生成知识库,再运行模型时性能将有一定程度的提升。

在这里插入图片描述

昇腾计算编译层

昇腾计算编译层包含对计算图的编译和对算子的编译。向上可以与各类 AI 框架对接,为其提供构图接口,并通过提供各类解析器解析框架的计算图(比如 TensorFlow Parser)。解析好的 IR 在图编译阶段做一些计算无关的优化,如图准备(形状推导,常量折叠,死边消除等等),图优化(图融合、图切分、流水执行、缓存复用、算子引擎选择、cost model 建立等)、图编译(整图内存复用、连续内存分配、Task 生成等)。算子编译阶段负责 UB(Unified Buffer)融合,CCE-C 代码生成等。

在这里插入图片描述

昇腾计算执行层

包括 DVPP、Graph Executor、HCCL、AIPP 以及 Runtime 等组件。其中 Runtime 包含了对执行流管理、上下文管理、事件管理、任务管理以及其他资源申请及管理等能力。Graph Executor 中包含对计算图的加载和执行能力。HCCL 则包含对子通信域的管理,Rank 管理、梯度切分、集合通信等能力。DVPP 和 AIPP 则在两种不同维度上对数据做预处理操作。

在这里插入图片描述

昇腾计算基础层

昇腾计算基础层包含于驱动和 OS 相关的基础能力,包括资源管理(Resource Management Service,RMS)、通信管理(Communication Management Service,CMS)、设备管理(Device Management Service,DMS)、驱动(Driver,DRV)、公共服务(Utility)等组件。

其中 RMS 负责管理与调度昇腾设备的计算、Device 内存等关键资源;CMS 负责提供片内、片间高效通信;DMS 负责对昇腾设备进行配置、切分、升级、故障检测等管理;DRV 负责使能硬件;UTILITY 负责提供基础库和系统维测能力。

昇腾计算基础层提供的关键竞争力包括:

  1. 高性能:微秒级确定性调度,数据零拷贝登记书打造高性能数据面;

  2. 高可信:五道安全防线构建昇腾解决方案可信底座;

  3. 归一化:一套架构-接口-代码支持多芯、多板、多场景;

  4. 弹性:端/边/云灵活适应,虚机/容器/裸金属快速部署,算力细粒度按需切分。

如果您想了解更多AI知识,与AI专业人士交流,请立即访问昇腾社区官方网站https://www.hiascend.com/或者深入研读《AI系统:原理与架构》一书,这里汇聚了海量的AI学习资源和实践课程,为您的AI技术成长提供强劲动力。不仅如此,您还有机会投身于全国昇腾AI创新大赛和昇腾AI开发者创享日等盛事,发现AI世界的无限奥秘~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/62979.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

csv文件的上传、解析和获得最后的数据

前端和node端解析、读取csv文件的区别 1、前端 运行环境为浏览器,受到浏览器安全策略的限制,例如跨域请求、文件访问权限等。对于大型CSV文件的处理可能会受到性能瓶颈的影响。前端运行在用户的浏览器中,受到浏览器安全策略的限制&#xff…

Python学习------第十五天

1.异常的捕获方式: #基本捕获语法 try:f open("D:/abc.txt","r",encoding"UTF-8") except:print("出现异常了,因为文件不存在,我将open模式改为w模式去打开")f open("D:/abc.txt", &quo…

THENA大涨将对整个DeFi市场产生怎样的影响?

引言 近期,区块链行业的一个热门项目——THENA(THE)代币,在短时间内吸引了大量投资者的目光。THE代币的价格在短短几个月内经历了显著的上涨,引发了市场对其背后机制的浓厚兴趣。而在THENA生态系统的成功背后&#xf…

Kubernetes命名空间详解

目录 目标 版本 官网 概述 namespace(命名空间、名称空间) 注意事项 基本命令 查看namespace列表 查看所有Pod的namespace 查看单个Pod的namespace 查看同一个namespace下的所有Pod 查看单个namespace资源配额 查看单个Pod详情 查看所有na…

【开源】A059-基于SpringBoot的社区养老服务系统的设计与实现

🙊作者简介:在校研究生,拥有计算机专业的研究生开发团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看项目链接获取⬇️,记得注明来意哦~🌹 赠送计算机毕业设计600个选题ex…

【AI系统】算子开发编程语言 Ascend C

算子开发编程语言 Ascend C 本节将深入探讨昇腾算子开发编程语言 Ascend C,这是一种专为昇腾 AI 处理器算子开发设计的编程语言,它原生支持 C 和 C标准规范,最大化匹配用户的开发习惯。Ascend C 通过多层接口抽象、自动并行计算、孪生调试等…

Python基于大数据的微博的舆情分析,机器学习的微博情感分析系统

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

WPF+LibVLC开发播放器-LibVLC播放控制

接上一篇&#xff1a; LibVLC在C#中的使用 实现LibVLC播放器播放控制 界面 界面上添加一个Button按钮用于控制播放 <ButtonGrid.Row"1"Width"88"Height"24"Margin"10,0,0,0"HorizontalAlignment"Left"VerticalAlignme…

【设计模式系列】中介者模式(十八)

一、什么是中介者模式 中介者模式&#xff08;Mediator Pattern&#xff09;是一种行为型设计模式&#xff0c;其核心思想是通过一个中介者对象来封装一系列对象之间的交互&#xff0c;使这些对象不需要相互显式引用。中介者模式提供了一个中介层&#xff0c;用以协调各个对象…

【AI系统】Ascend C 编程范式

Ascend C 编程范式 AI 的发展日新月异&#xff0c;AI 系统相关软件的更新迭代也是应接不暇&#xff0c;作为一本讲授理论的作品&#xff0c;我们将尽可能地讨论编程范式背后的原理和思考&#xff0c;而少体现代码实现&#xff0c;以期让读者理解 Ascend C 为何这样设计&#x…

是什么阻断了kafka与zk的链接?

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 问题描述&#xff1a; 前几天部署一套环境&#xff0c;先把zk集群起来了&#xff0c;之后第二天在启动kafka的时候&#xff0c;…

CentOS 二进制安装部署MongoDB 4.0

一、安装MongoDB 1. 下载 MongoDB 二进制文件 前往 MongoDB 官方下载页面(https://www.mongodb.com/try/download/community) 选择对应版本的 tar 包。 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.28.tgz 2. 解压并移动至目标目录 解压文件&#xff…

【数据结构】【线性表】特殊的线性表-字符串

目录 字符串的基本概念 字符串的三要素 字符串的基本概念 串的编码 串的实现及基本运算 顺序串的实现 串的静态数组实现 串的动态数组的实现 顺序存储的四种方案 链式串的实现 基本运算 方案三 方案一 字符串的基本概念 数据结构千千万&#xff0c…

Agile VMO分享:海尔案例

海尔集团是全球最大的家电制造商之一&#xff0c;拥有超过76 000名员工。它获得了2018-2019年全球智能家电品牌前10名和2018-2019年全球消费电子品牌前50名的荣誉。 海尔利用价值流结构将自己组织成一些可以自管理的微型企业。这些微型企业拥有决策&#xff0c;设计和交付新产品…

ThinkPHP场景动态验证

一、缘由 今天在用thinkphp8写东西的时候发现&#xff0c;写验证器规则和场景优点费时间&#xff0c;就算用tinkphp的命令行生成也是生成一个空壳。内容还是要自己填写感觉麻烦。 就突发奇想能不能自动生成验证器&#xff0c;也不能是说自动生成验证器&#xff0c;生成验证其的…

限定符使用

正则表达式的元字符一次一般只能匹配一个位置或一个字符,如果想要匹配零个、一个或多个字符时,则需要使用限定符。限定符用于指定允许特定字符或字符集自身重复出现的次数。常用限定符如下: <asp:TextBox [^>]> 正则表达式字符类[^>]匹配除过“>”之外的任何字…

vue3+vite 批量引入组件动态使用

import { ref, reactive, toRaw, markRaw, defineAsyncComponent, onMounted } from vue import type { Component } from vue// vue3vite 批量引入组件动态使用 const modules import.meta.glob<Component>(./details/*.vue) // 明确指定导入的模块类型为Component con…

电脑关机的趣味小游戏——system函数、strcmp函数、goto语句的使用

文章目录 前言一. system函数1.1 system函数清理屏幕1.2 system函数暂停运行1.3 system函数电脑关机、重启 二、strcmp函数三、goto语句四、电脑关机小游戏4.1. 程序要求4.2. 游戏代码 总结 前言 今天我们写一点稍微有趣的代码&#xff0c;比如写一个小程序使电脑关机&#xf…

VScode离线下载扩展安装

在使用VScode下在扩展插件时&#xff0c;返现VScode搜索不到插件&#xff0c;网上搜了好多方法&#xff0c;都不是常规操作&#xff0c;解决起来十分麻烦&#xff0c;可以利用离线下载安装的方式安装插件&#xff01;亲测有效&#xff01;&#xff01;&#xff01; 1.找到VScod…

数据结构基础之《(10)—快速排序》

一、快速排序基础 1、Partition过程 给定一个数组arr&#xff0c;和一个整数num。请把小于等于num的数放在数组的左边&#xff0c;大于num的数放在数组的右边。 要求额外空间复杂度O(1)&#xff0c;时间复杂度O(N) 2、例子 区分小于等于num的数 (<区) [5 3 7 2 3 4 1] num…