怎样从应用出发测试HPC? 看863专家分享经验

智者深具理性和智慧,他们不仅自己做事充满睿智,更愿意把帮助其做出正确选择的方法尽最大可能传播出去、让更多人从中受益。清华大学作为拥有高性能计算(HPC)一流人才的高校,自身就是一个选购使用HPC的聪明用户,同时也是个明智采购诀窍的积极传播者。

谈到HPC的测试、选型和构建策略话题,清华大学计算机系副主任陈文光教授是个非常合适的人选,因为他还兼任着另一项社会性职务–863高性能计算机评测中心副主任,负责该中心的业务运营,这让他的角色显得有点儿特别。

在学校,他是传道授业解惑的学者、高性能计算专家;而在评测中心向外界提供服务时,他和他的团队又成了指导者,一个地地道道的参谋。他们站在公正评测的立场上,努力用技术的力量来推动中国HPC的发展,

在清华大学采购HPC时,作为行家的陈文光当然有些"私心",他把中心一整套评测规则毫不妥协地用在这块完整的试验田上,也因此打造出了高校采购HPC的新样板。

倡导全过程测试

863高性能计算机评测中心从2003年开始运作,2004年在清华大学挂牌成立,初衷就是希望建立一个第三方评测机构,像建筑监理一样对研制单位投入巨资建设的高性能计算机进行验收,从机制上提供公平的评测保障。

该中心联合多家经营部门和科研院所,依托发起单位在高性能计算领域的学术资源和实践经验,面向国内HPC用户提供评测服务,目前已经协助验收了30多套HPC,包括曙光5000,曙光4000,联想深腾7000、深腾6800等当时国内民用领域最大的计算机,以及一些高校的中等规模计算机系统。

据陈文光介绍,该中心提供服务的最大特色是"全过程评测",覆盖了HPC从采购决策一直到系统验收的整个过程,而并非只是单纯的验收,毕竟那时系统"木已成舟",很难再做过多改动。这种评测方式定位在为用户和厂商都提供服务,从早期就发现问题、并尽早解决问题。

接受哪种服务是用户选择的。针对已经建成的HPC系统,该中心提供了一套分层建模的方法,来查找系统中可能存在的问题。"系统规模很大之后,存在的很多故障并不一定反映在程序不能执行上,有可能表现在程序执行缓慢。"陈文光说,他们的做法是建立测试模型,目标就是预测,每层都有参考值,如果执行时间与预计相差过大,就表明有问题。这样就从底层一步一步往上走,用一些小规模的基准测试来测带宽,用软件工具测点对点的带宽和延迟,然后再去做集合测试,逐步排查,隔离可能发生的故障。用这种办法,他们在验收系统中发现了大量潜在的故障。

如果用户希望该中心在采购决策阶段就介入,陈文光团队所做的工作就要多得多了。"这种测试开始时系统并不存在,我们提供一套方法,能说明系统怎样设计才能满足用户需求,解决用户已经决定了应用程序和应用性能之后对硬件选择的决策问题。"陈文光说。

测试如何从应用出发

在系统的性能评价方面,陈文光团队一直执行严格的应用导向。"高性能计算机是为用户的实际应用服务,理论计算峰值只是一个参考。"陈文光所说的理论计算峰值是用Linpack测试得出的,这是过去评价HPC的关键指标。"Linpack测试是有意义的,但从用户角度来讲,如果仅仅靠Linpack来决定购买,可能会有失偏颇。怎么再做一些补充,让用户选对最适用的系统?"陈文光表示,最好的办法就是测试用户的实际应用。

"我们首先要整理用户的应用,但没法把所有应用都拿来测试,按照二八原则,基本上是抽取最重要的代表性应用,对一般性用户可能不会给予过多关注。接下来,要进行测试程序定制,测试程序的规模必须加工缩小到一个节点上执行,同时执行时间要具备可比性,10分钟到1小时之间比较合适。还有重要一点就是能验证结果的正确性,所有基准测试不止是要测试性能,最后还要知道基准测试是对的。"陈文光说,这些工作因为用户的实际应用不同,前期准备非常重要。而到了这里,测试还没有完成。

在测试了多个应用程序之后,还要进行应用性能分数整合。"我们按照国际上比较标准的做法,取一个系统做标准单位,得出所有系统的相对性能,然后把每个程序的相对性能合起来做几何平均,这个均值就是最后的系统性能得分。"陈文光表示,通过这一整套方法,最基本、最关键的点就可以提供出来了,用户明确得出侯选系统中的节点性能,据此预设全系统的性能。

打造清华样板

清华大学自身也是HPC的用户,因此863高性能计算机评测中心这套方法很自然地就应用在了清华大学自身的采购上。

