GPU自开放自编程后,其应用范围就越来越广,除了现在最受瞩目的AI应用外,仍有许多领域会需要通过GPU缩短计算时间。不论是科学运算中,解决有限元素分析的求解问题,或是生物工程进行DNA比对,甚至设计师通过软件将完成的CAD模型以光线追踪技术进行加速渲染。由于这些应用使用到大量的数据进行运算,通过GPU硬件及相关以CUDA为基础的算法结合,皆可大幅缩短结果出炉的时间。
GPU这么香???
如何通过GPU达到加速效能???
GPU运算流程
流体力学模拟、场景物理渲染、即时的火焰和烟雾模拟…这些应用可以迅速完成运算,其实依赖的不只是GPU,还有驱动其运算的CUDA。
CUDA全名为:统一计算架构(Compute Unified Device Architecture),自2007年推出1.0版本后,目前已到10.2版本。简单来说,就是实现开发者和GPU沟通的一种桥梁,通过CUDA的技术让熟悉各种程序语言的开发者,能够通过程序撰写将算法通过GPU进行加速。
利用GPU加速的基本原理其实很简单:
主机上有负责存取数据的内存(RAM)及负责进行运算的CPU,而GPU上也同样有负责存取数据的内存和负责进行运算的GPU芯片(如下图)。在程序中主要流程都会由CPU进行控制及分配资源,当某一段程序要通过GPU进行加速时,可通过CUDA算法先将数据从主机内存复制到GPU内存,接着第二步CPU会呼叫GPU开始进行计算,计算完成后CPU又指派GPU将存放在GPU内存中的计算结果回传至主机内存,如此一来GPU加速的流程就完成了。