计算数据流:DMA 搬入单位把数据搬运到 Local Memory,Vector/Cube 计算单位完成数据计算,并把计算效果回写到 Local Memory,DMA 搬出单位把处置惩罚好的数据搬运回 Global Memory。
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 里进行计算。
矩阵的预处置惩罚:
分块(Tiling):由于片上缓存容量有限,因此将整个矩阵 B 划分为多个子矩阵,并依次搬运到缓存中,末了得到效果矩阵 C;
填充(Padding):A 和 B 都等分成同样巨细的块(16*16),排不满的地方可以通过补 0 实现。
CANN 平台
整体架构
异构计算架构 CANN(Compute Architecture for Neural Networks)是华为针对 AI 场景推出的异构计算架构,向上支持多种 AI 框架,包括 MindSpore、PyTorch、TensorFlow 等,向下服务 AI 处置惩罚器与编程,发挥承上启下的关键作用,是提升昇腾 AI 处置惩罚器计算效率的关键平台。同时针对多样化应用场景,提供多条理编程接口,支持用户快速构建基于昇腾平台的AI应用和业务。
计算语言开发接口:
应用开发接口:提供深度学习推理计算、图像预处置惩罚、单算子加速计算能力;
图开发接口:提供统一网络构图接口;
算子开发接口:Ascend C 是 CANN 在算子开发场景的编程语言,原生支持 C&C++ 标准规范,最大化匹配用户开发习惯。