通用GPU又添新兵

时间:2022-10-23 01:47:33

谈起GPU,大家首先想到的一定是3D游戏。最大限度地展现出3D游戏的各种特效―直是驱使图形芯片厂商不断创新的动力,也是DIYer不断升级显卡的目的所在。这种发展模式有利也有弊――利在于图形芯片技术得到了不断的发展,从浮点运算能力来看GPU已远远超过了CPU;弊在于GPU强大的计算能力仅仅应用于3D游戏领域,专注于图形渲染,很少从繁忙的CPU那里分担一些其它的任务。因此,业界开始尝试在现有GPU的基础上进行软硬件改造,将其强大的浮点运算能力应用于更广泛的领域,让它变得像CPU那样更加通用化,在一定程度上取代CPU的部分功能。NVIDIA基于GeForce 8而开发的Tesla系列平台就是这一领域的最新成果。

GPU走进崭新应用时代

在此之前,GPU“专注于”3D游戏,而CPU即使再繁忙也无法让GPU来分担任务的根本原因是GPU架构的限制。众所周知,GPU核心逻辑单元包含顶点渲染单元和像素渲染单元。起初,顶点渲染单元和像素渲染单元只能执行固定的图形指令,如果一条其它类型的指令传递给GPU,那么GPU就会立马摸不着头脑了。因此,当时想让GPU分担CPU的任务是根本无法实现的。随着图形技术的发展,GPU开始具备可编程能力,如此一来,使得程序员拥有了较大的灵活性,而且随着图形API(ApplicationProgramming Interface,应用程序接口)的不断完善,GPU所具备的可编程能力也越来越强。当API发展到DirectX 9.0时代,顶点渲染指令和像素渲染指令长度已经达到了512条,通过特定的指令转换规则,GPU便有能力处理除3D游戏以外的任务,例如在播放高清视频时所用到的PureVideo和Avivo技术就是GPU的一种通用计算。而在最新的DirectX 10 API当中,打破了传统的顶点渲染单元与像素渲染单元分离的架构,使得整个GPU的效率更高,而且更强大的可编程能力也让新一代图形芯片具备了较为完整的通用计算能力。

如果GPU只是具备了除3D游戏以外的计算能力,还不足以表明GPU将得到更大的发展空间,是否有真正的应用需求才是更为重要的因素。在科学计算领域,要求计算机具备强大的并行浮点运算能力,这样才能完成庞大的数据计算工作。而CPU架构的特长在于管理多个离散的任务,但是有些任务能够被细分为多个更小的单位并且可以被并行化,CPU在处理这些任务的时候并没有突出的性能优势。因此,厂商为了提高基于CPU体系的超级计算机性能,不断增加CPU数量便成为了一条折衷的法则。IBM已研发出新型蓝色基因(Blue Gene)超级计算机系统Blue Gene/P,这套系统的处理能力超过了1PFLOPS(1000万亿次浮点运算能力),而代价便是集成了294912颗核心(73728个四核CPU)。再来看看GPU,由于GPU在架构设计上一开始就是为计算密集型处理而设计,高强度并行计算本身就是3D游戏要求之一。在GPU当中,增加更多晶体管的作用在于处理数据(Data Processing)而不是存储数据(Data Caching)与流控制(Flow Comrol)。因此,利用GPU来构建超级计算机无疑是一种非常高效的途径。

NVIDIA Tesla平台登场

面对通用计算的庞大市场需求,NVIDIA终于在近期了Tesla平台。它是一套基于GPU的HPC系统(High Performance Computing,高性能计算),包括了硬件与软件两部分――基于GeForce 8系列的GPU,以及CUDA开发工具包和C编译器。

根据市场需求的不同,NVIDIA将整个Tesla产品线分为三条:“Tesla C870计算处理器”、“Tesla D870桌面型超级计算机”和“Tesla S870计算服务器”,用户可根据自身需求选择合适的系统。

Tesla C870计算处理器其实就是一块GeForce 8800显卡,两者在本质上并无区别,规格上也非常接近。它使用的是Ouado显卡的PCB基板,核心频率为575MHz(与GeForce 8800GTX相同),同样有128个统一渲染单元,运行频率1.35GHz,搭配显存容量为1.5GB。Tesla C870能够提供518GFLOPS计算能力,目前只支持32位单精度浮点运算,双精度的升级版将在今年年底前推出。与GeForce 8800显卡不同的是,由于不需要显示输出,Tesla C870取消了传统显卡上的显示接口(无法当作显卡来使用),但保留了与Quadro和GeForce显卡一样完整的OpenGL和DirectX功能。

Tesla D870桌面型超级计算机面向于高端市场客户。Tesla D870本身并不是一套完全的计算系统,它通过一条PCI-E外接数据线附加在主系统上(主系统需要安装一块PCI-E x16/x8扩展卡),主系统上计算任务通过特定程序和驱动调用Tesla D870进行运算,再将结果返回到主系统中,完成通用计算任务的加速处理。Tesla D870系统当中具备两块GPU(即Tesla C870 SLI),当然,也可以选择两套桌面系统通过架式组建一套3U系统。Tesla D870能够提供1,036TFLOPS计算能力。在静音方面,Tesla D870也相当出众――40dB,完全能够在办公场所使用。今后NVIDIA还会将TeslaD870升级到四块GPU或者通过组建3U系统提供八块GPU的运算能力。