在此前的不同时期,清华大学曾先后采购过多套高性能计算机,最新的一套基于至强5400处理器的系统已经应用了近三年时间。毕竟硬件发展很快,应用对计算性能的需求又是无止境的,现在看来,既有系统已经很难满足当前的应用需求了。为此,清华大学计划采购一台浮点计算峰值达到100TFlops/s的高性能计算机,陈文光率领的团队就承担起了对这套系统进行全过程评测的重任。

目前,在清华大学的数据中心里,不同厂商送测的系统正在忙碌着。"我们现在就测系统的单节点和存储性能,把学校今后在系统上运行的重要应用缩小规模在单节点上做测试,最终可以把性能指标勾画出来,并在招标书中指定得出的参考性能分或性价比得分,这对清华招标起到很好的指导作用。"据陈文光介绍,该系统已经初步选定采用最新的英特尔至强处理器,预计将配置约900个基于至强5600的双路计算节点,同时搭配一些基于至强7500的多路胖节点。

在测试过程中,清华大学选取了5个代表性应用–分别用于模拟全球气候、模拟环境污染、生物及物理科研的运算等。这些应用来自于清华各学院,他们以后将是新系统的使用大户。"我们就做了程序裁剪,运行时间控制在单个程序1000秒左右,然后做结果验证。我们还特别做了功耗测试,计算满载和空载时的功耗指标,用于估算整个系统的功耗值和电费。"陈文光介绍说,测试的大部分程序都是CPU密集型应用,至强7500系列和5600系列在缓存方面比上一代有很明显的改进,所以能看到它的性能有很好的提高。

在实际使用的并行应用程序中,并非所有程序都有MPI的版本。如果有MPI版本,单节点上的运行规模可以控制,这在至强5600这样的主流HPC计算节点上就可以应用得很好。但也存在一些程序,只有OpenMP版本而没有MPI版本,比如清华大学运行的环境污染计算程序GEOS-CHEM,这种应用就需要计算性能极其强大的胖节点来运行。因此,基于至强7500的多路多核系统就当之无愧地成了这部分程序应用的优选。"在过去我们是做不到这样的性能提升的,虽然总体预算有限,可能不会太多配置7500系列的胖节点,但一定会有一部分,未来也会挖掘出一些重要应用要在胖节点上运行。"陈文光说。

在CPU的总体选择原则上,陈文光建议,构建HPC还是要在预算许可的情况下尽可能用高端CPU,原因是并行程序也存在一部分串行部分,CPU越强,执行串行部分的时间就越短,这样对于提升执行效率影响很大,而且整体并行度也可以降低,能保持很好的加速比。而英特尔最新的至强处理器,由于其单个核心的执行效率非常出色,因此在这方面的表现也比较抢眼。

从新特性中发掘新课题

在测试过程当中,陈文光团队对新一代至强5600和7500系列都有了更深层次的了解。"在至强7500当中,我认为RAS特性非常好。现在HPC遇到的很大问题就是系统的规模大了,出故障的可能性也就越大。系统本身的平均无故障时间越长,系统越可靠,做容错的代价就会变得特别小,不必花太大代价来做高可用。同时,大内存的支持,对于某些特定程序来说也至关重要。如果网格粒度画细,就需要整个内存能够很大,内存容量小就只有去硬盘上做调度,效率会十分低下。对于这类并行程序来讲,大内存支持是非常好的技术改进。"

对于英特尔在处理器中引入的睿频加速(Turbo Boost)技术,陈文光甚至还从中发掘出了一些研究课题,打算把这项本来用于提升单线程处理性能的技术更好地用于并行计算。

"如果并行计算扩展性不好,其中有一个大问题就是负载不均衡。比如说一个问题分成10个任务,有1个任务要执行10分钟,另9个任务我执行9分钟就够了。这时整个应用还是用10分钟来完成的。负载不均衡造成系统就因为一两个进程未完成而处于等待状态,这样显然效率很低。"陈文光分析认为,过去动态电压和频率调节技术主要用于节能,现在有了睿频加速,刚好能反过来,能让不同的核处于不同的性能输出状态下,这就为解决负载均衡提供了新的办法。

"通过程序分析,其实我们知道一个MPI程序中的哪个进程运行时间很长,这样就可以通过调频把它放在加速后运行快的核上,其余任务放在其他核上。这样,就通过这项技术把原来的同构系统变成了异构系统,而且可以自己调节。把负载均衡和异构性联系起来是我们正在做的工作,这是一个很有趣也很重要的课题。"陈文光表示,这项工作还在进行当中,方向是对的,只是目前还没有成果可以过早披露。"这提供了一种用现有技术解决既有难题的新方法、新路径。"