《通用GPU在高性能计算中的应用报告》由会员分享,可在线阅读,更多相关《通用GPU在高性能计算中的应用报告(13页珍藏版)》请在金锄头文库上搜索。
1、通用GPU在高性能计算中的应用一、背景概述现代科研过程已经在很大程度上倚赖于高性能数值模拟计算,通过数值离散用于描述各种问题的复杂方程并在计算机上高速求解,不仅解决了许多过去手工理论计算不能求解的问题,而且在很大程度上可以代替实地试验,有着直接、精确、快速的特点,同时易于和自动化设计、制造相结合,从而实现整个科研过程的无纸化,自动化,极大地节约了资源并提高了工作效率。数值模拟计算和理论计算、试验测量并称科学研究3大方法。随着科学复杂度的提高和需求领域的增多,数值模拟对计算性能要求也越来越高,因此数值计算又可以称为高性能数值计算。基于数值计算程序偏重于运行速度和编程人员群体同时又是科研人员的的特
2、殊性,因此在程序开发模型短期内难以有较大提升的情况下,其核心就是要求计算机硬件计算水平的快速提高。二、高性能计算机分类及其特点因用户的需求水平和经济负担能力的不同,计算机的购买也会有很大差别,从实用角度来看,高性能计算机可以用下面几条标准来衡量:a、硬件运行速度越高越好,从而尽可能缩短计算时间,提高计算效率;b、硬件使用成本包括购买费用、电费尽可能要低;c、计算机管理维护复杂度、管理费用、机器折旧费等越低越好,或者说使用效率/使用成本越高越好;d、程序开发复杂度和难度越低越好;e、任务是否饱满;依上述标准,高性能计算机一般可以如下分为3个水平:2.1、超级计算机超级计算机一般是指计算速度在几十
3、万亿次级别以上的计算机,是一个国家科技、经济和国防的综合实力的体现。各国之间对超级计算机的竞争十分激烈,具体情况可以从TOP500的排名变动情况来得到验证,目前最快的超级计算机“走鹃”为美国IBM制造,其速度超过了1000万亿次,另外还有几套著名的超级计算机如美国的“蓝色基因”、“红色风暴”以及日本的“地球模拟器”,我国曙光公司也建造了几套超级计算机,其最新成果是最近在上海高性能计算中心建成的“魔方”,其计算速度超过了100万亿次,这些超级计算机为上述国家的高科技研究和极端工业设计提供了有力的计算保证。超级计算机的优点是性能强悍,可以迅速有效地求解各种复杂的方程,为一个国家的科技发展提供强有力
4、的计算资源保证;工作状态稳定,可长时间甚至几十年连续运行而不停机。 缺点是投资、管理及运行费用巨大,维护困难,一般单位负担不起相关购买和维护费用甚至使用费用,更新换代速度极快,性价比很低;超级计算机的特点决定了其工作负荷必须饱满,而且不能停机,否则会极大地浪费资源,这就需要努力地安排各种计算任务,尽量发挥计算机的性能。这也决定了每个国家一般也只是建造一套或数套,用来保证本国高科技研究和极端工业设计的发展。2.2松散集群机一般科研单位一方面对超级计算机的需求量不大,另一方面普通的高性能PC单机又满足不了计算需求,其对计算能力的要求是:a、性能较高,可以满足对中小型任务的快速计算;b、价格低廉,经
5、费一般在10万元以下;c、管理要尽量简单灵活;那么由若干普通商品PC机通过组网形式,利用特殊软件平台组成的松散集群是常用的形式。其优点是组装形式灵活,购置费用相对低廉,管理也比较简单,性能也相对足够,因此是现在各个常规科研院所通常所采用的形式。其缺点是空间占用较大,噪音较大,功耗较高,需要建设专门机房并安装空调设备;故障发生率也比较高,因此系统的安装、管理以及维护需要有专人负责;还有若组建的规模较大,其费用也很可观,一般需要十几万元到几十万不等;另外就是编写的程序的结构和算法需要做专门的并行化改写,编程难度系数较串行程序提高很多;加上其多人共享资源的属性,导致了研究人员必须为使用资源而争抢,工
6、作效率被降低,得到的计算结果延迟,不利于个人或小团队的实时计算需求,容易与科研过程脱钩。2.3 个人计算机这里是对小型服务器、工作站、高性能PC机的统称,这一类的特点是体积小,可随意摆放;CPU个数少,一般只有一个;配置简单,使用方便。相对前面2类的专业化和复杂性,这一类是日常科研计算应用最多的,其优点是灵活易用,计算能力不错,可以胜任日常办公和小型的计算任务;缺点是如果计算任务规模稍大,花费的计算时间则急剧升高,难以胜任快速计算要求,如果任务规模和数量稍大,此时就需要借助于前面2种类型的计算机。2.4 总结对于高性能数值计算,其关注核心是计算机硬件对高精度浮点数的稳定处理速度和I/O吞吐能力
7、,对其它的方面并不是很关心,以往主要依靠的是CPU性能的提升,造成以上三类高性能计算机性能的提升主要依靠CPU,而CPU的通用目的设计要求决定了其用于处理浮点数的部分仅占全部功能的一小部分,为了增加计算速度,只能依靠增加CPU个数进而增加计算机的并行度来解决,这也是每台超级计算机动辄拥有上万甚至上十万个CPU的原因,如美国Sandia国家实验室的“红色风暴”使用了13277颗2.4GHz双核心Opteron处理器,自然也就带来了体积庞大、功耗高、资源利用率低、价格高昂等弊端。目前CPU的发展已经遇到了瓶颈,其核心架构的工作频率因为制造工艺以及信号传递的量子效应而难以再有太大的提升,目前各CPU
8、生产厂商主要依靠增加CPU的核心数量来维持性能的提升,如目前主流的双核、四核,甚至八核的CPU也出现了,事实上是走了并行的道路,于高性能计算的提升有限,对解决个人计算机性能不够的问题帮助有限。因此,利用CPU来获得一种速度足够快速、体积小巧、功耗低、性能足够、资源利用率高的个人超级计算机面临几乎不可调和的矛盾。三、GPGPU和CUDA技术3.1 GPGPU介绍随着硬件技术的发展,原来仅应用于数字图形图像高速处理的图形处理器(GPU),通过硬件架构的革新和优化,借助相关软件平台,实现了对通用数值计算的支持,有效地释放了GPU本身具有的强悍的计算能力。GPU与CPU的架构特点可用下图1来表示:图1
9、、CPU和GPU的硬件架构体系从上图1可以看到,CPU的通用设计目的使得其大部分晶体管主要用于构建控制电路(如分支预测等)和高速缓存Cache(提高处理速度),只有少部分的晶体管用于ALU部件来完成实际的数值运算工作。GPU与CPU的设计目标不同,其专注数字图形数据处理的设计初衷,使得其控制电路相对简单,而且对Cache的需求较小,大部分晶体管组成了各类专用电路和多条流水线,从而使得GPU拥有惊人的浮点运算能力,如最新的NVIDIA公司的S1070GPU模块的浮点计算速度已经达到了单精度4万亿次的水平1,这已经相当于一个大中型集群的计算速度。GPU技术目前发展速度也十分迅速,近年来正在以大大超
10、过摩尔定律的速度高速发展,如下图2所示:图2、GPU技术的发展速度GPU技术的发展带来的并不只是速度的提高,还产生了很多全新的图形硬件技术,使GPU具有流处理、高密集并行运算、可编程流水线等特性。从系统架构上看,GPU是针对向量第3/7页 计算进行了优化的高度并行的数据流处理机,这种以数据流作为处理单元的处理机,在对数据流的处理上可以获得很高的效率。根据NVIDIA公司开发的GPU工具包CUDA(Compute Unified Device Architecture)的测试结果显示,利用GPU实现FFT、BLAS、排序及线性方程组求解等科学计算,与单纯依靠CPU实现的算法相比,平均性能提高了近
11、20倍。GPU极高的处理速度、本身的高速度发展以及上述新特性极大地拓展了GPU的处理能力和应用范围,并由此开创了一个新的研究领域:基于GPU的通用计算(GPGPU,General-Purpose computation on GPU),其主要研究内容是如何利用GPU在图形处理之外的其他领域进行更为广泛的科学计算。目前已成功应用于运动规划、代数运算、优化计算、偏微分方程、数值求解、流体模拟、数据库应用、频谱分析等非图形应用领域,甚至包括智能信息处理系统和数据挖掘工具等商业化应用。同时,也产生了一些针对GPGPU开发的通用计算工具包,能够基于GPGPU平台对FFT、BLAS、排序及线性方程组求解等
12、科学计算进行优化实现。由于GPGPU在并行处理和计算密集型问题求解等方面所具有的诸多优势,而其本身仅为一块集成在显卡上面的芯片,其功耗、体积相对大型机、集群极小,而性能则毫不逊色,有关文献2显示AMD的FireStream 9250 GPU可以提供超过1万亿次的单精度计算能力,而功率仅120瓦;NVIDIA的GeForce GTX 280 GPU 单精度浮点计算能力9330亿次,功率峰值236W,对应的显卡当前价格仅3000元左右,性价比十分高。因此GPGPU已成为目前普通PC机所拥有的强大、高效的计算资源,可以非常方便灵活的个人使用,从而实现了我们前面对高性能计算机的各种条件要求。3.2 C
13、UDA介绍CUDA是Compute Unified Device Architecture的简称,是NVIDIA公司开发的用于自家GPGPU计算的软件支持平台,包括编译器、支持库、数值求解库及软件开发手册等,其软件组成层次可以用下图3来表示:硬件驱动,应用编程接口(API)及其runtime库,还有两个更高层的通用数学库CUFFT和CUBLAS,硬件设计为支持轻量级驱动和runtime层,以达到高性能。图3、统一计算设备架构软件堆栈层次组成第4/7页 从上图3可以看到,由于CUDA提供了硬件的直接访问接口,而不必像传统方式一样必须依赖图形API(OpenGL和Direct 3D)接口来实现GP
14、U的访问,另外CUDA的GPU编程语言基于标准的C/C+语言,还提供了fortran语言接口,从而大大降低了CUDA应用程序的开发难度,使得科研人员可以迅速有效地把工作转移到GPGPU&CUDA平台上面,可以在短时间内获得超过1万亿次的极高的计算能力,相当于拥有了一台个人超级计算机。目前CUDA仅支持NVIDIA公司自己的产品,还不能够支持AMD的产品,后者由AMD自家的Brook+语言支持,但使用难度较高,支持率较CUDA远远为低。3.3 GPGPU发展情况目前发展并制造GPGPU的厂商有NVIDIA和AMD(ATI)2家,前者技术实力和发展成熟度比较高,特别是其GPU支持平台CUDA因安装
15、方便、应用简单,支持的GPU产品线丰富,计算性能稳定,因此推出2年来迅速获得了大量的支持,并由此深深影响了高性能工作站、图形处理软件的发展趋势;而后者由于自家的GPGPU产品线太短且价格较高,软件支持力度和宣传力度不够,因此目前的影响力还欠缺一些。GPGPU优异的性能和强烈的需求现实使得采用GPGPU显卡组建小型的高性能计算机为科研小组或个人提供高速计算能力是非常方便和合适的,由此通用GPU及相关支持软件平台获得了重点关注,特别是NVIDIA公司的CUDA平台,由于平台架构合理,学习应用相对简单方便,在短短2年的时间内,即获得了大量的支持。GPGPU的强烈需求也使得相关厂商对其十分重视,技术更
16、新换代速度迅速,据相关消息 ,NVIDIA下一代GPGPUGTX380已经流片成功,再添加一些,Intel的下一代CPU事实上也是目前GPU的架构,因此可以视为准GPU。软件支持平台方面,目前苹果、AMD、NVIDIA、Intel等核心公司共同推出了OpenCL(open calculation language)公共标准,到时会建立事实上的高性能计算语言标准,从而导致现有的程序开发模型和模式出现巨大的变化。3.4 GPGPU的弱点和改进由于GPU原有的应用目的是数字图形图像的硬件加速处理,单精度计算已经足够,因此GPGPU的设计思路受其影响还比较深,目前对双精度的支持力度相比单精度还比较低,因此对计算精度要求比较高的问题,如果采用单精度模式,则增大计算误差,采用双精度计算则计算速度较低。随着对GPGPU的需求迅速增加,目前相关制造公司已