HPC选型测试只有从应用出发,以应用为先,方可有效避免HPC系统出现配置失衡或利用率不高等问题。
近年来,随着经济的高速发展,高性能计算(HPC)已经从最初的科研计算迈向更为广阔的商业计算和信息化服务领域,例如石油物探、医学生物、教育科研、金融服务等,从而促使我国的HPC产业在研发、生产和销售方面都呈现出蓬勃发展的态势。
对于企业用户而言,选购HPC系统产品,远比购买一台PC,或是一台普通服务器要困难得多。因此,如何对所欲购买的HPC系统进行科学的测试与评估,以便做出正确的购买决策,是企业用户在使用HPC时所关心的第一个大问题。
Linpack"仅供参考"
提起HPC,大家可能首先想到的就是Linpack值,因为全球的HPC TOP500排行榜和中国TOP100排行榜都是以它为标准对HPC系统进行排名,企业用户在选购HPC时也非常关心Linpack值。对此,863高性能计算机评测中心副主任,同时也是清华大学计算机系副主任的陈文光教授说道:"Linpack这样的指标是有意义的,如果Linpack都测不好,你跑其他的应用肯定是跑不好的。但是从用户的角度来讲,如果我们仅仅依靠Linpack值来决定购买一台计算机的话,可能会有很多误导的情况,有失偏颇。"
这是因为,Linpack作为HPC基准测试程序(Benchmark)之一,是通过求解线性方程组的方式,给出足够的压力来考察HPC系统的浮点运算性能和扩展性,并对系统进行拷机和查错,它是无法真正反映或代表HPC系统在运行真实应用时的性能的。
例如,如果用户过于偏爱Linpack值,那么就有可能会选择处理器时钟频率非常高,但系统内部访存性能却不一定突出的服务器来构建其HPC系统。这种选择确实可能获得不错的Linpack测试成绩,但如果用户采用该HPC系统运行石油油藏模拟、气象分析等需要频繁内存访问的HPC应用,其实用效果则可能会令人失望。
立足实际应用是根本
据陈文光教授介绍,根据对高性能计算系统多年的测试经验,863高性能计算机评测中心提出了一套面向应用的高性能计算机评测方法,目的是为用户选择系统的时候提供更有针对性的测试指标。这种面向应用的高性能计算机评测方法可以分为以下几个步骤:
第一步是对用户的HPC应用进行整理和分类,然后选择出用户最重要最典型的HPC应用。
第二步需要将这些典型应用来改造为测试程序,大部分用户的HPC应用不能直接作为测试程序,必须对输入参数等进行一定限定,使得程序可以在一个待测系统的节点上执行,而且执行时间不能太长,也不能太短,基本在十分钟到一小时之间,这样的话测试结果不会受到系统的一些波动的影响。
第三步则要进行"应用性能分数的整合"。因为我们测试的是多个程序,各个程序在不同的HPC系统上的测试成绩可能均不一样,那么如何确认哪台HPC系统性能最优呢?陈文光表示,他们也是按照国际上比较标准的做法,即SPEC CPU的做法。实际上是取一个标准系统做一个单位,将单个测试程序的实际测试时间和标准时间除一下,得到一个相对性能,然后把每个程序的相对性能综合起来做一个几何平均值,该几何平均值就是这个HPC系统的性能得分。也就是说,如果标准系统如果是"1"话,那么所测试的HPC系统性能得分可能是"1.5"或"0.5"。
例如,清华大学最近要购买一台百万亿次级别的计算机,陈文光说他们也是基于"面向应用的高性能计算机评测方法",先抽取了五个典型应用程序,在一个计算机节点上做测试,并把规模控制在单个程序运行1000秒左右。清华大学去年首先在基于英特尔至强5550处理器的HPC系统上做了测试,最近又在英特尔至强7500处理器系统上进行了补充测试。测试结果显示,至强7500平台上有三个程序可以达到相对于5550处理器平台2.5倍的加速比。至强5500系列是8线程的,7500系列则是32线程的,线程数增加了4倍,计算性能增加2.5倍,这在高性能计算里是比较令人满意的性能了。因此,陈文光表示,在这个百万亿次的HPC系统中,他们可能会用基于至强处理器5600系列的服务器做"瘦节点",而基于至强7500的服务器则用来做"胖节点"。
总之,对于HPC的心脏–CPU来说,陈文光给出的建议就是在预算许可的范围内,尽可能地选用高端的CPU。这主要是并行计算的特点所致,因为即使整个程序是并行的,但是还是有一部分串行的,因此希望把串行的部分提升得越快越好。而高端的、单线程处理快的CPU会带来两个好处,一个是执行串行部分快,另外可以让整个的并行度降低,减少并行带来的开销。
陈文光还建议,在构建大规模HPC系统时,应注意系统的可用性。因为HPC系统通常具有成百上千个节点,假定一台机器的平均无故障时间是三年,有一千台机器的话意味着基本上每天都会有一台机器会坏掉。因此,单个系统本身的平均无故障时间越长越可靠,用户在上面做容错的代价才不会过高。而英特尔至强7500具有较好的RAS特性,是一种较好的选择。
值得一提的是,对于至强5600和7500集成的睿频加速(Turbo Boost)技术,陈文光教授认为它有可能为解决并行计算中负载不均衡的问题提供了一个新方法,新路径。
"所谓负载不均衡的问题,就比如说有一个问题分成10个任务,其中有1个任务要执行10分钟,另9个任务只需执行9分钟,这时整个应用还是用10分钟来完成的。因为一两个进程未完成就让系统处于等待状态,这样显然效率很低。"针对这种状况,陈文光教授表示:"通过程序分析,我们其实可以知道一个MPI程序中哪个进程的运行时间较长,这样就可以通过睿频加速技术的调频功能把它放在加速后运行较快的核上,其余任务放在其他核上。这样我们就通过技术手段把原来的同构系统变成了异构系统,而且可自己调节,把负载均衡和异构性联系起来是我们正在做的工作,也是一个很有趣的课题,只是目前还没有成果可以人过早披露。"
背景资料:863高性能计算机评测中心开发的基准测试程序和系统测试工具
- PBB:一款面向生物信息学领域的基准测试程序集,共包括七个OpenMP并行的生物信息学测试程序,分别是BLAST、PLSA、MUSCLE、Rosetta、Semphy、ModuleNet、SNP。
- SIM-MPI:一款模拟并行程序通信行为的trace-driven模拟器。
- MPI_link_check:该测试程序用来检查大规模集群系统中,网络链接通信性能存在故障的节点。
- HPCC_1.2.0_prime:用于检查内存正确性测试程序,已集成到HPCC-1.2.0测试集中。