Ascend C学习笔记
- 昇腾AI处理器:自研达芬奇架构+高集成SoC设计
- CPU分类: Control/AI/TS
- 达芬奇架构:包含大Cube结构,专为计算而生。
- 重点:AI Core
- 达芬奇架构主要构成部分:
- 计算单元:三种基础计算资源(矩阵计算单元,向量计算单元,标量计算单元)
- 存储单元:AI Core的片上存储单元和相应数据通路构成存储单元
- 控制单元:提供指令控制,相当于AI Core的司令部,负责整个AI Core的运行。
- AI Core的内部并行计算架构抽象
- 异步指令流:Sclar计算单元读取指令序列,把向量计算、矩阵计算、数据搬运指令发射给对应的单元的指令队列,向量计算单元、矩阵计算单元、数据搬运单元异步的并行执行接受到的指令。
- 同步信号流:指令间可能存在依赖关系,为了保证不同指令队列间的指令按照正确的逻辑关系执行,Sclar计算单元也会给对应单元下发同步指令。
- 计算数据流:DMA搬入单元把数据搬运到Local Memory, Vector/Cube计算单元完成数据计算,并把计算结果写回Local Memory,DMA搬出单元把处理好的数据搬运回Global Memory.
- 算子
- 算子的定义:算子对应网络中层或者节点的计算逻辑。
- 基本概念:
- 算子名称:用于标志网络中的某个算子,同一网络中算子名称需要保持唯一。
- 算子类型:根据算子类型进行实现匹配,相同类型算子实现逻辑相同。同一网络中同一类型的算子可能不止一个。
- 数据容器:承载算子数据的容器-Tensor
- Tensor:
属性 | 定义 |
名称 | 用于对Tensor进行索引,不同Tensor的name需要保持唯一。 |
形状 | 形式(i1,i2,...,n) 其中i1到n均为正整数。 |
数据类型 | 指定Tensor对象的数据类型。例如:float16,float32等 |
数据排布格式 | 物理排布格式,定义了解读数据的维度。 |
- 形状物理含义:以shape=(4,20,20,3)为例
4:假设有4张照片;
20:宽为20,高为20,共有400个像素
3:每个像素点由红/绿/蓝 3色组成
- 数据排布格式:卷积网络的特征图由四维数组保存,即4D格式:
N:Batch数量,例如图像数目。
H:Height,特征图高度,即垂直高度方向的像素个数。
W:Width,特征图宽度,即水平方向的像素个数。
C:Channels,特征图通道,例如彩色RGB图像的Channel就是3.
- 属性:不同算子包含的属性值不同。几种常见的算子属性:
轴:代表张量中维度的下标,比如张量5是一个5行6列的二维数组,那么轴0是张量的第一维。
例: 张量数据[[[1,2],[3,4]],[[5,6],[7,8]]]
Shape=(2,2,2)
轴0:第一个维度的数据:[[1,2],[3,4]]和[[5,6],[7,8]] 矩阵
轴1:第二个维度的数据:[1,2] [3,4] [5,6] [7,8] 数组
轴3:第三个维度的数据:1,2,3,4,5,6,7,8 数
轴可为负数,表示倒数第几个维度。
N维Tensor的轴:0~N-1