目前高性能计算基准测试程序分类

基准测试程序 


基准测试程序 (Benchmark) 用于测试和预测计算机系统的性能,揭示不同结构机器的长处和短处,为用户决定购买或使用那种机器最合适他们的应用要求提供决策。基准测试程序试图提供一个客观,公正的评价机器性能的标准。但真正做到完全公正并非易事,要涉及到因素很多,包括硬件,体系结构,编译优化,编程环境,测试条件,解题算法等。一组标准的测试程序要提供一组控制测试条件和步骤的规范说明,包括测试平台环境,输入数据,输出结果和性能指标等。

不同的基准测试程序,侧重目的不同:有的测试 CPU 性能,有的测试文件服务器性能,有的测试输入、输出界面,有的测试网络通讯速度等。根据不同用途,测试程序可有专用和通用之分。目前国际上流行的通用测试程序可分为几类:

1. 综合型(如 Dhrystone,Whetstone 等);

2. 核心型(如 Livemore Fortran Kernals,NASA 之 NAS 等);

3. 数学库(如 Linpack,FFT 等);

4. 应用型(如 SPEC , Perfect,Splash 等);

5. 并行型(如 NAS 之 NPB,PARKBENCK 等)。

这里介绍的一些常见的测试程序,它们都可以在 internet 上公开查到 :http://www.netlib.org/liblist.html 。在这里你可查到 LINPACK,LAPACK,BLAS,BLACS,Livemore,Loops,Dhrystone,Whetstone,NAS,SPEC,Sim 等包含源代码的基准测试程序。

基准测试程序

Whetstone 它是为比较不同的计算机的浮点性能而设计的综合型基准测试程序,最早用 Algol-60 写成,后用 Fortran 改写。这是从英国国立物理实验室 1970 年是常用的数值计算程序中取出的最频繁使用的有代表性的程序段。这些程序段语句转换到称为 Whetstone 虚拟计算机上的指令,因而得名 Whetstone 基准测试程序。此基准测试程序包括整数运算,又包括浮点运算,涉及到数组下标索引,子程序调用,参数传递,条件转移和三角、超越函数等,使用系统完成的 Kwhetstone/s 数度量。
测试程序可以访问 netlib/benchmark/whetstone


Dhrystone 它主要为测试整数与逻辑运算性能二设计的综合型基准测试程序,用 Ada,C 和 Pascal 完成,它是 CPU 密集 (CPU-intensive )型测试程序,由很多整型语句和逻辑语句的小循环组成。它使用系统完成的 Kdhrystone/s 数度量。
测试程序可访问 netlib/benchmark/dhrystone

人们对 Whetstone 和 Dhrystone 这两者综合型基准测试程序的批评是,它们不能预测用户程序性能,这些基准测试程序的主要缺点是对编译程序比较敏感。


SPEC 是 Standard Performance Evaluation cooperation 的首字母缩写,它是作为 NCGA(National computer graphics association )的一个小组 20 世纪 80 年代创立,这个小组的创始者来源于 HP,DEC,MIPS , SUN, 他们拥有一组基准测试程序以评测新机器的性能。第一组基准测试程序叫 SPEC89 ,包含 10 个程序; SPEC92 扩从到 20 个程序, 6 个整数程序,和 14 个浮点程序分别称为 SPECint92,SPECfp92 。随后 SPEC 又发布了一些新的基准测试程序(如 SPEC95,SPEChpc96,SPECweb96, SPEC2000 等)。 SPEC 原主要是测试 CPU 性能的,现在强调开发能反映真实应用(如实际负载等)的基准测试程序,并已推广至客户 / 服务器计算,商业应用, I/O 子系统等。
SPEC 基准测试程序使用的单位是所测试机器执行性能与 XAX11/780 执行性能之比值。

数学库测试程序


