课程链接:https://www.hiascend.com/zh/developer/courses/detail/1579657120536670210
上图是对1.2的全栈架构的扩充,详细对芯片使能层进行了描述,芯片使能层的核心也就是CANN(compute architecture for neural network)。
CANN能提供多层次的编程接口,具有全场景、低门槛、高性能的优势,能支持快速构建基于昇腾平台的AI应用于业务。
CANN结构主要被抽象为5层:(以下内容来自课程提纲)
- 昇腾计算语言接口AscendCL
昇腾计算语言(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)等。
下面是课程给出的另外一幅CNN架构图,个人觉得比上面的图更清晰一些。