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 @@
加速器基本编程原理
------------------
## 加速器基本编程原理
: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\*类型指针进行内存读取。