MCPLive > 杂志文章 > GPU通用计算多就是好

GPU通用计算多就是好

2012-07-27微型计算机《微型计算机》2012年7月下

2010年12月,国内主流媒体受NVIDIA之邀,参观位于天津滨海新区的国家超级计算天津中心,近距离探秘刚刚勇夺世界第一的“天河一号A”超级计算机。在参观过程中,一些大众媒体纷纷表示不解:为什么“天河一号A”中的“显卡”挡板上光秃秃的,没有任何接口呢?事实上,这里的“显卡”已经不是传统意义上的显卡了,它们的名字叫做Tesla,并不具备3D图形渲染功能和接口,进行高浮点运算的通用科学计算才是它们的任务。无独有偶,英特尔于近期才推出的外观类似显卡、名为Xeon Phi的通用计算设备,也没有任何接口,主要用于通用计算。

由我国研发的“天河一号A”超级计算机大量使用了GPU通用计算,获得了巨大成功。

和CPU相比,GPU的并行计算能力极为强大,但很长一段时间内,GPU只能用于图形计算,强大的计算能力被白白浪费了。之所以这样是因为GPU设计之初是作为专用设备来使用的,专用设备往往在某种计算领域拥有极为强大的性能表现,但由于其专用性的属性导致灵活度不高——在全球首款GPU GeForce 256中,GPU除了利用大量的ALU进行像素计算外,只加入了顶点和坐标转换单元。整个GPU只能进行固定类型的运算,连浮点计算都不支持。也正是在GeForce 256上,科研人员们看中了其强大的多纹理处理性能,可以进行一些不太复杂的科学计算。终GeForce 256被用于求解数学扩散方程,这也是GPU首次在通用计算领域得到应用,也证明了其具备通用计算的潜力。

于是,图形厂商在接下来的设计中,开始“改造”GPU,使其变得可编程化、通用化。终于,在DirectX 8时代,GPU中的像素和顶点单元被定义并分离开来,加入了初步的可编程功能。在DirectX 9特别是DirectX 9.0c上,GPU终于可以开始初步支持部分程序控制功能,这个时期GPU的彻底浮点化也扫除了GPU通用计算的后一个障碍。

时间很快过渡到了2006年,在这一年,斯坦福大学宣布和ATI在GPU通用计算能力的挖掘和应用上获得了重大突破,ATI Radeon X1900系列显卡正式开始支持斯坦福大学主导的Folding@Home项目。Radeon X1900系列显卡设计了远超传统GPU的强大像素计算单元,单颗Radeon X1900 GPU在浮点计算能力上达到了当时顶级的CPU 70多倍。ATI虽然获得了首次大规模成功应用GPU计算能力的“第一次”,但真正的革命并非由其主导。同样在2006年,NVIDIA发布了GPU发展史上改进大、架构进步为明显、性能跳跃为惊人的产品:G80。G80是首次采用了统一渲染架构的GPU,NVIDIA在给予G80强大的3D性能的同时,还赋予了G80另外一项划时代的功能:CUDA。

CUDA的全称是Compute Unified Device Architecture(统一计算设备架构),它的发明,将GPU通用计算和并行计算带入了全新的时代。借助于使用C语言编译器的CUDA SDK以及专门为CUDA持续优化的NVIDIA GPU产品,开发人员可以彻底抛离之前各种令人难以忍受、极为不便的语言环境,转而使用熟悉的C语言进行操作。

在G80后,NVIDIA又发布了大幅度改进的GT200架构和堪称GPU通用计算的梦幻产品Fermi,将GPU通用计算推向一个新的境界。Fermi从设计开始就充分考虑了GPU通用计算的需求,在双精度性能、内存校验、缓存设计上全面采用了开创性的革新设计,终达到了有史以来为出色的通用计算效能。Fermi带来的不仅仅是纸面上的变化,现在,很多全球顶级计算机研究机构和学校,已经开始在课程中加入CUDA的相关内容,国内的中科院和清华大学,也开始将GPU和CUDA用于研发和工程计算。

在GPU通用计算的发展中,除了CUDA外,OpenCL和微软力推的DirectCompute也展示了强大的魅力。目前,在全球高性能计算机排行榜上,GPU开始逐渐挤占CPU的地位,在GPU强大的通用计算性能的号召下,越来越多的厂商考虑使用GPU+CPU的异构结构组建自己的超级计算机,“天河一号A”就是典型例子。

综合来看,GPU和CPU本身架构完全不同,前者更适合进行并行化极高的计算,后者则在分支、跳转、判断较多的串行计算上拥有优势。在进行大量的集群模拟比如粒子态模拟、光线计算处理中,GPU可以获得比CPU高达几十倍的每瓦特性能。GPU通用计算的实质是暴力堆砌规模(主要是ALU),适合做大量、简单的重复性和并行性计算;而CPU的ALU等计算单元比较少,但控制和预测单元很强大,适合进行复杂、单独的计算。打个比方来说,GPU计算属于“劳动密集型”的,CPU计算则是“技术密集型”。

在个人电脑方面,GPU目前依旧扮演图形处理器的角色,只是偶尔加速一下转码和提高一些图形软件的性能,显然没有利用到GPU强大的计算能力。可以预见的是,在未来硬件和软件的进一步优化下,GPU通用计算能力的下一次大爆发并不远了。

分享到:

用户评论

用户名:

密码: