基準测试程式


基準测试程式

文章插图
基準测试程式【基準测试程式】基準测试程式(Benchmark)用来测量机器的硬体最高实际运行性能,以及软体最佳化的性能提升效果,可分为微基準测试程式(Microbenchmark)和宏基準测试程式(Macrobenchmark) 。
基本介绍中文名:基準测试程式
外文名:benchmark
定义:测量机器的硬体最高实际运行性能
分类:微基準测试程式和宏基準测试程式
套用:测量机器
学科:计算机
概述基準测试程式(Benchmark)用来测量机器的硬体最高实际运行性能,以及软体最佳化的性能提升效果,可分为微基準测试程式(Microbenchmark)和宏基準测试程式(Macrobenchmark) 。微基準测试程式用来测量一个计算机系统的某一特定方面,如CPU定点/浮点性能、存储器速度、I/O速度、网路速度或系统软体性能(如同步性能);宏基準测试程式用来测量一个计算机系统的总体性能或最佳化方法的通用性,可选取不同套用,如Web服务程式、数据处理程式以及科学与工程计算程式 。为了达到上述目标,基準测试程式需要满足如下条件:首先 。基準测试程式包含最常见的计算、通信和访存模式,能够为实际的应用程式预测不同高性能计算系统性能排名;其次,能指导高性能计算系统和套用的改进,亦即在基準测试程式上有效的最佳化方法能移植到实际套用中 。微基準测试程式STREAM:由John McCalpin设计的测量持续存储器频宽和计算速度的测试程式,包含Copy、Scalar、Add和Traid四个函式,分别用来执行向量拷贝、向量更新拷贝、向量加法和向量更新 。STREAM2包含Fill、Copy、Daxpy和Sum四个函式,分别用来执行向量赋值、向量拷贝、向量更新和向量求和 。STREAM的指标为实测存储器频宽(MB/s) 。LMBENCH:用来测量OS开销和处理器、快取、存储器、网路以及磁碟之间的数据传输能力 。宏基準测试程式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)N2—2N2 。因此,只要给出问题规模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)包含一组模式识别和数据挖掘套用领域中的多执行绪程式,覆盖了不同的工作集、局部性、数据共享、同步以及频宽需求特徵,用来测试多核性能 。