
异构系统
CPU

HOST

Device AI 处理器
NPU、GPU
分配内存
数据搬入
启动计算
执行计算
数据输出
SPMD：异构编程模型
CPU 上一份代码，但是 Device 有多个计算单元，处理不同的数据分片

SIMD 单指令多数据流
处理两个数据的相加
Tiling 分块

数据搬入

数据计算

数据搬出

SIMT 单指令多线程
Tiling 分块：建立线程索引与数据索引的一一对应的关系 block index
数据搬入
数据计算
数据搬出

Tiling：我要确定这一块数据大小是多少，要算多少
三者的区别？

昇腾处理器

AI 框架
AI 框架适配 Framwork Adapter
加速库

图引擎 一个计算图
有许多计算节点
每个节点有拓扑
是一个有向图

AscendC 
基于 C/C++
PyPto 用 python 来写算子
毕昇编译器

AcendC
基于 C/C++语言扩展的 AI 处理器算子编程语言，跑在 NPU 上
遵循 C/C++扩展和标准规范

提供底层芯片完备的编程能力，支撑
构建多级接口
支持异构编程 <<<>>>直调


Tensor 把向量放在里面

PyAsc
C++类库
高阶 API
Reg 矢量计算
Memory 
矩阵
Tpipe 框架

vector和 cube 两个计算单元
怎么从 CPU 将数据搬到 NPU，然后再搬回 CPU?
SetDevice(0)
指定 0 卡
计算流
stream 是个运行时的 stream

8 行的 core

全局的同步

32 位字节的，必须给予 16 字节的以上 1
1、Cube 计算单元支持 FP 32/FP 16/BF 16/HiF 8/FP 8 E 4 M 3/U 8/S 8。 一拍完成一个
float 16 数据类型的 16 x 16 与 16 x 16 大小的矩阵乘；如果是 int 8_t 数据类型，则一拍完
成 16\*32 与 32\*16 大小的矩阵乘。
比如说 NPU 的计算频率是 2400,2800 台

标量

计算单元和搬运单元
矩阵类算子仅使用 AIC 计算单元，其基本计算为
C = A\*B + C
其中 A 为左矩阵、B 为右矩阵，C 为结果矩阵
