本文将从整体上介绍昇腾 AI 全栈架构以及 CANN 在其中的位置和作用,CANN 的逻辑架构和应用开发框架 AscendCL。
昇腾全栈 AI 软硬件平台

昇腾全栈 AI 软硬件平台是基于昇腾系列处理器和基础软件构建的全栈 AI 计算基础设施、行业应用及服务,
平台一共分为五层,自底向上依次为 Atlas 系列硬件、异构计算架构、AI 框架、应用使能和行业应用。
-
Atlas 系列硬件
Atlas 系列硬件基于昇腾系列 AI 处理器(Ascend310 用于推理场景,Ascend910 用于训练场景),通过模块、标卡、小站、服务器、集群等丰富的产品形态,打造面向 “端、边、云” 的全场景 AI 基础设施方案。

-
异构计算架构
异构计算架构 CANN 在平台中起到承上启下的作用,对标英伟达的 CUDA 和 CuDNN,提供高效易用的编程接口,对上支持多种 AI 框架(MindSpore、PyTorch 等),对下服务 AI 处理器,是提升昇腾 AI 处理器计算效率的关键平台,包括各种引擎、编译器、执行器、算子库。由于其需要负责将算子分配到对应的硬件上,因此叫做异构。
-
AI 框架
AI 框架层主要包括华为自研框架 MindSpore 以及第三方框架 TensorFlow 和 PyTorch 等。
-
应用使能
应用使能由 MindX DL、MindX Edge、ModelZoo、MindX SDK。
MindX DL:昇腾深度学习组件是支持 Atlas 训练卡、推理卡的深度学习组件,提供昇腾 AI 处理器集群调度、昇腾 AI 处理器性能测试、模型保护等基础功能,快速使能合作伙伴进行深度学习平台开发。

MindX Edge:昇腾智能边缘组件提供边缘 AI 业务容器的全生命周期管理能力,同时提供严格的安全可信保障,为客户提供边云协同的边缘计算解决方案,使能客户快速构建边缘 AI 业务。

ModelZoo:提供了用于昇腾平台的模型文件。
MindX SDK:可以帮助用户在特定域快速开发和部署人工智能应用,如制造质检、视觉分析等。
基于此,华为云开发了 ModelArts,面向开发者的一站式 AI 平台,为机器学习与深度学习提供海量数据预处理及交互式智能标注、大规模分布式训练、自动化模型生成,及端 - 边 - 云模型按需部署能力。HiAI Service 是面向智能终端的 AI 能力开放平台,基于 “芯、端、云” 三层开放架构,即芯片能力开放、应用能力开放、服务能力开放,构筑全面开放的智慧生态。
-
行业应用
将华为人工智能技术赋能产业发展,推动在制造、交通、电力、金融、互联网、运行商等方面的应用。
同时华为还提供了全流程开发工具链 MindStudio,管理运维工具 FusionDirector、SmartKit。
异构计算架构 CANN
昇腾 AI 异构计算架构 CANN 可以被抽象成五层架构:

-
昇腾计算语言
昇腾计算语言(Ascend Computing Language,AscendCL)接口是昇腾计算开放编程框架,是对低层昇腾计算服务接口的封装。它提供 Device(设备)管理、Context(上下文)管理、Stream(流)管理、内存管理、模型加载与执行、算子加载与执行、媒体数据处理、Graph(图)管理等 API 库,供用户开发人工智能应用调用。
-
昇腾计算服务层
本层主要提供昇腾计算库,例如神经网络(Neural Network,NN)库、线性代数计算库(Basic Linear Algebra Subprograms,BLAS)等;昇腾计算调优引擎库,例如算子调优、子图调优、梯度调优、模型压缩以及 AI 框架适配器。
-
昇腾计算编译层
本层主要提供图编译器(Graph Compiler)和 TBE(Tensor Boost Engine)算子开发支持。前者将用户输入中间表达(Intermediate Representation,IR)的计算图编译成 NPU 运行的模型。后者提供用户开发自定义算子所需的工具。
-
昇腾计算执行层
本层负责模型和算子的执行,提供如运行时(Runtime)库(执行内存分配、模型管理、数据收发等)、图执行器(Graph Executor)、数字视觉预处理(Digital Vision Pre-Processing,DVPP)、人工智能预处理(Artificial Intelligence Pre-Processing,AIPP)、华为集合通信库(Huawei Collective Communication Library,HCCL)等功能单元。
-
昇腾计算基础层
本层主要为其上各层提供基础服务,如共享虚拟内存(Shared Virtual Memory,SVM)、设备虚拟化(Virtual Machine,VM)、主机 - 设备通信(Host Device Communication,HDC)等。
昇腾计算语言 AscendCL

AscendCL(Ascend Computing Language)提供 Device 管理、Context 管理、Stream 管理、内存管理、模型加载与执行、算子加载与执行、媒体数据处理等 API 库供用户开发深度神经网络应用,用于实现目标识别、图像分类等功能。用户可以通过第三方框架调用 AscendCL 接口,以便使用昇腾 AI 处理器的计算能力;用户还可以使用 AscendCL 封装实现第三方 lib 库,以便提供昇腾 AI 处理器的运行管理、资源管理能力。
AscendCL 的优势如下:
- 高度抽象:算子编译、加载、执行的 AIP 归一,大幅减少 API 数量,降低复杂度。
- 向后兼容:版本向后兼容,基于旧版本编译的程序依然可以运行。
- 零感知芯片:代码统一,多款昇腾处理器无差异。
开发流程