TeslaS870计算服务器则面向于最高端的应用领域,每个1U设备可以提供4~8块GPU,在获得最高性能的同时降低功耗,四块GPU的系统功耗为550W,计算能力达到了2.072TFLOPS。NVIDIA Tesla服务器产品的产品配置也将十分灵活,可以满足既追求高性能又需要低功耗的应用场合。Tesla S870的工作方式与D870相似,同样通过PCI-E外接数据线附加在主系统上,作为通用计算的“加速器”,不过Tesla S870支持用两条PCI-E外接数据线连接主系统,以减小单条数据线产生的数据传输瓶颈。

CUD是实现通用计算的关键

在介绍完Tesla硬件平台以后,我们简要提及一下至关重要的软件开发平台。NVIDIA开发人员提供了一项名为CUDA(Compute Unified Device Architecture)的新软件架构技术。当运行CUDA程序时,GPU作为CPU的协处理器运作。GPU在CPU组织、翻译和交流信息的同时,依靠大量的并行数据信息处理核心进程。应用程序中需要被执行多次的高强度运算部分,每次由主程序提取出来并编译到GPU中并行执行,不过它们基于的是不同的数据。

CUDA包含三个主要部件:可以高效率执行并行数据的GPU、用于访问GPU上并行运算资源的C编译器,以及负责运算的实时驱动。

CUDA的核心在于为GPU设计的C编译器,它的首要特性是能够简化并行程序编码的编程环境。而经典的C语言对于大多数开发者来说是最熟悉不过的了这样一来,就可以使开发者将更多的精力放在设计高效的并行程序,而不是去处理繁琐的API函数。为了简化开发环境,CUDA的C编译器允许编程人员将CPU和GPU的代码编写在同一个程序文件当中。当然,简单的附加说明还是有必要的,告知CUDA编译器哪个函数应该放到CPU中执行,哪个函数应该编译到GPU中执行一需要GPU处理的部分将被CUDA编译器编译,而需要CPU处理的代码将被标准C编译器所编译。开发者使用T--种创新的编程模式来向GPU映射并行数据,CUDA程序将需要处理的数据分割成更小的块,然后并行的进行处理。这种程序模式允许程序员无论对于多块GPU还是一块GPU都只需一次编程即可。

当运行通用计算任务时,CUDA驱动会自动识别出能够用GPU进行加速的计算任务,然后将这些任务从CPU那里“抢”过来,加载到GPU中执行。主程序会通过高速PCI Express总线与GPU进行通信。数据的传输、GPU运算功能的启动以及其它一些CPU和GPU交互都可以通过调用专门驱动来完成。这种高级的操作过程将把开发人员从手动管理GPU运算资源中解放出来。

翻译和操作大量信息数据的能力是计算科学的首要条件,加之广泛普及的CDUA SDK开发工具,使得任何应用程序都能有效利用GPU强大的运算能力。由于CUDA软件与Tesla平台的结合,开发者有能力将在超级计算机上做的事让桌面电脑来做,并且能够显著地增加服务器集群的数据处理能力。

NVIDIA Tesla平台实际应用

可以说NVIDIA Tesla平台的应用相当广泛――地震模拟、计算生物学、商业风险评估、医学成像、信号处理、物理仿真和气象预报,甚至核模拟,只要是需要大规模数据计算的应用场所都有Tesla的用武之地。NVIDIA表示,使用Tesla平台加速这类计算的效果非常理想,例如在地震数据库的计算上,Tesla平台的运算效率是CPU的66~100倍,在大气云层仿真的计算上则是50倍;而分子动力学的加速更可以达到240倍!

这样一来,诸如分子仿真实验等科学研究工作将不再被局限于在服务器集群上运行(以前只有服务器集群才有足够的性能来进行科学计算),私人实验室和桌面计算机上工作站在Tesla平台的帮助之下同样也能进行仿真实验,研究人员将不会再因为争夺稀少的超级计算机而冲突,也不用为这些计算任务煞费苦心地安排时间计划表了。

通用GPU前景看好

我们知道,其实NVIDIA推出的Tesla平台并不是首款通用计算平台,AMD早在半年前就拿出了“流处理器”,这款基于Radeon X1900的“流处理器”可以实现375GFLOPS计算能力。不过相比之下,NVIDIA在通用计算产品上的规划更加完整。毫无疑问,通用GPU的竞争已经开始。当然我们也可以看到,目前NVIDIA和AMD的通用GPU产品只是针对特定计算任务的“加速器”,还无法真正取代CPU,而只是相当于CPU的“协处理器”。

超级计算机对于一个国家的科学进步、技术提高以及国家安全都有着至关重要地位。因此众多国家和厂商在全球范围内掀起了一次又一次超级计算机竞赛,希望通过展示自身的实力以便从利润丰厚的高端市场得到利益。那么,未来超级计算机市场是传统的CPU继续领先还是GPU异军突起呢?在这里我们不妨做一个简单的计算来大胆预测一下通用GPU的前景。我们以IBM下一代蓝色基因Blue Gene/P所备的3 PFLOPS计算能力为标准,总需294912×3=884736颗核心;如果采用Tesla S870的话,仅仅需要1500U(即6000颗GPU),通用GPU的优势可见一斑!在此情况下,作为老牌处理器厂商的英特尔也意识到问题的重要性,并积极投入高端图形技术的研发当中。今后GPU和CPU的竞争将会如何发展,让我们拭目以待。

上一篇:电脑配件市场前瞻 下一篇:安全,武装到手指