ToB企服应用市场:ToB评测及商务社交产业平台

标题: Ascend NPU 架构 & CANN 平台入门学习 [打印本页]

作者: 大号在练葵花宝典    时间: 前天 17:24
标题: Ascend NPU 架构 & CANN 平台入门学习
Ascend NPU 架构 & CANN 平台入门学习

概述

昇腾 NPU 是专门用于 AI 训练/推理计算的 AI 专用处置惩罚器,其中的 AI Core 可以或许在很大程度上提高 AI 计算的效率。
本文将主要介绍 ASCEND NPU 的硬件架构 & 工作原理、AI Core 的计算模式以及异构计算平台 CANN 等内容。
NPU 硬件架构

NPU SOC 架构

Ascend 310 架构



Ascend 910 架构



NPU 达芬奇架构

NPU 的达芬奇架构中共包含 3 种范例的单位:



计算单位



   注意:AI Core 就是指 Cube Core,即矩阵计算单位。
  存储单位



   上图中,HBM/DDR 和 L2 缓冲器都属于 AI Core 核外的数据存储系统。
  数据通路是数据在 AI Core 中的流通路径,它有以下特点:

控制单位


AI Core 电路结构

对于运算 C = A(16*16) * B(16*16),矩阵 C 中的每一个元素都必要进行 16 次乘法与 15 次加法计算得到(一个矩阵计算子电路)。
在 AI Core 中,共有 256 个矩阵计算子电路,每一条指令都可以并行完成 256 个矩阵 C 中的元素的计算。

NPU 工作原理

NPU 并行计算架构



AI Core 计算模式

Cube 单位可以或许高效地执行 MAC(矩阵乘加)操作,现在支持的矩阵巨细为 16*16*16。

   注意:通常矩阵乘中两矩阵很大,因此数据是分块(Tiling)后送入 Cube 单位的,每送完一块,效果存放到累加器,末了得到效果。
  在 CPU 的计算过程中,矩阵 A 按行扫描,矩阵 B 按列扫描。典型的存储方式是 A 和 B 都按照行方式进行存储(Row-Major),而内存读取按行读更方便,因此对 A 矩阵高效,对 B 矩阵低效。
为了提高内存读取的效率,NPU 将矩阵 B 的存储方式转成按列存储(Column-Major),通过改变矩阵存储的方式来提升矩阵计算的效率。
Cube Core 一条指令完成两个 16*16 矩阵的 MAC,相当于一个时钟周期进行 163 = 4096 个 MAC 运算。执行前将 A 按行、将 B 按列存放在 Input Buffer,并通过 Cube Core 计算得到 C,按行存放在 Output Buffer。

   注意:矩阵 A 不必要转换,可以直接从 L1 Buffer 读取到 AI Core 里面;矩阵 B 必要预先读到 MTE 中进行转换),然后再读取到 AI Core 里进行计算。
  矩阵的预处置惩罚:

CANN 平台

整体架构

异构计算架构 CANN(Compute Architecture for Neural Networks)是华为针对 AI 场景推出的异构计算架构,向上支持多种 AI 框架,包括 MindSpore、PyTorch、TensorFlow 等,向下服务 AI 处置惩罚器与编程,发挥承上启下的关键作用,是提升昇腾 AI 处置惩罚器计算效率的关键平台。同时针对多样化应用场景,提供多条理编程接口,支持用户快速构建基于昇腾平台的AI应用和业务。


   CANN 官方社区:使用导读-从这里开始-CANN社区版8.0.RC3.alpha002开发文档-昇腾社区 (hiascend.com)。
  Ascend C 算子编程

Ascend C 算子编程使用 C++ 语言和 Ascend C 类库 API 进行开发。
Ascend C 类库 API:

Ascend C 算子编程接纳 SPMD(单程序多数据编程)模式,即一个核的算子程序被调用时,会启动 N 个实例,每个运行实例称为一个 block,它们都执行雷同的代码,有雷同的参数,但到场计算的数据不同。
   注意:block 雷同于线程(进程),而 block_idx 雷同于 thread_id,算子程序必要使用 block_idx 来进行数据并行计算切分。
  推理应用开发



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4