AscendCL 接口调用流程

本文将从整体上介绍昇腾 AI 全栈架构以及 CANN 在其中的位置和作用,CANN 的逻辑架构和应用开发框架 AscendCL。
昇腾全栈 AI 软硬件平台
昇腾全栈 AI 软硬件平台是基于昇腾系列处理器和基础软件构建的全栈 AI 计算基础设施、行业应用及服务,
平台一共分为五层,自底向上依次为 Atlas 系列硬件、异构计算架构、AI 框架、应用使能和行业应用。
Atlas 系列硬件
Atlas 系列硬件基于昇腾系列 AI 处理器(Ascend310 用于推理场景,Ascend910 用于训练场景),通过模块、标卡、小站、服务器、集群等丰富的产品形态,打造面向 “端、边、云” 的全场景 AI 基础设施方案。
异构计算架构
异构计算架构 CANN 在平台中起到承上启下的作用,对标英伟达的 CUDA 和 CuDNN,提供高效易用的编程接口,对上支持多种 AI 框架(MindSpore、PyTorch 等),对下服务 AI 处理器,是提升昇腾 AI 处理器计算效率的关键平台,包括各种引擎、编译器、执行器、算子库。由于其需要负责将算子分配到对应的硬件上,因此叫做异构。
AI 框架
AI 框架层主要包括华为自研框架 MindSpore 以及第三方框架 TensorFlow 和 PyTorch 等。
应用使能



应用使能由 MindX DL、MindX Edge、ModelZoo、MindX SDK。
MindX DL:昇腾深度学习组件是支持 Atlas 训练卡、推理卡的深度学习组件,提供昇腾 AI 处理器集群调度、昇腾 AI 处理器性能测试、模型保护等基础功能,快速使能合作伙伴进行深度学习平台开发。
MindX Edge:昇腾智能边缘组件提供边缘 AI 业务容器的全生命周期管理能力,同时提供严格的安全可信保障,为客户提供边云协同的边缘计算解决方案,使能客户快速构建边缘 AI 业务。
ModelZoo:提供了用于昇腾平台的模型文件。
MindX SDK:可以帮助用户在特定域快速开发和部署人工智能应用,如制造质检、视觉分析等。
基于此,华为云开发了 ModelArts,面向开发者的一站式 AI 平台,为机器学习与深度学习提供海量数据预处理及交互式智能标注、大规模分布式训练、自动化模型生成,及端 - 边 - 云模型按需部署能力。HiAI Service 是面向智能终端的 AI 能力开放平台,基于 “芯、端、云” 三层开放架构,即芯片能力开放、应用能力开放、服务能力开放,构筑全面开放的智慧生态。
行业应用
将华为人工智能技术赋能产业发展,推动在制造、交通、电力、金融、互联网、运行商等方面的应用。
同时华为还提供了全流程开发工具链 MindStudio,管理运维工具 FusionDirector、SmartKit。
异构计算架构 CANN
昇腾 AI 异构计算架构 CANN 可以被抽象成五层架构:
昇腾计算语言
昇腾计算语言(Ascend Computing Language,AscendCL)接口是昇腾计算开放编程框架,是对低层昇腾计算服务接口的封装。它提供 Device(设备)管理、Context(上下文)管理、Stream(流)管理、内存管理、模型加载与执行、算子加载与执行、媒体数据处理、Graph(图)管理等 API 库,供用户开发人工智能应用调用。
昇腾计算服务层
本层主要提供昇腾计算库,例如神经网络(Neural Network,NN)库、线性代数计算库(Basic Linear Algebra Subprograms,BLAS)等;昇腾计算调优引擎库,例如算子调优、子图调优、梯度调优、模型压缩以及 AI 框架适配器。
昇腾计算编译层
本层主要提供图编译器(Graph Compiler)和 TBE(Tensor Boost Engine)算子开发支持。前者将用户输入中间表达(Intermediate Representation,IR)的计算图编译成 NPU 运行的模型。后者提供用户开发自定义算子所需的工具。
昇腾计算执行层
本层负责模型和算子的执行,提供如运行时(Runtime)库(执行内存分配、模型管理、数据收发等)、图执行器(Graph Executor)、数字视觉预处理(Digital Vision Pre-Processing,DVPP)、人工智能预处理(Artificial Intelligence Pre-Processing,AIPP)、华为集合通信库(Huawei Collective Communication Library,HCCL)等功能单元。
昇腾计算基础层
本层主要为其上各层提供基础服务,如共享虚拟内存(Shared Virtual Memory,SVM)、设备虚拟化(Virtual Machine,VM)、主机 - 设备通信(Host Device Communication,HDC)等。
昇腾计算语言 AscendCL
AscendCL(Ascend Computing Language)提供 Device 管理、Context 管理、Stream 管理、内存管理、模型加载与执行、算子加载与执行、媒体数据处理等 API 库供用户开发深度神经网络应用,用于实现目标识别、图像分类等功能。用户可以通过第三方框架调用 AscendCL 接口,以便使用昇腾 AI 处理器的计算能力;用户还可以使用 AscendCL 封装实现第三方 lib 库,以便提供昇腾 AI 处理器的运行管理、资源管理能力。
AscendCL 的优势如下:
开发流程
AscendCL 接口调用流程