MindSpore
AI框架 , 类似于PyTorch,Tensorflow
香橙派orangepi
TF卡下载镜像插入机器中 pip show mindspore展示版本
CANN
异构计算框架 类似于CUDA
算子
网络节点的计算逻辑 对函数进行某一项操作 例如tanh,ReLU,Sigmoid
类型
进行算子实现的匹配,相同类型的实现逻辑相同
名称
某个算子,同一网络中名称唯一
容器
张量Tensor 存储输入输出
TensorDesc对容器的描述
名称
形状
数据类型
(i1,i2,...)
数据排布格式
NHWC,逆向进行遍历
属性
轴:张量中维度的下标
Host侧
CPU,硬盘
Device侧
GlobalMem,AIcore中的localMem
核函数
入口
__global__ __aicore__ void kernel_name(argument lists)
变量类型限定符:__gm__ 指针变量入参统一定义 __gm__ unit8_t* 宏 GM_ADDR
调用
NPU中 kernel_name <<< blockDim,12ctrl,stream>>>(argument list);
- blockDim 所用核的数量
- 12ctrl 是保留参数,默认写nullptr
- stream 任务队列
AI Core
- 计算单元
- Cube(矩阵)计算单元
- Vector(向量)计算单元
- Scalar(标量)计算单元
- 存储单元
- 控制单元
SPMD
通过GetBlockIdx获取ID 多个核共享指令,只有block_idx不同,拆分数据API
基础API
+ 整个tensor计算 add(dst,sr1,sr2,n)计算前n位 - tensor高维切分计算
高阶API
例如矩阵运算中编程范式
基本矢量编程范式: - copyin (global到local,EnQue到VECIN中)
- compute (从VECIN中DeQue)
- copyout
流水任务:待处理数据分片,并行运算
队列可以分块,已达成并行 ## host侧算子实现 tiling实现 计算切分相关参数
shape推导,根据输入推测出算子的输出张量描述
算子原型注册,进行算子原型定义
MindSpore
AI框架 , 类似于PyTorch,Tensorflow
香橙派orangepi
TF卡下载镜像插入机器中
pip show mindspore展示版本CANN
异构计算框架 类似于CUDA
算子
网络节点的计算逻辑 对函数进行某一项操作 例如tanh,ReLU,Sigmoid
类型
进行算子实现的匹配,相同类型的实现逻辑相同
名称
某个算子,同一网络中名称唯一
容器
张量Tensor 存储输入输出
TensorDesc对容器的描述
名称
形状
数据类型
(i1,i2,...)
数据排布格式
NHWC,逆向进行遍历
属性
轴:张量中维度的下标
Host侧
CPU,硬盘
Device侧
GlobalMem,AIcore中的localMem
核函数
入口
__global__ __aicore__ void kernel_name(argument lists)变量类型限定符:
__gm__指针变量入参统一定义__gm__ unit8_t*宏GM_ADDR调用
NPU中
kernel_name <<< blockDim,12ctrl,stream>>>(argument list);AI Core
SPMD
通过GetBlockIdx获取ID 多个核共享指令,只有block_idx不同,拆分数据API
基础API
+整个tensor计算add(dst,sr1,sr2,n)计算前n位高阶API
例如矩阵运算中编程范式
基本矢量编程范式:流水任务:待处理数据分片,并行运算
队列可以分块,已达成并行 ## host侧算子实现 tiling实现 计算切分相关参数
shape推导,根据输入推测出算子的输出张量描述
算子原型注册,进行算子原型定义