GPU在可编程性和计算能力上的快速增长,引得大批研究团体关注,争相将大量需要计算的复杂问题映射到GPU上,并将GPU定位为未来高性能计算机系统中传统微处理器的的替代方案[14]。英伟达所研发的Tesla架构正式标志着GPU朝向通用GPU发展,为后续在深度学习领域广泛应用奠定了基础。[15]

GPU从图形显示到通用计算之路[16]
时间回到现在,GPU在图形计算上的专用性和面向人工智能的通用性上,引发科学界的争论,是否要将GPU的AI和3D功能拆分成两种DSA。GPU专用于图形计算效率高,但只支持几种特定的算法和模型,走通用计算兼容性好,但效率差,功耗也大。[17]
目前行业一致的观点是GPU在图形计算和通用计算表现出的“双重人格”会逐步融合,未来将不再拥有功能界限,GPU也将拥有原生可微和张量加速能力。[18]
那么,再往后呢?从近几年的大会来看,GPU将向大规模扩展计算能力的高性能计算(GPGPU)、人工智能计算(AI GPU)、更加逼真的图形展现(Ray Tracing GPU,光线追踪GPU)三大方向发展[16]。其中AI是关键,GPU硬件/软件界面将使GPU成为“AI世界的CPU”,基于AI的渲染会让张量加速成为GPU中的主流。[18]

GPU的两大功能和应用[16]

GPU与CPU的抢婚者
GPU虽然好用,但它也脱离不开CPU。一方面,GPU无法单独工作,需要依赖CPU控制调用;另一方面,二者的架构极为不同,构建目的也各有不同。
CPU会包含4个、8个、16个甚至32个以上的强劲内核, 同时一个内核之中便封装了算术逻辑单元(ALU)、浮点处理单元(FPU)、 地址生成单元(AGU)、内存管理单元(MMU)等几乎所有功能。一般来说,CPU中计算单元ALU约为25%,逻辑控制为25%,缓存Cache为50%。反观GPU中计算单元ALU通常达到95%,缓存Cache则为5%。[19]
最初,GPU是为了帮助CPU加速图形处理而设计的专用硬件。图形渲染具备极强的并行性,需要非常密集的计算与巨大的数据传输带宽,所以GPU被设计成包含成千上万个较小内核的形式。每个GPU的内核都可以并行执行一些简单的计算,内核本身算不上十分智能,但与“一核有难八核围观”的CPU不同,GPU能同时动用全部内核执行卷积、ReLU和池化等深度学习计算。除此之外,GPU采用了灵活的存储层次设计以及两级编程编译模型。[20][21]

GPU和CPU的不同点[22]
不同的结构设计使得GPU有了自己的专长。GPU的频率只有CPU的三分之一,但在每个clock周期中,它能够并行执行多于CPU将近100倍的计算,在大量并行度任务中,GPU比CPU快得多,对那些并行度很低的任务,显现的速度就会慢得多。另外,相比CPU,GPU通常拥有5~10倍的内存带宽,但在访问数据时会有更长的延迟,这就造成GPU在可预测的计算上做得更好,但在不可预测的计算上做得更差。[23]