1.什么是GPU
计算机常见的处理器包括CPU和GPU。CPU(Central Processing Unit)即中央处理单元,它是计算机的控制核心。CPU需要很强的通用性来处理各种不同的数据类型,同时在大量的逻辑判断中包含了大量的分支跳转和中断处理,使得CPU的内部结构异常复杂,不擅长快速计算。
GPU(Graphics Processing Unit)即图形处理器,它是用于处理图形信号的单芯片处理器,在独立显卡中,一般位于PCB板的中心。GPU是专为图像处理设计的处理器,它的存储系统实际上是一个二维的分段存储空间,包括一个区段号(从中读取图像)和二维地址(图像中的 X 、 Y 坐标)。GPU采用了数量众多的计算单元和超长的流水线,但只有非常简单的控制逻辑,并且省去了Cache。
1999年,第一款真正意义上的显卡芯片GeForce256由NVIDIA推出,其具有完整的顶点变换、光照计算、参数设置及渲染4种3D计算引擎,极大地加快了计算机3D程序的运行速度,减轻了CPU的负担。
2.GPU架构与软件平台
尽管GeForce256中的固定管线能实现完整的3D图形计算,但其处理算法固定,弊端日渐凸显,因此人们开始考虑一种可编程的GPU,于是NVIDIA推出了GeForce3,ATI推出了Radeon8500,这就是第二代GPU。接下来的几年,GPU都以这种独立的可编程架构设计发展,时间是1999年到2002年。
但是此时的GPU编程能力有限,这一问题直到2003年第三代GPU被推出后才得到改善。特别是2006年NVIDIA与ATI分别推出了CUDA(Computer Unified Device Architecture,统一计算架构)编程环境和CTM(Close To the Metal)编程环境,使GPU通用计算编程的复杂性大幅度降低。
GPU的发展历程可以从并行体系结构的角度划分为以下3个阶段。
(1)固定功能架构阶段。
这个阶段是1995—2000年,此阶段各硬件单元形成了一条图形处理流水线,每条流水线功能固定,且硬化了一些给定的函数,其计算模型采用流式计算(Stream Computing)。GPU卸去了CPU的计算负担,聚焦于图形绘制功能,促进了图形学的发展。
(2)分离渲染架构阶段。
这个阶段是2001—2005年,此时GPU用可编程的顶点渲染器替换了变换与光照相关的固定单元,用可编程的像素渲染器替换了纹理采样与混合相关的固定单元。这两部分是实现图形特效最密集的部分,使用渲染器大大加强了图形处理的灵活性与表现力。
(3)统一渲染架构阶段。
从2006年开始到现在,GPU技术一直处于统一渲染架构阶段。在这一阶段,GPU首次提供几何渲染程序(Geometry Shader Program)功能,并动态调度统一的渲染硬件(Unified Shader)来执行顶点、几何、像素程序,在体系结构上不再是流水线的形式,而呈现并行机的特征。
如今GPU厂商开始从硬件和API方面对GPU提供专门的支持,且推出了专门做通用计算的GPU(如AMD FireStream和NVIDIA Tesla),GPU的服务对象也从以图形为主发展为图形和高性能计算并重。
3.GPU与CPU运算能力对比
GPU有高速的浮点运算能力,那么其计算能力到底有多大呢?CPU的浮点运算能力一般在10GFLOPS以下(每秒可进行10亿次浮点运算),而目前的TITAN V GPU峰值浮点运算能力(特指深度学习)为110TFLOPS,可以看出GPU的浮点运算能力远超CPU。
GPU特殊的硬件架构使其相比CPU具有以下优势:拥有高带宽的独立显存;浮点运算性能高;几何处理能力强;适合处理并行计算任务;适合进行重复计算;适合图像或视频处理任务;能够大幅度降低系统成本。
GPU非常适合做并行计算和密集型计算,随着NVIDIA等企业GPU产品线的成熟,面向个人和企业的GPU相继面世,并快速迭代。
显存为8GB的NVIDIA显卡已经可以满足研究人员在大部分情况下进行深度学习训练和测试的需求,这样的显卡只需要3000元左右,几乎每个人都可以承担这样的硬件成本。而企业则可以选择更高显存和计算能力的显卡,人人从事深度学习研究的时代已经来临。