服务器 频道

巨型机横评 实战考验三大超算应用性能

    【IT168 专稿】11月26日,2009年全国高性能算法软件研究开发研讨会,暨中国软件行业协会数学软件分会理事会年会在京召开。来自中科院软件所和高性能计算科研领域的多位资深专家在大会上做了有关报告和学术成果展示。大会颁发了2009年中国HPC Top 100排行榜,并选出了年度系统份额总冠军(曙光)和年度性能份额总冠军(国防科技大学:天河一号)。

    本次大会热点众多,我们已经报道的有:GPU加速为主 揭秘天河一号两大系统构成 、Nvidia展示信心 超级计算未来属于GPU09年HPC算法研讨会开幕 国内Top100颁奖

    与会专家普遍认为高性能计算目前的主要问题在于应用面较窄,与领先国家动辄数千颗CPU就一项工程进行运算的应用来比,国内目前的应用主要还集中在百颗处理器的规模。有专家认为,我国的高性能计算正在逐渐走向成熟,相比起来硬件更容易达到国际一流水平,而相关应用跟不上来一方面是算法开发的难度,另一方面是不少企业还在用较原始的方式做科研和设计。

中科院软件所 杨超助理研究员

    目前成规模成体系的使用高性能计算的大型应用案例主要是能源企业和大气、地质等地球物理计算,而更多的则是以科研院校为主的科学计算:如天体物理,核物理等。我们以前报道过与石油勘探有关的高性能计算案例——“GPU计算:在石油勘探领域里的革命英特尔高性能计算 加速中国石油勘探进程”。本次大会上,来自中科院软件所的杨超助理研究员就地球物理计算的两个典型问题的算法优化在三台超级计算机上跑了有关测试——分别是IBM的“蓝色基因”(BlueGene/L),曙光的“魔方”(曙光5000A),以及联想的深腾7000。

    一、三台巨型机测试平台与测试内容的简要介绍

    这几乎是国内最难得的同台竞技,首先是曙光5000A,这款代号“魔方”的机器部署在上海超算中心,其处理器为AMD“巴塞罗那”四核心处理器,主频为1.9GHz。深腾7000采用的是英特尔至强E5450四核心处理器,主频在3.0GHz。而IBM蓝色基因则采用的是IBM PowerPC440双核处理器,主频只有700MHz。除了IBM Power处理器是32位RISC架构外,AMD巴塞罗那和英特尔的至强E5450都采用的是EMT64位架构——这在一些内存敏感型计算中要更有利——和每CPU内存地址线的多少有关。

    网络互连方面一直都是超级计算机的研究重点。因为超级计算机在众多处理器协同计算时,对多节点之间的网络延迟十分敏感——试想,在处理器高速计算时,需要与另一个机柜中的某个处理器交换数据,这需要网络维持一个什么样的速度和流畅度才能保证没有延迟?因此,在曙光5000A和深腾7000中我们看到的解决方案是目前开始流行的Infiniband网络,而IBM则使用的是比Mesh网络更加规整化的Torus网络——其并行网络效率取决与通信矩阵的大小(我们可以看到这台蓝色基因在6*6的矩阵内可以达到1.4Gbps的通信速率,而在3*3的分支矩阵中速率可以达到2.4Gbps)。

    所做的测试主要基于两个地球物理的高性能计算数值模拟。这里要介绍一下数值模拟的意思,在很多时候科学研究会遇到瓶颈,如某个数学方程无法求解或是边缘条件太过复杂,这时候就需要数值模拟以超大规模的环境变量和参数代入进行反复的演算,在一定精度范围内取得该方程或是模型的近似解。

    这么说可能很难理解,举个例子:有个选择题:x+1=0,问x等于多少。正面计算的结果是逆向求解,得出x=-1。而采用代入法,则可以忽略计算过程(注意,这很关键),只需要代入这个选择题给的几个解,看看哪个可以使等式成立,即可得出答案。相信以前上学时,这种代入法求解的“简便”方法已经被很多学生实践过了。科学计算在遇到无法求解的问题时,采用的也是代入法,只不过规模非常大, 大到难以想象,也难以用人脑计算。

    以下两个问题是杨超助理研究员挑选出来进行测试的。第一个问题是:“地球外核热流动数值的模拟”,这个模拟的原始算法是由上海天文台的李立刚研究院研制的,主要是基于Aztec的实现。而这里杨超助理研究员用128*128*64网格的计算规模来考察这三台超级计算机的并行效率与并行可扩展性(主要是强可扩展性,即计算规模一定,通过增加内核数使得计算效率提升)。

    可以看出,在蓝色基因的原始测试数据中,随着处理器数量的增多(最多到4096核),计算时间虽然在下降,但是下降趋势逐渐减缓,从64核到4096核的使用,并行效率仅为8.2%,并没有出现预期的大幅度性能提升。一会儿我们来看看在算法改进之后,三台超级计算机同台竞技的结果。

    下面是第二个测试:“全球大气浅水波数值模拟”,该模拟主要是综合了有关大气、海洋、陆地、冰川等资料用以研究气候的计算模型。目前海洋模型的算法已经可做到很高的扩展性(报告中称已经可以做到千万亿次级别),而大气模型是制约整体模拟的瓶颈——这主要牵扯到二位球面的Cubed-Sphere网格的求解。

    通过对以上两个问题的算法研究和实际在三台超级计算机中运行的结果对比,我们不但可以发现软件算法对高性能计算的直接影响,还可以对比出同一算法在不同规模下的效率,以及在统一规模大小的情况下,这三个超级计算机的并行效率,浮点效率。
 

    二、巨型机横评 实战考验三大超算应用性能

   1、地球外核热流动数值模拟

    前面我们提到,在原始的算法中,随着处理器核数的增多,整个应用的效率并没有出现大的提升,从64核到4096核的并行效率只有8.2%。这与其主要特点是分不开的。据杨超助理研究员解释,这个数值模拟算法主要计算的是三维球壳区域的交错网格,采用线性方程组迭代BiCGStab、TFQMR求解和预设条件子RAS区域分解,子区域求解器是ILU(0)。

     此程序的原始版本在2008年做第一次移植的时候,通过计算机科学原理加快了4~6倍,然后通过PETSc分解出线性解法器预条件子和Multi-Physics区域分解器之后形成新算法,进一步使算法加快2~5倍,并显著改善了并行效率。

    改进效果如下图所示,在IBM蓝色基因上测试128*128*96的网格,新程序加快了10倍以上,并行效率更是从原先的8.2%提升到56%,这些结果都是在64核到4096核的比对上作出的。

    在强可扩展性的测试中(即测试规模一定,通过增加内核数来提升性能,缩减计算时间),我们可以看出IBM蓝色基因、曙光5000A以及联想深腾7000之间的性能比较。这里采用了测试规模是192*192*128的矩阵,显而易见的是随着核数的增多,三台超级计算机所用的计算时间都在减少,但是在核数超过2048之后速度趋于平缓。

    另一方面,深腾7000表现突出,除了64核时所用时间稍稍长于曙光5000A,其他情况下均要快一些,而IBM蓝色基因由于采用的是低频率(只有700MHz)的32位Power双核处理器,因此总体计算性能上始终要逊于两台国产超算。

     对于并行效率,如果以64核下的并行效率为基准的话,则三台超算普遍在256核至1024核之间是当前算法并行效率最高的状态。其中深腾7000异军突起,在核数为512时以181%的大幅度并行效率领先于蓝色基因的106%和曙光5000A的100%,并且在128核至1024核之间均保持着并行效率领先的优势——让人惊讶于其并行计算架构的优化和对“地球外核热流动数值模拟”算法的强势。

    平均单核浮点性能方面,IBM蓝色基因仍然由于其处理器性能关系垫底,曙光5000A也仍然是在64核时占据领先位置,浮点性能接近100Mflops,而深腾7000则在核数大于128时抢回了头号交椅,并且在512~1024核时达到120Mflops的平均单核浮点性能的峰值。效率方面,在平均性能垫底的IBM蓝色基因得益于其RISC架构,拥有3.7~4.5%的高效优势;而曙光5000A得益于巴塞罗那的直连架构以0.9~1.3%屈居第二;深腾7000虽然平均单核浮点性能领先,但是整体浮点效率却只有0.6~1.0%,相信如果是采用了最新的至强5500的话,会号上很多。

    2、全球大气浅水波数值模拟

    如前所述,根据美国Sanda实验室2009年的报告,全球大气浅水波数值模拟最难的部分是大气模型的计算。这里采用的主要方法是计算二维球面区域的Cubed-Sphere网格,求解非线性方程组NKS。据介绍,该求解需要用到FGMRES迭代法,预设RAS区域分解条件子,子区域求解器是LU/ILU(2)。

    对Cubed-sphere网格有兴趣的朋友可以看一下下面这张PPT所表示的球面浅水波方程——这是本算法的理论模型。其正确性验证依靠的是Test Case-5锥形山进行简单的检测。

    与问题一类似,显示强可扩展性的评测。可以看出在1024*1024*6的矩阵模型下(这是一个惊人的巨型矩阵),随着处理器核数的提升,计算时间也明显下降——仔细看一看,比第一个问题下降的要快一些,可见这里的非线性方程组的求解算法要好一些。在处理器核数小于768时,曙光5000A所用时间最短——笔者分析这主要是由于计算矩阵规模太大,对内存的依赖性很强,因而曙光5000A的AMD“巴塞罗那”处理器直连架构拥有巨大优势。而紧紧咬住彼此成绩的是深腾7000和IBM 蓝色基因,蓝色基因低频率的劣势被高效率RISC架构带来的性能提升所弥补,仅仅落后深腾7000几秒成绩。

    在处理器核数大于1536时,深腾7000的累计的处理器优势已经可以弥补其内存直连上的与曙光5000A产生的瓶颈,故而开始逆转结果,又一次上演了问题一中的测试结果。之后更多核的测试,由于时间关系曙光5000A和深腾7000并没有参与,但从IBM蓝色基因的表现来看,本算法在3072核时效率仍然很高,到6144核时达到瓶颈,往后到7000核以上性能提升有限。

    并行效率方面,同样是计算刚才的矩阵,以192核数时三台超级计算机的效率为100%。深腾7000当然不让的仍然是效率王,在核数增加时,其并行效率是唯一没有衰减,反而上升的巨型机。而通过1536核时曙光5000A只有79%的效率,可以看出前面为何深腾7000会在强可扩展性上超过曙光5000A——对手的效率降低了,抵消掉了内存直连架构的优势,而自己的并行效率提升为原先的103%,自然有所超越。

    平均单核浮点性能,曙光5000A依然凭借其直连优势在小于768核时保持领先,而且核数越少优势越明显(在192核时拥有140Mflops的平均单核浮点性能)。而随着核数增多,在768核以上时,深腾7000的单核浮点性能就已经超过曙光5000A,而蓝色基因一直维持在130Mflops的水平线上,其浮点效率也是强悍的8.3~9.1%,曙光5000A第二,为1.5~2.0%,深腾7000仍然与问题一中的结果一样垫底,只有1.1~1.3%。

    与问题一不同的地方在于这里还测试了三台超算的弱可扩展性(即在固定每个处理器内核的计算规模的前提下,通过增加核数来看系统整体的效率)。可以看出,以1*1*6个核心为单位,计算128*128*6的矩阵为基本计算规模来看,当处理器核数与计算规模同比例翻倍的时候,其求解时间有一个线性增加的过程。

    从求解时间来看,在核数小于864时,IBM蓝色基因的弱可扩展性明显要低,其求解时间要大于曙光5000A和深腾7000,而深腾7000在内核数大于24的同比计算规模递增中,平均单核浮点性能的优势充分体现,所用时间越来越短。而曙光5000A则在核数大于1536时,终于因为自身平均效率的过分降低而被IBM蓝色基因迎头赶上。本统计中蓝色基因每节点只用了一半的处理器内核(双核中的一个核),而曙光5000A每节点16个内核中的8个,深腾7000则使用了单个节点中的全部8个内核。

    在弱可扩展性的平均单核浮点性能方面,可以看出RISC架构的优势在于随着计算规模和核数的同比递增,其单核浮点性能并没有过多的衰减——意即其系统均衡相对很好。而深腾7000与曙光5000A在核数与计算规模较小时的单核浮点性能很高,但是随着系统规模上升,到864核以上时,平均单核浮点性能就已经下降到与IBM 蓝色基因同一水平,甚至被反超。由此,可以发现IBM蓝色基因的浮点效率颇高,为16.6~21.5%,而曙光5000A的效率在4.7~7.7%左右,深腾7000仍然以1.9~3.7%的浮点效率垫底。

    小结:

    综合以上两大问题的评测,我们可以对比三台超级计算机的强可扩展性数据:首先是并行效率方面,深腾7000以103~159%的绝对优势位居榜首(这主要得益于英特尔至强处理器的浮点运算性能),而曙光5000A成绩在67%~79%之间与IBM蓝色基因64%~72%的成绩想去不远,互有胜负(这也与算法有关系)。浮点效率方面则是基于RISC处理器的IBM蓝色基因拥有绝对优势,而两款x86处理器的超级计算机则普遍效率不高。

    弱可扩展性方面,仍然是IBM蓝色基因的成绩稳定,处理器内核数与计算规模同比增长从6~1944核的区间内浮点效率可以达到16.6~21.5%,而曙光5000A在6至216核时也可以达到4.7~7.7%,深腾7000在6~1536核时浮点效率为1.9~3.7%。

    笔者在分析这些数据时发现,以上三台超级计算机分别采用了不同架构的处理器:分别是采用了直连架构的AMD巴塞罗那,采用了酷睿架构的英特尔至强,以及采用了RISC架构的IBM Power。从处理器特性来看,RISC架构天生的浮点计算优势使得IBM Power处理器在这一领域拥有先天优势,因而蓝色基因屡战屡胜。而另一方面,AMD的直连架构使得曙光5000A在问题二这类举行矩阵的内存敏感型运算中占到先机。同样也是在这一问题中,深腾7000凭借架构优势和系统稳定性,后来居上,打败了直连架构的先天优势,使我们明确了在大规模的高性能计算中,系统架构的效率需要均衡和稳定,否则无法胜任上千核的运算。

    另外,深腾7000在并行效率方面的强势令人眼前一亮,如此大幅度的领先同类超算平台,可以归结于是系统设计的功劳,另一方面也说明了至强处理器的高性能计算优势——当然,若是换为最新的至强5500应该会取得更加明显的成绩——尤其是在浮点效率和内存敏感型应用方面。

0
相关文章