基准测试程序(Benchmark)用来测量机器的硬件最高实际运行性能,以及软件优化的性能提升效果,可分为微基准测试程序(Microbenchmark)和宏基准测试程序(Macrobenchmark)。
概述基准测试程序(Benchmark)用来测量机器的硬件最高实际运行性能,以及软件优化的性能提升效果,可分为微基准测试程序(Microbenchmark)和宏基准测试程序(Macrobenchmark)。微基准测试程序用来测量一个计算机系统的某一特定方面,如CPU定点/浮点性能、存储器速度、I/O速度、网络速度或系统软件性能(如同步性能);宏基准测试程序用来测量一个计算机系统的总体性能或优化方法的通用性,可选取不同应用,如Web服务程序、数据处理程序以及科学与工程计算程序。
为了达到上述目标,基准测试程序需要满足如下条件:首先。基准测试程序包含最常见的计算、通信和访存模式,能够为实际的应用程序预测不同高性能计算系统性能排名;其次,能指导高性能计算系统和应用的改进,亦即在基准测试程序上有效的优化方法能移植到实际应用中。1
微基准测试程序STREAM:由John McCalpin设计的测量持续存储器带宽和计算速度的测试程序,包含Copy、Scalar、Add和Traid四个函数,分别用来执行向量拷贝、向量更新拷贝、向量加法和向量更新。STREAM2包含Fill、Copy、Daxpy和Sum四个函数,分别用来执行向量赋值、向量拷贝、向量更新和向量求和。STREAM的指标为实测存储器带宽(MB/s)。
LMBENCH:用来测量OS开销和处理器、缓存、存储器、网络以及磁盘之间的数据传输能力。1
宏基准测试程序Linpack:20世纪70年代中期开发了IAnpack软件用于解线性方程,因为Linpack使用广泛且其指标几乎可以在所有参加测试的系统上得到,国际上一般用Linpack测试出的最高性能指标作为衡量机器性能的标准。每年两次更新并发布的世界超级计算机500强排行榜(TOPS00)即按Linpack测试值排序。
Linpack测试包括三类:Linpack100、I。inpack1000和HPL。Linpack100求解规模为100阶的稠密线性代数方程组,只允许采用编泽优化选项进行优化,不得更改代码,甚至代码中的注释也不得修改。Linpack1000要求求解规模为1000阶的线性代数方程组,达到指定的精度要求,可以在不改变计算量的前提下做算法和代码上的优化。HPL(HighPerformance Linpack)对数组大小N没有限制,求解问题的规模可以改变,除基本算法(计算量)不可改变外,可以采用其他任何优化方法。前两种测试运行规模较小,已不适合现代计算机的测试,因此现在所称的Linpack即指HPL。HPL采用高斯消元法求解线性方程组,当求解问题规模为N时,浮点运算次数为(2/3)N²—2N²。因此,只要给出问题规模N,测得系统计算时间丁,峰值即为计算量与计算时间之比,测试结果以每秒百万浮点运算次数给出。
HPCG(High Performance Conjugate Gradient):随着高性能应用的不断发展,其性能与HPL所测的结果(主要是系统利用率)相差较大,这主要是由于HPL包含大量稠密矩阵计算,具有良好的数据局部性,容易开发并行性和局部性,但并不能代表其他大量实际应用中常见的不易扩展和开发局部性的稀疏计算和访存模式。HPCG是求解稀疏矩阵方程组的一种迭代算法,使用局部对称Gauss—Seidel预条件子的预处理共轭梯度法,主要数据为对称正定稀疏矩阵,每一个计算循环需要调用稀疏矩阵向量乘、预条件子、向量更新和向量内积操作。覆盖了常用的计算和通信模式。HPCG类似HPL,允许使用多种优化方法调优,例如新的稀疏矩阵格式等。
Graph500类似HPCG,是另一种对Linpack测试程序的补充,包含图论中的典型算法,如广度优先搜索、最短路径和最大独立集等。Graph500用来测试超算系统的非规则数据处理能力。与HPL和HPCG不同,Graph500测试程序用每秒遍历边数(Traversed Edges Per Second,TEPS)来衡量计算能力,并类似TOP500,每年发布两次超算系统的Graph500排行榜。
NPB(NAS Parallel Benchmark):包含了主要的几种科学计算程序,即5个计算流体力学(CFD)中的核心函数:EP(Embarrassingly Parallel)——具有完全并行性的一种蒙特卡洛方法,MG(MultiGrid)——多重网格方法,CG(Conjugate Gradient)——共轭梯度法,FT(FFT)——三维快速傅里叶算法,IS——整数排序方法,以及三个模拟CFD程序:LU利用SSOR方法求解稀疏方程组,SP利用对角方程组求解,BT利用块三对角矩阵求解。与Linpack一样,NPB允许优化算法。
SPEC、SPLASH和PARSEC包含一组实际应用的基准程序以反映实际工作负载。
SPEC(Standard Performance Evaluation Corporation)的早期版本SPEC95包含8个C语言编写的整数程序,包括排序和编译等程序,以及10个用Fortran语言编写的科学计算典型问题的浮点程序,其最终指标为这些程序运行时间与标准参考时问之比的几何平均值。PARSEC(Princeton Application Repository for Shared—Memory Computer)包含一组模式识别和数据挖掘应用领域中的多线程程序,覆盖了不同的工作集、局部性、数据共享、同步以及带宽需求特征,用来测试多核性能。1
本词条内容贡献者为:
李岳阳 - 副教授 - 江南大学