昇腾CANN是什么?
一个明智的人就是一个不会被表面现象所欺骗的人,他甚至预见到了事情将往哪一方向变化。——叔本华
不久前,ML Commons协会公布了基于ML Perf v1.0标准的最新测试结果,NV和GOOGLE仍然是性能的领跑者,但作为国内不多的提交者,鹏城的成绩有目共睹,华为Ascend的性能突飞猛进;
在这AI的时代,数据几何式增长,高性能计算硬件呼之欲出,如何服务各种场景下的计算需求,如何在高性能计算硬件和AI应用之间架起一座桥梁,CANN异步计算架构就是这座桥梁,一端是AI应用和框架,另一端是Ascend系列芯片。
昇腾全栈AI软硬件平台,构筑智能世界的基石,从上层应用和AI框架到异构计算架构和Ascend处理器,就像一个行走的人,需要大脑的决策支配,需要双腿大步向前,也需要腰背的传递信息和能量释放,CANN就是这个“虎背熊腰”;
CANN是Compute Architecture for Neural Networks的英文缩写,是华为公司针对AI场景推出的异构计算架构,通过提供多层次的编程接口,支持用户快速构建基于昇腾平台的AI应用和业务;
对不同前端提供统一的IR(Intermediate Representation)接口对接,支持TensorFlow/Caffe/MindSpore表达的计算图的解析/优化/编译,提供对后端计算引擎最优化部署能力,充分发挥设备性能。
硬件引擎
用户预设的算法任务,硬件执行单元计算,如何让硬件“理解”它要干什么,哪些硬件设备可以配合使用,如何给每个图节点预设最优的硬件执行单元,如何更高效的完成这些计算任务,就是图优化编译阶段的任务;对于Ascend系列芯片,分不同系列主要有6个引擎: AICore、VectorCore、AICPU、DVPP、AIPP、HCCL,都各自有自己“绝活”;
AICore,核心的tensor计算单元,负责矩阵tensor的卷积计算,每core上16x16x16半浮点精度/cycle,有vectorUnit的256半浮点精度/cycle;Vecto rCor,核心的vector计算单元,每core上有256半浮点精度/cycle;AICPU,逻辑计算单元;DVPP,集成了VPC、JPEGE、JPEGD、PNGD、VDEC和VENC等功能;AIPP,硬件图像预处理功能,包括色域转换,图像归一化(减均值/乘系数)和抠图(指定抠图起始点,抠出神经网络需要大小的图片)等功能;HCCL,多机通讯能力;
软件架构
· GE (Graph Engine):作为图编译和运行的控制中心,提供图运行环境管理、图执行引擎管理、算子库管理、子图优化管理、图操作管理和图执行控制。
· FE (Fusion Engine):管理算子的融合规则、依据融合规则对IR Graph进行匹配和算子融合操作、对系统支持的算子进行管理和维护算子列表、支持自定义算子。
· AICPUE (AICPU Engine):针对计算特征更亲和于CPU的部分算子,负责算子的信息管理和子图编译,包括算子注册、算子内存需求计算、子图优化和task生成,以支持这类算子在AI CPU运算单元的执行。
· HCCL (Huawei Collective Communication Library):负责HCCL算子信息管理。HCCL实现参与并行计算的所有worker的梯度聚合(allreduce)功能,为Ascend多机多卡训练提供数据并行方案。
· Runtime:为神经网络的任务分配提供了资源管理通道。昇腾AI芯片Runtime运行在应用程序的进程空间中,为应用程序提供了存储(Memory)管理、设备(Device)管理、执行流(Stream)管理、事件(Event)管理、核(Kernel)函数执行等功能。
· TS:Task Scheduler,负责计算图Task序列的管理和调度、执行。
· TBE:通过DSL(domain-specific language)描述算子的算法实现和优化调度来自动编译生成算子,同时还作为自定义算子的开发工具供生态开发者使用。
· 算子库:Ascend神经网络加速库,内置丰富算子,支撑神经网络训练和推理加速。
CANN是Ascend对其系列异构硬件使能,能做什么呢?如上文所说,它是个通道,发挥Ascend系列芯片算力的通道,没有CANN,无法发挥Ascend的蓬勃算力。其所有的软件架构、软件调度、加速库、算子实现,都是基于Ascend的硬件架构和指令集;可以说之所以有CANN,是因为Ascend,又或者说之所以Ascend不断的超越自身性能,CANN发挥着至关重要的作用。
无论从Ascend系列硬件演进还是CANN软件更新出发,路都还很长;希望CANN将不断健壮,在这个海量数据、万物互联、AI智能的时代,驶向命运的彼岸;
- 点赞
- 收藏
- 关注作者
评论(0)