From baee9c0107c529a81b8b37023e5b731b5a3fbc40 Mon Sep 17 00:00:00 2001 From: Shenjun Zhong Date: Tue, 13 Nov 2018 18:09:07 +1100 Subject: [PATCH] update 15.3.1 GPU architecture --- .../第十五章_异构运算、GPU及框架选型.md | 35 +++++++++++++++---- 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/ch15_GPU和框架选型/第十五章_异构运算、GPU及框架选型.md b/ch15_GPU和框架选型/第十五章_异构运算、GPU及框架选型.md index 0109ea4..660fe84 100644 --- a/ch15_GPU和框架选型/第十五章_异构运算、GPU及框架选型.md +++ b/ch15_GPU和框架选型/第十五章_异构运算、GPU及框架选型.md @@ -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-5960,Intel的第五代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 框架