昇腾Ascend处理器相关介绍
一、参考资料
modelzoo wiki
解密昇腾AI处理器–Ascend310简介
AI芯片:华为Ascend(昇腾)910结构分析
解密昇腾AI处理器–DaVinci架构(计算单元)
二、相关介绍
昇腾AI处理器本质上是一个片上系统(System on Chip,SoC),该芯片大致可以划为:芯片系统控制CPU(Control CPU),AI计算引擎(包括AI Core和AI CPU),多层级的片上系统缓存(Cache)或缓冲区(Buffer),数字视觉预处理模块(Digital Vision Pre-Processing,DVPP)等。
目前主流SoC芯片的主存一般由DDR(Double Data Rate)或HBM(High Bandwidth Memory)构成,用来存放大量的数据。HBM相对于DDR存储带宽较高,是行业的发展方向。
2.1 达芬奇架构
总体架构
达芬奇架构包含了scalar,tensor和cuba运算,灵活性 scalar>tensor>cuba,效率 scalar<tensor<cuba。
有的运算scalar就可以了,应该就是AICPU,跟普通cpu运行指令一样
有的运算tensor可以完成,效率高于scalar,比如向量的加减乘除,一个指令一个向量都执行了。
有的运算需要cuba来完成,效率又高于tensor,比如矩阵乘,卷积,几条任务线同时运行,有限几个指令周期可以完成矩阵乘的操作。
华为达芬奇核心分为三种,最完整的是“Max”,其次是Lite,再次是Tiny,Max可在一个周期内完成8192次MAC运算,Tiny仅512次。
整体来看,两个bufferL0A和L0B作为输入,其中一个暂存activition,另一个暂存权重。
红色的Cube模块,类似谷歌TPU脉动阵列结构,是一个乘累加阵列,计算结果输出存放在另外一个buffer L0C。
Vector Unit,类似一个DSP,从buffer L0C中取得乘累加计算结果,然后进行pooling/padding,BN,激活,加法等处理。如果还没得到最终结果,就暂时返回存储在buffer L0C,如果得到了最终结果,就传递给Unified Buffer。
Scalar Unit用来控制调度,类似一个MCU,可以是ARM的,也可以是RISC-V。
2.2 MAC运算
mac利用率指的就是CUBE的利用率。
一次MAC = 一次乘法+一个加法
以256T的FP16为例,算力计算方法如下:
256T = 32(大核,每个8T算力)X 2(一次MAC=一次乘法+一个加法)X 4K(4096 MAC) X 1(单核,小核) X 1G(频率1GHz)
或者
256T = 32(大核,每个8T算力)X 4K(4096 MAC) X 2(双核,小核) X 1G(频率1GHz)
2.3 昇腾芯片架构
- 芯片系统控制CPU(Control CPU);
- AI计算引擎(包括AI Core和AI CPU);
- 多层级的片上系统缓存(Cache)或缓冲区(Buffer);
- 数字视觉预处理模块(Digital Vision Pre-Processing,DVPP)等;
- AI Core:集成了2个AI Core。昇腾AI芯片的计算核心,主要负责执行矩阵、向量、标量计算密集的算子任务,采用达芬奇架构。
- ARM CPU核心: 集成了8个A55。其中一部分部署为AI CPU,负责执行不适合跑在AI Core上的算子(承担非矩阵类复杂计算);一部分部署为专用于控制芯片整体运行的控制CPU。两类任务占用的CPU核数可由软件根据系统实际运行情况动态分配。此外,还部署了一个专用CPU作为任务调度器(Task Scheduler,TS),以实现计算任务在AI Core上的高效分配和调度;该CPU专门服务于AI Core和AI CPU,不承担任何其他的事务和工作。
- DVPP:数字视觉预处理子系统,完成图像视频的编解码。用于将从网络或终端设备获得的视觉数据,进行预处理以实现格式和精度转换等要求,之后提供给AI计算引擎。
- Cache & Buffer:SOC片内有层次化的memory结构,AI core内部有两级memory buffer,SOC片上还有8MB L2 buffer,专用于AI Core、AI CPU,提供高带宽、低延迟的memory访问。芯片还集成了LPDDR4x控制器,为芯片提供更大容量的DDR内存。
- 对外接口:支持PCIE3.0、RGMII、USB3.0等高速接口、以及GPIO、UART、I2C、SPI等低速接口。
2.4 矩阵计算单元
问题引入
for (m=0; m<M, m++)for (n=0; n<N, n++)for (k=0; k<K, k++)C[m][n] += A[m][k]*B[k][n]
该程序需要用到3个循环进行一次完整的矩阵相乘计算,如果在一个单发射的CPU上执行至少需要 M∗K∗NM*K*NM∗K∗N 个时钟周期才能完成,当矩阵非常庞大时执行过程极为耗时。
矩阵计算
由于常见的深度神经网络算法中大量的使用了矩阵计算,达芬奇架构 中特意对矩阵计算进行了深度的优化并定制了相应的矩阵计算单元来支持高吞吐量的矩阵处理。通过精巧设计的定制电路和极致的后端优化手段,矩阵计算单元可以用一条指令完成两个 16∗1616*1616∗16 矩阵的相乘运算(标记为16316^3163,也是Cube这一名称的来历),等同于在极短时间内进行了 163=409616^3=4096163=4096 个乘加运算。矩阵计算单元在完成 A∗B=CA*B=CA∗B=C 的矩阵运算时,会事先将矩阵A 按行存放 在输入缓冲区中,同时将矩阵B 按列存放 在输入缓冲区中,通过矩阵计算单元计算后得到的结果矩阵C 按行存放 在输出缓冲区中。
如上图所示,在矩阵相乘运算中,矩阵C的第一元素由矩阵A的第一行的16个元素和矩阵B的第一列的16个元素由矩阵计算单元子电路进行 16次乘法 和 15次加法 运算得出。矩阵计算单元中存在256个矩阵计算子电路组成,可以由一条指令并行完成矩阵C的256个元素计算。矩阵计算单元中存在256个矩阵计算子电路组成,可以由一条指令并行完成矩阵C的256个元素计算。
2.5 向量计算单元
AI Core中的向量计算单元主要负责完成和向量相关的运算,能够实现向量和标量,或双向量之间的计算。
==向量计算单元可以作为矩阵计算单元和输出缓冲区之间的数据通路和桥梁。==矩阵运算完成后的结果在向输出缓冲区传递的过程中,向量计算单元可以顺便完成在深度神经网络尤其是卷积神经网络计算中常用的ReLU激活函数、池化等功能并实现数据格式的转换。经过向量计算单元处理后的数据可以被写回到输出缓冲区或者矩阵计算单元中,以等待下一次运算。
2.6 标量计算单元
标量计算单元相当于一个微型CPU,控制整个AI Core的运行。标量计算单元可以对程序中的循环进行控制,可以实现分支判断,其结果可以通过在事件同步模块中插入同步符的方式来控制AI Core中其它功能性单元的执行流水。
在标量计算单元周围配备了多个通用寄存器(General Purpose Register,GPR)和专用寄存器(Special Purpose Register,SPR)。
2.7 npu-smi指令
单张板卡用双实线分割。
如下图所示,当前服务器有3块板卡,每个板卡有4个昇腾Ascend310芯片,总共有昇腾Ascend310芯片。Ascend310芯片的规格是:AICore 8GB运行内存,970 Hugepages-Usage(page)。
属性 | 解释说明 |
---|---|
npu-smi | npu-smi版本 |
NPU | 板卡ID |
Chip | 每张板卡内的芯片ID |
Device | device_id,设备ID,即昇腾芯片ID(整体) |
Health | 昇腾芯片健康程度 |
Bus-ID | Bus总线ID |
Power(W) | 芯片功率 |
AICore(%) | AI Core利用率,AI Core是昇腾芯片的算力核心,类比NVIDIA GPU的GPU利用率 |
Temp© | 芯片温度 |
Memory-Usage(MB) | AI Core的运行内存 |
Hugepages-Usage(page) | AI Core显存,类比NVIDIA GPU的显存 |
HBM-Usage | AI Core显存,类比NVIDIA GPU的显存 |
2.8 HBM
HBM,即High Bandwidth Memory 是一款新型的CPU/GPU 内存芯片(即 “RAM”),实质上是很多个DDR芯片堆叠在一起后和GPU封装在一起,实现大容量,高位宽的DDR组合阵列。相比于我们所熟悉的传统的GDDR5或GDDR6,HBM是性能极强的“显存”,堪称显存中的旗舰配置,可以极大发挥Ascend 910的强大算力。
HBM通过打造高位宽低频率的显存,使得在提供比较大的显存位宽的基础上不需要那么高的频率,同样的4GB容量下HBM能提供的显存位宽为4096bit,比GDDR5的512bit高出8倍,这也是为什么HBM即便只有1GHz的等效频率也能最终实现大于GDDR5的显存带宽!而且这一个优势还会随着HBM显存后期频率方面的进一步提升而进一步加大。
HBM的优势
更高速,更高带宽
更高位宽
更低功耗
更小外形(HBM 比 GDDR5 节省了 94% 的表面积!
三、Ascend适配PyTorch框架
第三方框架适配
Ascend/pytorch
3.1 Ascend适配PyTorch API支持清单
PyTorch API支持清单_1.5.0.md
3.2 自定义PyTorch版本的AscendHub镜像
自定义镜像简介_AI开发平台ModelArts_使用自定义镜像
四、CANN版本变更说明
版本号变更公告
五、CANN相关软件说明
下载软件
5.1 昇腾软件介绍
软件类型 | 软件介绍 |
---|---|
昇腾NPU固件 | 固件包含昇腾AI处理器自带的OS 、电源器件和功耗管理器件控制软件,分别用于后续加载到AI处理器的模型计算、芯片启动控制和功耗控制。 |
昇腾NPU驱动 | 部署在昇腾服务器,功能类似英伟达驱动,管理查询昇腾AI处理器,同时为上层CANN软件提供芯片控制、资源分配等接口。 |
CANN |
部署在昇腾服务器,功能类似英伟达CUDA,包含Runtime、算子库、图引擎、媒体数据处理等组件,通过AscendCL(Ascend Computing Language,昇腾计算语言)对外提供Device管理、Context管理、Stream管理、内存管理、模型加载与执行、算子加载与执行、媒体数据处理等API,帮助开发者实现在昇腾软硬件平台上开发和运行AI业务。CANN软件按照功能主要分为Toolkit(开发套件)、NNAE(深度学习引擎)、NNRT(离线推理引擎)、TFPlugin(Tensorflow框架插件)几种软件包,各软件包支持功能范围如下: + Toolkit:支持训练和推理业务、模型转换、算子/应用/模型开发和编译。 + NNAE:支持训练和推理业务、模型转换。 + NNRT:仅支持推理业务。 + TFPlugin:用于运行训练业务时和Tensorflow框架进行对接,帮助Tensorflow框架调用底层CANN接口运行训练业务。 |
5.2 软件下载(社区版)
商业版与社区版区别
社区版可以直接下载,但不能用于商业用途,如果用户需要用于商业用途,请下载商用版软件,但是需要申请相关权限。
软件类型 | 软件包名称和下载链接 |
---|---|
昇腾NPU驱动 | 单击软件包链接,选择 “AI加速卡 > Atlas 300T 训练卡(型号:9000)”,选择对应CANN和驱动固件版本,下载软件包“A300t-9000-npu-driver_{version}_linux-x86_64.run”。 |
昇腾NPU固件 | 单击软件包链接,选择 “AI加速卡 > Atlas 300T 训练卡(型号:9000)”,选择对应CANN和驱动固件版本,下载软件包“A300t-9000-npu-firmware_{version}.run”。 |
Toolkit(开发套件包) | 单击软件包链接,下载软件包“Ascend-cann-toolkit_{version}_linux-x86_64.run”。 |
NNAE(深度学习引擎) | 单击软件包链接,下载软件包“Ascend-cann-nnae_{version}_linux-x86_64.run”。 |
TFPlugin(深度学习框架插件) | 单击软件包链接,下载软件包“Ascend-cann-tfplugin_{version}_linux-x86_64.run”。 |
实用工具包(内含容器引擎插件,容器部署场景下需下载) | 单击软件包链接,下载软件包“Ascend-mindx-toolbox_{version}_linux-x86_64.run”。 |
5.3 软件下载(商用版)
软件类型 | 软件包名称和下载链接 |
---|---|
昇腾NPU驱动 | 单击软件包链接,下载软件包“A300t-9000-npu-driver_{version}_linux-x86_64.run”。 |
昇腾NPU固件 | 单击软件包链接,下载软件包“A300t-9000-npu-firmware_{version}.run”。 |
Toolkit(开发套件包) | 单击软件包链接,下载软件包“Ascend-cann-toolkit_{version}_linux-x86_64.run”。 |
NNAE(深度学习引擎) | 单击软件包链接,下载软件包“Ascend-cann-nnae_{version}_linux-x86_64.run”。 |
TFPlugin(深度学习框架插件) | 单击软件包链接,下载软件包“Ascend-cann-tfplugin_{version}_linux-x86_64.run”。 |
实用工具包(内含容器引擎插件,容器部署场景下需下载) | 单击软件包链接,下载软件包“Ascend-mindx-toolbox_{version}_linux-x86_64.run”。 |
六、FAQ
Q:板卡掉芯片的问题
当前服务器有5张板卡,正常情况下每张板卡有4个昇腾Ascend310芯片,但是存在板卡芯片丢失的问题。
芯片丢失的可能原因
- 服务器功率不够,供电不足,导致芯片加载失败;
- 服务器过热,导致芯片加载失败;
- 板卡本身的问题,确实存在掉芯片的问题;
昇腾Ascend处理器相关介绍相关推荐
- 昇腾 (Ascend) AI 处理器:达芬奇架构
参考:<昇腾AI处理器架构与编程--深入理解CANN技术原理及应用> 目录 昇腾 AI 处理器 背景 主要的架构组成部件 可扩展性 达芬奇架构 (DaVinci Architecture) ...
- 助力高校学子快速上手!昇腾AI处理器应用开发实践一览|华为昇腾师资培训沙龙北京场...
如今,AI技术已渗透到各个行业,随着AI技术应用的蓬勃发展,相关专业的人才缺口也日益增大. 为了助力高校人工智能领域人才培养及学科建设,华为通过昇腾师资培训沙龙,面向广大高校教师提供昇腾全栈全场景AI ...
- 华为昇腾 AI 处理器架构大揭秘! | 华为昇腾师资培训沙龙武汉场
「无 AI,不科技」.在AI 产业逐步落地成熟的今天,AI 人才的争夺战已打响,甚至有不少网友预测,未来AI 开发将成为人人必备的技能之一.不过,现实来看,无论是 AI 三驾马车中的数据.算力.算法, ...
- 解密昇腾AI处理器--Ascend310简介
Ascend310 AI处理器规格 Ascend310 AI处理器逻辑架构 昇腾AI处理器本质上是一个片上系统(System on Chip,SoC),主要可以应用在和图像.视频.语音.文字处理相关的 ...
- Nginx工作原理及相关介绍
Nginx工作原理及相关介绍 一.Nginx工作原理与模块介绍 1.Nginx基本工作原理 NGINX以高性能的负载均衡器,缓存,和web服务器闻名.Nginx由内核和模块组成,其中,内核的设计非常微 ...
- 【昇腾学院】昇腾AI处理器软件栈--框架管理器(Framework)离线模型生成
离线模型生成 以卷积神经网络为例,在深度学习框架下构造好相应的网络模型,并且训练好原始数据,再通过离线模型生成器进行算子调度优化.权重数据重排和压缩.内存优化等,最终生成调优好的离线模型.离线模型生成 ...
- 昇腾AI处理器软件栈--张量加速引擎(TBE)
神经网络构造中,算子组成了不同应用功能的网络结构.而张量加速引擎(Tensor Boost Engine)作为算子的兵工厂,为基于昇腾AI处理器运行的神经网络提供算子开发能力,用TBE语言编写的TBE ...
- 昇腾AI处理器软件栈--数字视觉预处理(DVPP)
数字视觉预处理模块作为昇腾AI软件栈中的编解码和图像转换模块,为神经网络发挥着预处理辅助功能.当来自系统内存和网络的视频或图像数据进入昇腾AI处理器的计算资源中运算之前,由于Davinci架构对输入数 ...
- 昇腾AI处理器软件栈--流程编排器(Matrix)
功能简介 昇腾AI处理器对网络执行层次进行划分,将特定功能的执行操作看做基本执行单位--计算引擎(Engine).每个计算引擎在流程编排过程中对数据完成基本操作功能,如对图片进行分类处理.输入图片预处 ...
最新文章
- EBioMedicine:西湖大学郑钜圣组-乳制品摄入与肠道微生态、心血管代谢健康的关系...
- 华东师范大学2019年高等代数考研试题
- python wand安装_Python Wand posterize()用法及代码示例
- Qt之FTP实现--QFtp篇
- 关于getCurrentUrl的获取问题
- 重温数据结构:树 及 Java 实现(转)
- iis服务器修改内存,修改IIS的虚拟内存
- 风格和个性!一组微质感图标设计灵感
- 使用微信模板消息时,使发送的文本消息换行展示
- 幅度谱、相位谱、能量谱等语音信号处理中的基础知识
- java经典算法(四)---zws
- 从万物归零到虚拟与现实交错
- SparkSQL专题1 ~ 造数
- 用mysql创建职工表_【典型例题】数据库——用MySQL来建立创建员工表;-Go语言中文社区...
- iOS-Core Animation 核心动画高级编程/5-变换
- 【平面设计】AI CS 6 软件安装教程
- 客厅沙发墙挂画,这样选才够品味!
- 神经网络 mse一直不变_用深层神经网络解释大脑的运作
- 0x00007ffff7ade419 in memcpy () from /lib/libc.so.6
- linux高级程序复习(未完,整理比较粗糙)
热门文章
- 间歇性需求预测之Croston‘s method
- 2018年7月21日日报
- android 插入耳机 使用自身mic录音_苹果iPhone 12携最新系统强势登场,10款主流TWS耳机兼容性测试...
- 分布式高可用高并发物联网(车联网-JT808协议)平台架构方案
- i7 10700和10700f 10700k这三个CPU有什么区别
- 看门狗的喂法(独立看门狗和窗口看门狗的区别)!
- 00815 计算机基础,国开(山东)00815-计算机应用基础-模块1 windows 7 操作系统——客观题-辅导资料...
- 【算法学习笔记】67.状态压缩 DP SJTU OJ 1383 畅畅的牙签袋
- 阿里云部署Django项目(nginx+uWSGI)-2018.11
- python (语音)信号拆分为数据块,计算短期能量和过零率