2024鲲鹏&昇腾创新大赛集训营——《昇腾异构计算架构CANN——Ascend C算子开发》学习笔记
收藏回复举报
2024鲲鹏&昇腾创新大赛集训营——《昇腾异构计算架构CANN——Ascend C算子开发》学习笔记
新人帖
发表于2024-07-02 17:16:06
0 查看
昇腾异构计算架构CANN 

昇腾系列AI处理器,是为了满足当今日益增长的深度学习神经网络研究对芯片算力的需求。

1.  主要架构组成

它的显著特点是达芬奇架构+高集成SoC 。

高集成SoC即片上系统,集成了CPU、NPU、网卡、编解码等模块。

  • 多个CPU核心包括control CPU、AI CPU、TS CPU 分别负责控制整体运行、非矩阵复杂运算和任务调度(Task Scheduler)。
  • 视觉处理核 :实现格式和精度转换处理。
  • AI core :采用达芬奇架构,旨在加速矩阵乘法,实现高通量、大算力、低功耗。
 image.png

同时采用多种技术进行性能优化,包括:自适应梯度区分 、算子优化 、软硬件系统协同、计算图下沉等。 

AI core中定义三种单元模块。

  • 计算单元: 矩阵、向量、标量
  • 存储单元 
  • 控制单元 
 image.png

2. Ascend C算子

算子对应网络中层或节点的计算逻辑 

  • 它的三个特征:名称、类型、数据容器——Tensor 
  • 数据排布格式:N,batch数,C,通道数,H,高度,W,宽度。典型例子如Caffe:NCHW Tensorflow:NHWC(实际遍历是倒着的) 
  • 自定义开发算子 :工程对算子进行分类存放,优先使用用户自定义算子。built in 原生算子 ;custom 新定义算子,优先级更高 
  • Device与Host的区别: 任务下发侧,CPU+内存为host ;专用计算侧,GPU+显存为Device 。算子主要运行于Device的NPU的Ai core。 

核函数是算子设备侧入口 

内核调用符,<<<....>>> ,参数如下:

  • blockDim, 几个核 
  • l2ctrl,预留 
  • stream,任务队列 

采样SPMD模型,多核处理,单程序多数据 

 image.png

编程范式 ,为开发者提供主要编程结构,只需主要关注算子数学逻辑即可。

  • 向量:CopyIn,Compute, CopyOut 
  • 矩阵:CopyIn, Split, Compute, Aggregate, CopyOut 

通过队列VECIN的Queue实现任务间通信和同步。

以上为个人理解,仅供参考~

我要发帖子