Add extend reading for ch06 (#275)

Co-authored-by: Corleone <liuchao195@huawei.com>
Co-authored-by: Dalong <39682259+eedalong@users.noreply.github.com>
This commit is contained in:
Corleone
2022-04-14 11:45:40 +08:00
committed by GitHub
parent 80c0bc794b
commit 3dd2f69d38
5 changed files with 28 additions and 14 deletions

View File

@@ -1,5 +1,4 @@
加速器基本组成原理
------------------
## 加速器基本组成原理
上节主要介绍了加速器的意义以及设计思路了解到加速器与通用处理器在设计上的区别因此加速器的硬件结构与CPU的硬件结构有着根本的不同通常都是由多种片上缓存以及多种运算单元组成。本章节主要通过GPU的Volta架构作为样例进行介绍。
@@ -83,4 +82,4 @@ GPU计算单元主要由标量计算单元和三维向量计算单元组成。
:width:`800px`
:label:`davinci_architecture`
昇腾AI芯片的计算核心主要由AI Core构成负责执行标量、向量和张量相关的计算密集型算子。AI Core采用了达芬奇架构基本结构如 :numref:`davinci_architecture`所示从控制上可以看成是一个相对简化的现代微处理器基本架构。它包括了三种基础计算单元矩阵计算单元Cube Unit、向量计算单元Vector Unit和标量计算单元Scalar Unit。这三种计算单元分别对应了张量、向量和标量三种常见的计算模式在实际的计算过程中各司其职形成了三条独立的执行流水线在系统软件的统一调度下互相配合达到优化计算效率的目的。 同GPU类似在矩阵乘加速设计上在AICore中也提供了矩阵计算单元作为昇腾AI芯片的核心计算模块意图高效解决矩阵计算的瓶颈问题。矩阵计算单元提供强大的并行乘加计算能力可以用一条指令完成两个$16\times16$矩阵的相乘运算,等同于在极短时间内进行了$16\times16\times16=4096$个乘加运算并且可以实现FP16的运算精度。
昇腾AI芯片的计算核心主要由AI Core构成负责执行标量、向量和张量相关的计算密集型算子。AI Core采用了达芬奇架构 :cite:`2021Ascend`,基本结构如 :numref:`davinci_architecture`所示从控制上可以看成是一个相对简化的现代微处理器基本架构。它包括了三种基础计算单元矩阵计算单元Cube Unit、向量计算单元Vector Unit和标量计算单元Scalar Unit。这三种计算单元分别对应了张量、向量和标量三种常见的计算模式在实际的计算过程中各司其职形成了三条独立的执行流水线在系统软件的统一调度下互相配合达到优化计算效率的目的。 同GPU类似在矩阵乘加速设计上在AICore中也提供了矩阵计算单元作为昇腾AI芯片的核心计算模块意图高效解决矩阵计算的瓶颈问题。矩阵计算单元提供强大的并行乘加计算能力可以用一条指令完成两个$16\times16$矩阵的相乘运算,等同于在极短时间内进行了$16\times16\times16=4096$个乘加运算并且可以实现FP16的运算精度。

View File

@@ -1,9 +1,8 @@
概述
----
## 概述
### 硬件加速器设计的意义
未来人工智能发展的三大核心要素是数据、算法和算力。目前人工智能系统算力大都构建在CPU+GPU之上主体多是GPU。随着神经网络层数的增多模型体量的增大算法复杂度的上升CPU和GPU很难再满足新型网络对于算力的需求。例如2015年谷歌的AlphaGo与樊麾对弈时用了1202个CPU和176个GPU每盘棋需要消耗上千美元的电费而与之对应的是樊麾的功耗仅为20瓦。
未来人工智能发展的三大核心要素是数据、算法和算力。目前人工智能系统算力大都构建在CPU+GPU之上主体多是GPU。随着神经网络层数的增多模型体量的增大算法复杂度的上升CPU和GPU很难再满足新型网络对于算力的需求。例如2015年谷歌的AlphaGo与[樊麾](https://baike.baidu.com/item/樊麾)对弈时用了1202个CPU和176个GPU每盘棋需要消耗上千美元的电费而与之对应的是樊麾的功耗仅为20瓦。
虽然GPU在面向向量、矩阵以及张量的计算上引入许多新颖的优化设计但由于GPU需要支持的计算类型复杂芯片规模大、能耗高人们开始将更多的精力转移到深度学习硬件加速器的设计上来。和传统CPU和GPU芯片相比新型深度学习加速器会有更高的性能以及更低的能耗。未来随着人们真正进入智能时代智能应用的普及会越来越广泛到那时每台服务器、每台智能手机、每个智能摄像头都需要使用加速器。

View File

@@ -1,5 +1,4 @@
加速器基本编程原理
------------------
## 加速器基本编程原理
:label:`accelerator-program-title`
本章前两节主要介绍了硬件加速器设计的意义、思路以及基本组成原理。软硬件协同优化作为构建高效AI系统的一个重要指导思想需要软件算法/软件栈和硬件架构在神经网络应用中互相影响、紧密耦合。为了最大限度地发挥加速器的优势,要求能够基于硬件系统架构提供易用、高效的编程方法。因此,在本节中将着重介绍加速器的可编程性,包括编程接口直接调用方式及算子编译器优化方式。最后,通过示例介绍如何通过编程使能加速器,提升神经网络算子的计算效率。
@@ -190,3 +189,5 @@ res = te.lang.cce.matmul(tensor_a, tensor_b, False, False, False, dst_dtype=dst_
4. **优化数据访存------提高并行性**:在进行内存结构变化(矩阵数据搬移)时,需要注意全局内存的合并访问、共享内存的存储体冲突等常见性能瓶颈点。
5. **资源负载均衡------增大吞吐量**调整平衡每个线程处理的数据量、共享内存使用量、寄存器使用量以获得更高的SM占用率。一般在实际程序中BlockTile和WarpTile的选取至关重要。
6. **优化指令执行**:使用\#unroll功能进行循环展开来提升指令级并行如 :numref:`gemm-tensor-core-algorith`中13行使用向量化加载指令以提高带宽等对于GPU Volta架构最大向量化加载指令为ldg128即128比特带宽对于 :numref:`gemm-tensor-core-algorith`中5-6行数据由全局内存加载至共享内存时即可采用Float4\*类型指针进行内存读取。

View File

@@ -1,10 +1,16 @@
总结
----
## 总结
- 面向深度学习计算任务,加速器通常都是由多种片上缓存以及多种运算单元组成来提升性能。
- 面向深度学习计算任务,加速器通常都是由多种片上缓存以及多种运算单元组成来提升性能。
- 未来性能增长需要依赖架构上的改变,即需要利用可编程的硬件加速器来实现性能突破。
- 未来性能增长需要依赖架构上的改变,即需要利用可编程的硬件加速器来实现性能突破。
- 出于计算效率和易用性等原因,加速器一般会具有多个等级的编程方式,包括:算子库层级,编程原语层级和指令层级。
- 出于计算效率和易用性等原因,加速器一般会具有多个等级的编程方式,包括:算子库层级,编程原语层级和指令层级。
- 越底层的编程方式越能够灵活地控制加速器,但同时对程序员的能力要求也越高。
- 越底层的编程方式越能够灵活地控制加速器,但同时对程序员的能力要求也越高。
## 扩展阅读
- CUDA编程指导 [CUDA](https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html)
- 昇腾社区 [Ascend](https://gitee.com/ascend)
- MLIR应用进展 [MLIR](https://mlir.llvm.org/talks)

View File

@@ -439,6 +439,15 @@ series = {ADKDD'14}
note = {\url{http://www.nvidia.com/object/volta-architecture-whitepaper.html}}
}
@inproceedings{2021Ascend,
title={Ascend: a Scalable and Unified Architecture for Ubiquitous Deep Neural Network Computing : Industry Track Paper},
author={Liao, Heng and Tu, Jiajin and Xia, Jing and Liu, Hu and Zhou, Xiping and Yuan, Honghui and Hu, Yuxing},
booktitle={2021 IEEE International Symposium on High-Performance Computer Architecture (HPCA)},
year={2021},
pages = {789801},
doi = {10.1109/HPCA51647.2021.00071},
}
@article{2018Modeling,
title={Modeling Deep Learning Accelerator Enabled GPUs},
author={Raihan, M. A. and Goli, N. and Aamodt, T.},