“尺”有所短:Linkpack的缺陷与不足
张建中
2012年07月16日
Linpack测试 现在,Linpack在国际上已经成为最流行的用于测试高性能计算机系统浮点性能的benchmark。通过利用高性能计算机,用高斯消元法求解N阶稠密线性代数方程组的测试,评价高性能计算机的浮点性能。
Linpack测试包括三类,Linpack100、Linpack1000和HPL。Linpack100求解规模为100阶的稠密线性代数方程组,它只允许采用编译优化选项进行优化,不得更改代码,甚至代码中的注释也不得修改。Linpack1000要求求解规模为1000阶的线性代数方程组,达到指定的精度要求,可以在不改变计算量的前提下在算法和代码上做优化。HPL即High Performance Linpack,也叫高度并行计算基准测试,它对数组大小N没有限制,求解问题的规模可以改变,除基本算法(计算量)不可改变外,可以采用其它任何优化方法。前两种测试运行规模较小,已不适合现代计算机的发展,因此现在使用较多的测试标准为HPL,而且阶次N也是linpack测试必须指明的参数。
HPL是针对现代并行计算机提出的测试方式。用户在不修改任意测试程序的基础上,可以调节问题规模大小N(矩阵大小)、使用到的CPU数目、使用各种优化方法等来执行该测试程序,以获取最佳的性能。HPL采用高斯消元法求解线性方程组。当求解问题规模为N时,浮点运算次数为(2 * N3/3-2*N2)。因此,只要给出问题规模N,测得系统计算时间T,峰值 = 计算量(2 * N3/3-2*N2)/计算时间T,测试结果以浮点运算每秒(Flops)给出。
Linpack的缺陷和不足 越来越多的业内人士对Linpack标准提出了质疑,一种单一的标准能否有效地衡量出超级计算机的真实性能。在新奥尔良召开的“2010年超级计算机大会”上,有高性能计算厂商的高官讽刺该排名说,如果将10万部Android智能手机连在一起,也能排在首位。
Linpack确实存在一些问题,有不少的缺陷和不足,但也有一些真实的东西在内。这只是一个排名,有些时候还要具体问题具体分析。
Linpack基本上就是用来解决线性方程的公式转换语言集,因此比较适合用来衡量超级计算机的计算性能,但并不适合衡量变得越来越重要的超级计算机的记忆性能。另外,Linpack标准也不衡量超级计算机的可靠性。令人欣慰的是,该排名的评选方已经在完善其评判标准。
现在已经有人开发出新标准HPC Challenge,根据多个不同标准来衡量超级计算机的性能。如在“2010年超级计算机大会”上,有人推出一种超级计算机排名,被称为“Graph500”,该排名通过一系列标准来衡量超级计算机性能,利用图论去分析超级计算机在模拟生物、安全、社会以及类似复杂问题时的吞吐量进行排名,而不是像Linpack那样比较传统的数值运算能力。至于“Graph500”将来能否取代当前的“TOP500超级500强”排名还是个未知数。再如,www.green500.org网站2011年11月发布了最新的“绿色500(Green500)”超级计算机排名。“绿色500”不同于TOP500,在关注超级计算机计算性能的同时,更加关注超级计算机的能耗问题,它通过测量与能耗相关的实测性能来对超级计算机的能效进行评定,用Mflops/W(百万次浮点操作/瓦)作为指标来表征超级计算机的绿色程度。
对一个复杂事物件进行排名,选取什么标准和什么方法,对多种因素给出一个排名结果,都一定存在缺陷和不足。衡量一台超级计算机的实际性能,需要有一把客观、公认、公开、公平、公正的标准“尺子”。国际高性能计算领域专家联合开发的Linpack基准测试程序,就是现阶段的这样一把“尺子”。尽管Linpack基准测试程序有各种各样的不足,你可以指出它的很多缺陷,但重要的是要给出一种更好的、大家都能接受的客观、公正、公平的标准,这决不是一件容易的事,这就像数学上由多维空间向一维空间投影一样,任何一种方法和标准,都一定存在不足之处。