Linpack:旧有评价体系的注定死亡
DoSERV原创 崔昊 发表于:09年03月29日 17:18 [原创] 服务器在线
DoSERV服务器在线 3月29日原创报道:大约在35年前,同样也是一个四月,美国Argonne国家实验室应用数学所主任Jim Pool提出,应该建立一套专门解决线性系统系统问题的数学软件及其模型——直到现在,在一系列关于Linpack的纪年表中,Jim Pool的名字仍然高居榜首。随后,他在当年六月的一次学术会议上正式提出了自己对线性系统软件包(Linear system package),也就是Linpack的想法。在此之后,Linpack这一想法正式被美国国家科学基金会所采纳,Cleve Moler及其同时在没改过国家科学基金会的资助下,开发了Linpack和EISPACK的Fortan子程序库,这两个程序库作为解决线性方程和特征值问题的“法宝”代表了上世纪七十年代矩阵计算软件的最高水平。
国际上一般就是把用Linpack基准测试出的最高性能指标作为衡量机器性能的标准。之所以选择Linpack,主要是因为它使用广泛而且它的指标几乎可以在所有参加测试的系统上得到。虽然这些指标并不反映给定系统的全部系统性能,但可以作为对系统峰值性能的一个修正。
至目前为止, LINPACK 还是广泛地应用于解各种数学和工程问题。 也由于它高效率的运算, 使得其它几种数学软件例如 IMSL、 MATLAB 纷纷加以引用来处理矩阵问题, 所以足见其在科学计算上有举足轻重的地位。
但是,在高性能计算界已经有人对其提出了不同的看法,而这些质疑声音正在变得越来越强大,并正在动摇Linpack在高性能计算界的影响力。
Linpack的原理与特色
Linpack的出现基本上可以称之为力学(Mechanics)分析软件的鼻祖,并建立了数学软件的比较机制,与此同时,提供软件链接库, 允许使用者加以修正以便处理特殊问题,兼顾了对各计算机系统的通用性, 并提供高效率的运算——基本上来说,Linkpack代表了线性计算评价标准的最高水平。
事实上,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/3 * N^3-2*N^2)。因此,只要给出问题规模N,测得系统计算时间T,峰值=计算量(2/3 * N^3-2*N^2)/计算时间T,测试结果以浮点运算每秒(Flops)给出。