update 15.3.1 GPU architecture

This commit is contained in:
Shenjun Zhong 2018-11-13 18:09:07 +11:00 committed by GitHub
parent b54556e9e6
commit baee9c0107
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 29 additions and 6 deletions

View File

@ -10,14 +10,37 @@ GPU,就如名字所包含的内容,原本开发的目的是为了进行计算
## 15.3 GPU架构简介
(架构内容)
### 15.3.1 为什么要使用GPU
和CPU的区别 + 图示)
### 15.3.2 CUDA 核心是什么?
GPU图形显示芯片作为不同于CPU的设计逻辑和应用场景有着非常不同的架构本部分将简单介绍GPU究竟是如何架构其中的计算核心有哪些特性。
### 15.3.3 新图灵架构里的tensor core对深度学习有什么作用
### 15.3.1 如何通俗理解GPU的架构
首先下图简单地展示了几个GPU不同于CPU的特性
* 计算核心: 图中的CPU,i7-5960Intel的第五代Broadwell架构其中包括了8个CPU核心(支持16线程)也就是理论上可以有16个不同的运算同时进行。除了8个核心计算单元大部分的芯片面积是被3级缓存内存和控制电路占据了。同样的来自Nvidia的GTX980GPU在差不多的芯片面积上大部分是计算单元16个SM也就是流处理单元每个流处理单元中包含着128个CUDA计算核心所以总共来说有2048个GPU运算单元相应地这颗GPU理论上可以在一个时钟周期内可以进行2048次单精度运算。
![CPU和GPU的简单架构对比图](./img/ch15/cpu_gpu.png)
* 计算核心频率时钟频率代表每一秒中内能进行同步脉冲次数也是从一个侧面反映一个计算元件的工作速度。下图中对比了个别早期产品比如Intel的x5650和几款Nvidia的GPU。可以看出核心频率而言CPU要远高于GPU。对于CPU而言在不考虑能源消耗和制程工艺限制的情况下追求更高的主频。但在GPU的设计中采用了多核心设计即使是提高一些频率其实对于总体性能影像不会特别大。当然其中还有能耗方面的考虑避免发热过高也进行了权衡。还有一个可能的原因是在一个流处理器中的每个核心CUDA核心的运行共享非常有限的缓存和寄存器由于共享内存也是有性能极限的所以即使每个GPU核心频率提高如果被缓存等拖累也是无法展现出高性能的。
![CPU简单信息](./img/ch15/cpu_specs.png)
![GPU的简单信息对比](./img/ch15/gpu_specs.png)
* 内存架构GPU的多层内存架构包括全局内存也就是通常意义上大部分比较关注的内存在若干到16GB之间截至到当前最新2级缓存和芯片上的存储包括寄存器和1级缓存共用的共享内存只读/纹理缓存和常量缓存)。通常来说,最高速的共享内存/缓存和寄存器都是非常有限的比如在Tesla的K20中只有48K的缓存可以作为共享内存或者1级缓存使用所以在很多用GPU加速算法实现的过程中有效地利用这些高速缓存是使得性能提升的非常重要的方面。
![GPU的简单信息对比](./img/ch15/gpu_memory_arch.png)
![GPU的内存架构容量信息](./img/ch15/gpu_memory.png)
### 15.3.2 为什么要使用GPU
哪些场景使用GPU
### 15.3.3 CUDA 核心是什么?
### 15.3.4 新图灵架构里的tensor core对深度学习有什么作用
### 15.3.5 GPU内存架构和应用性能的联系
### 15.3.4 GPU内存架构和应用性能的联系
## 15.4 CUDA 框架