linpack

生活百科 2023-01-25 18:02生活百科www.aizhengw.cn

linpack

LINPACK是线性系统软体包(Linear system package) 的缩写, 主要开始于 1974 年 4 月, 美国 Argonne 国家实验室套用数学所主任 Jim Pool, 在一系列非正式的讨论会中评估,建立一套专门解线性系统问题之数学软体的可能性。 后来便提出了 LINPACK 计画案送到国家科学基金会 (National Science Foundation ) 审核, 经国家科学基金会同意并提供经费。

基本介绍

  • 中文名线性系统软体包
  • 外文名Linear system package
  • 缩写linpack
  • 开始于1974年4月

引言

计算机硬体的不断的升级带来了系统处理性能持续的提高,如何的对平台的性能作出正确的判断就是性能测试的主要目标,业界也有多种测试基準,有的是基于实际的套用种类如TPC-C,有的是测试系统的某一部分的性能,如测试硬碟吞吐能力的IOmeter,测试记忆体频宽的stream。

始用途

LINPACK主要的特色是
v 率先开创了力学 (Mechanics) 分析软体的製作。
v 建立了将来数学软体比较的标準。
v 提供软体程式库, 允许使用者加以修正以便处理特殊问题, (程式名称必须改写, 并应注明修改之处, 以尊重原作者, 并避免他人误用。)
v 兼顾了对各计算机系统的通用性, 并提供高效率的运算。
至目前为止, LINPACK 还是广泛地套用于解各种数学和工程问题。 也由于它高效率的运算, 使得其它几种数学软体例如IMSL、 MATLAB 纷纷加以引用来处理矩阵问题, 所以足见其在科学计算上有举足轻重的地位。

性能测试

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-2N^2)。,只要给出问题规模N,测得系统计算时间T,峰值=计算量(2/3 N^3-2N^2)/计算时间T,测试结果以浮点运算每秒(Flops)给出。
计算峰值
随着产品硬体的不断的升级,整个的计算能力也以数量级的速度提升。衡量计算机性能的一个重要指标就是计算峰值,例如浮点计算峰值,它是指计算机每秒钟能完成的浮点计算最大次数。包括理论浮点峰值和实测浮点峰值
理论浮点峰值是该计算机理论上能达到的每秒钟能完成浮点计算最大次数,它主要是由CPU的主频决定的,
理论浮点峰值=CPU主频×CPU每个时钟周期执行浮点运算的次数×系统中CPU核心数目。
实测浮点峰值是指Linpack测试值,也就是说在这台机器上运行Linpack测试程式,通过各种调优方法得到的最优的测试结果。实际上在实际程式运行过程中,几乎不可能达到实测浮点峰值,更不用说达到理论浮点峰值了。这两个值只是作为衡量机器性能的一个指标,用来表明机器处理能力的一个标尺和潜能的度量。

测试过程

硬体準备

準备硬体平台的配置
升级到最新的BIOS、BMC等版本
调整对性能有影响的参数设定

软体準备

作业系统的準备。由于OS自身也会占用系统资源,一般会使用linux作为linpack测试的OS平台,採用最新的核心版本的linux,这样可以充分的发挥出硬体的新的特性,发挥出平台的计算性能;在系统启动后,将一些没有必要的系统守护进程去掉,可以运行ntsysv命令,关闭除了irqbalance 和 messagebus.之外的系统服务进程,也可以节省系统的资源;并且将作业系统启动到第3级,不要进入图形方式。3、linpack的参数设定
运算阶数N的选择。
由于在计算的过程中,会分配、占有一定的记忆体空间,依据记忆体容量合适的设定N的数值,会得到较为準确的计算性能数据。如果N设定较小,记忆体不能充分利用,则处理能力不能发挥;如果N设定较大,记忆体空间不能满足需求,则需要经常的执行硬碟读写,从而会有处理器的等待时间,计算时间会延长,测试得到计算性能结果也会受到影响。根据记忆体容量大小,对应的N的数值有如下的参考关係。
例如在记忆体容量为4G时,设定N为22000较为合理,这样记忆体分配较为合理,在22000阶时,可能得到最大计算性能值。
配置档案的编写。
下面是linpack运行的参数配置档案的例子,其中包括一个参数。
v 计算的点数,原则上是计算的点数越多,则会遍历多种计算的性能情况,更能找到最好的性能点,点数越多则运算时间越长。
v 点数的分布。即设定几个不同的阶数值,一般是在N附近的时候的阶数分布较为密,以便找到最佳性能数据。
v 每个计算点的计算次数,为了减少测试误差,增加每点的计算次数取其平均值,得到比较可信的性能数据。
v 设定记忆体的对齐尺寸,记忆体分配的时候的记忆体对其方式,可以提高记忆体的读取的效率,提高性能测试结果,设定过大会产生一定的记忆体空间的浪费,一般为4KB或8KB

运行

Intel提供了基于IA架构平台最佳化后的可执行版本3.0.1,不需要下载原始码再通过编译器,编译最佳化,使用起来比较的简单和方便。现在可以执行的平台有
xlinpack_itanium 在64位安腾2平台上的可执行程式
xlinpack_xeon32 在32位至强DP和至强MP平台上可执行程式,可支持有或没有SSE3指令集的情况。
xlinpack_xeon64 可运行在64位扩展技术的至强平台上
xlinpack_mc64 运行在Intel Core 2 Duo和Woodcrest新一代处理器上的程式。.
可以编写一个shell的脚本档案,这样可以灵活的控制运行的过程,运行结果的记录等。例如下面的脚本档案的例子,先设定系统内的对称多处理器的数目,在使用参数设定档案的参数运行linpack,并把结果输出到一个文本档案内。
#export OMP_NUM_THREADS=2 echo "This is a SAMPLE run script. Change it to reflect the correct number"echo "of CPUs/threads, problem input files, etc.." datedate > lin_xeon32.txt./xlinpack_xeon32 lininput_xeon32 >> lin_xeon32.txtdate >> lin_xeon32.txtecho -n "Done: "date

结果查看

根据上面的运行脚本档案,运行结果输出到档案lin_xeon32.txt内。

测试举例

利用此工具对NP370D产品做了计算性能的测试,记忆体使用相同的4G容量,结果如下
配置 OS及版本 计算次数(GFlops)Dempsey 3.02 Linux 4U1 12.6854Woodcrest 1.862 Linux 4U1 16.4117Woodcrest 2.662 Linux 4U1 23.1015
从测试数据看,woodcrest处理器比dempsey的浮点计算能力有较大的提升,通过后续的软硬体的参数的调优,平台的计算能力还会不同程度的提升。

Copyright@2015-2025 www.aizhengw.cn 癌症网版板所有