Linpack 自 20 世纪 70 年代中期以来,国际上曾经开发过一批基于 Fortran 语言的求解线性代数方程组的子程序,于 1979 年正式发布了 LinPACK 包。因为线性代数方程组在各个领域中应用甚广,所以该软件包就很自然地称为测试各种机器性能的测试程序。 LinPACK 测试的基准是用全精度的 64 位字长的子程序求解 100 阶线性方程组的速度,测试的结果以 Mflops (每秒百万次浮点运算)作为单位给出。 LinPACK 的测试报告由 J.Dongarra 经常更新发布(通常每月发布一次)。 LinPACK 是使用 BLASI(Basic Algebra Subprogramsl) 的第一个线性代数软件包。 BLAS1 执行通常意义下的标量(如标量乘向量,向量加,向量内积等),主要为向量计算机而设计的,它用 Fortran 77 写成,但有些计算机商也提供汇编语言的 BLAS1 版本。
LAPACK 尽管 LinPACK 作为测试程序现在仍很有生命力,但作为实际求解线性代数问题的软件包已经落伍了。所以在 1992 年推出了代替 LinPACK 以及 EisPACK (特征值软件包)的 LAPACK ,它使用了数值线性代数中最新,最精确的算法,同时采用了大型矩阵分解成小矩阵的方法从而可有效地使用存储器。 LAPACK 是建立在 BLAS1 ,BLAS2,BLAS3 的基础上的,其中 BLAS2 执行矩阵-向量运算, BLAS3 执行矩阵 - 矩阵运算。
ScaLAPACK 是 LAPACK 的增强版,主要为可扩放的,分布存储的并行计算机而设计的。 ScaLAPACK 支持稠密和带状矩阵上各类操作,诸如乘法,转置和分解等。在国际上, ScaLAPACK 例程可以加入多个并行算法,并且可根据数据分布,问题规模和机器大小选择这些算法,然而用户却不必关心这些细节。

并行测试程序


NAS parallel Benchmark(NPB) 它是 1991 年美国 NAS(Numerical Aerodynamic Simulation) 项目所开发的并行测试程序,其目的是为了比较各种并行机的性能,有时也称为 NPB(NAS Parallel Benchmark) 并行测试程序,系由 8 个程序组成,测试范围从整数排序到复杂的数值计算。测试结果以单位处理机的 CrayY-MP/1 为单位 (Class A) 或 Cray C90/1 为单位 (Class B) 作比较。
NPB 由 5 个核心程序组成 :

1.EP(Embarrassingly parallel) 用于计算 Gauss 伪随机数,因为它几乎不要求处理器之间相互通讯,所以很适合于并行计算,而所测得的结果往往可以作为一个特定并行系统浮点计算性能可能达到的上限;

2.MG(MultiGrid) :用 4 个 V 循环多重网格算法求解三维波松方程的离散周期近似解;

3.CG (Conjugate Gradient) :用于求解大型稀疏对称正定矩阵的最小特征值的近似值,它表征了非结构风格计算和非规整远程通信计算类问题:

4.FT(Fast Fourier Transformation): 用于求解基于 FFT 谱分析法的三维偏微分方程,它也要求远程通信;

5.IS(Integer sort): 用于基于桶排序的二维大整数排序,他要求大量的全交换通信。

另外还有计算流体力学中 3 个模拟程序:

1.LU(lower upper triangular): 用于基于对称超松弛法求解块稀疏方程组;

2.SP(scalar penta-diagonal): 用于求解 5 对角线方程组;

3.BT(Block Tri-Diagonal): 用于求解 3 对角块方程组。
有关 NAS 并行基准测试程序的地址为 http://www.nas.nasa.gov/NAS/NPB/software/npbsoftware.html

PARKBENCH (PARallel Kernels and BENCHmarks) 是在 1992 年超级计算会议上确定的项目。与会者认为并行测试的重点应放在可扩放,分布存储,消息传递的体系结构上。主要目标是确定并行机用户和厂商双方都能接收的内容丰富的一批并行测试程序及标准,并把结果公布于网络上,以减少不必要的重复工作。


现在的基准程序系为分布的多计算机编写,使用 Fortan 77 加上 PVM 或 MPI ;为共享存储结构的 Fortan90 和 HPF 版本的基准程序正在开发中。

目前, PARKBENCH 包括 4 类:

1. 底层基准程序:测试一些基本结构参数,诸如算数运算速度,高速缓存和存储器速度,通讯启动时间和带宽以及同步开销等;

2. 核心基准程序:涉及到广泛的经常使用的科学计算子程序,诸如矩阵运算(稠密矩阵乘法,转置 ,LU 分解 ,QR 分解,矩阵三对角等) ,FFT 运算,求解 PDE 和 NPB 核基准程序等;

3. 密集应用基准程序:目前仅包括谱变换,浅水( shallow-water) 模拟和 3 个 NPB 模拟应用程序;

4.HPF 编译基准序;测试 HPF 编译器性能,主要集中在显式并行 HPF 结构的并行实现上。
PARKBENCH 是个正在研究的课题,测试程序的内容尚未完全定型。目前所包含的核心测试程序主要来自 PB 。

出自:http://blog.csdn.net/flyingstarwb/archive/2009/05/30/4225913.aspx

你可能感兴趣的:(服务器管理)