HPC选型测试从应用出发

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值,那么就有可能会选择处理器时钟频率非常高,但系统内部I/O 性能却不一定突出的服务器来构建其HPC系统。这种选择确实可能获得不错的Linpack测试成绩,但如果用户采用该HPC系统运行石油油藏模拟、气象分析等需要大内存的HPC应用,则可能会非常失望。

立足应用是根本

据陈文光介绍,863高性能计算机评测中心有两种HPC评测指导思想,分别是"全过程评测法"和"分层建模测试法"。其中,"全过程评测法"指的是受用户或厂商委托,在HPC的设计阶段就介入,如同工程实施监理一样,监控HPC从设计到生产到成品测试的各个环节。而"分层建模测试法" 是为用户做HPC系统的验收测试,从CPU、内存到网络等,一层一层地进行测试排查。然而,无论哪种测试方法,陈文光表示,整理用户应用都至关重要。

例如,在"分层建模测试法"中,首先是利用一些基准测试程序(Benchmark),来逐步测试 CPU、内存和网络。这些基准测试程序有该评测中心自行研发的,也Linpack、STREAM(用于测试内存带宽)等国际通用的基准测试程序。

第二步是对HPC应用进行整理和分类,然后选择出用户最重要最典型的HPC应用。接下来还要针对这些典型应用来定制测试程序,因为用户的HPC应用不能直接作为测试程序。而对于这些定制的测试程序,陈文光表示,首先必须把它简化到一个节点上能执行,其次是执行时间不能太长,也不能太短,基本在十分钟到一小时之间,这样的话不会受系统一些很小波动的影响,比较灵敏。

第三步则要进行"应用性能分数的整合"。因为我们测试的是多个程序,各个程序在不同的HPC系统上的测试成绩可能均不一样,那么如何确认哪台HPC系统性能最优呢?陈文光表示,他们也是按照国际上比较标准的做法,即SPEC CPU的做法。实际上是取一个标准系统做一个单位,将单个测试程序的实际测试时间和标准时间除一下,得到一个相对性能,然后把每个程序的相对性能综合起来做一个几何平均值,该几何平均值就是这个HPC系统的性能得分。也就是说,如果标准系统如果是"1"话,那么所测试的HPC系统性能得分可能是"1.5" 或"0.5"。

例如,清华大学最近要购买一台百万亿次级别的计算机,陈文光说他们也是基于"分层建模测试法",先抽取了五个典型应用程序,在一个计算机节点上做测试,并把规模控制在单个程序运行1000秒左右。清华大学去年首先在基于英特尔至强5550处理器的HPC系统上做了测试,最新又在英特尔至强7500处理器系统上进行了补充测试。测试结果显示,至强7500上有三个程序可以达到2.5倍的加速比。至强5500 系列是八线程的,7500系列是32线程的,线程数增加了四倍,计算性能增加2.5倍,这在高性能计算里是比较令人满意的性能了。因此,陈文光表示,在这个百万亿次的HPC系统中,他们可能会用至强处理器5600系列做"瘦节点",而至强7500则用来做"胖节点"。

总之,对于HPC的心脏–CPU来说,陈文光给出的建议就是尽可能地选用高端的CPU。这主要是并行计算的特点所致,因为即使整个程序是并行的,但是还是一部分串行的,因此希望把串行的部分提升得越快越好。而高端的、单线程处理快的CPU会带来两个好处,一个是执行串行部分快,另外可以让整个的并行度降低,减少并行带来的开销。

陈文光还建议应该选择象英特尔至强7500这种具有高RAS特性的CPU。因为HPC系统通常具有成百上千个节点,假定一台机器的平均无故障时间是三年,一千台机器的话意味着基本上每天都会有一台机器会坏掉。因此,单个系统本身的平均无故障时间越长越可靠,用户在上面做容错的代价才不会很小。

此外,陈文光表示,他个人对英特尔睿频加速技术(Turbo Boost)非常感兴趣,他认为睿频加速技术有助于解决并行计算中负载不均衡的情况。所谓并行计算中负载不均衡指的是,某个计算任务被分成十个子任务,如果执行其中九个子任务只要九分钟,但有一个子任务耗时十分钟,那么整个应用的耗时是十分钟,这意味着许多机器就因为一两个进程而等了很久,这是一个效率很低的事情。陈文光认为可以利用睿频加速技术,将多核CPU的某个核调高频率,然后在该核上运行耗时较长的应用,从而解决复杂不均衡的问题,这也是陈文光正在研究的课题之一。

【链接】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测试集中。