Intel® Optimized LINPACK Benchmark 性能测试

Linpack是我们常用的CPU性能测试程序。它通过计算双精度线性方程组的求解来测试CPU的运算能力。Intel MKL提供一个优化版本的Intel® Optimized LINPACK Benchmark,通过运行这个程序,我们可以方便进行CPU的基准性能测试。

Intel® Optimized LINPACK Benchmark是根据LINPACK 1000 benchmark优化后的程序。程序根据用户指定的参数生成一个线性的方程组,通过方程的求解时间与计算量,来计算CPU的浮点性能。 

运行这个程序基本步骤为:

1>Intel® Optimized LINPACK Benchmark 下载:

Intel® Optimized LINPACK Benchmark程序包括在Intel MKL 安装包中。如果已经下载并且安装了Intel MKL(http://www3.intel.com/cd/software/products/apac/zho/329191.htm ), LINPACK Benchmark 位于 mkl/benchmarks/linpack 目录下。

Intel® Optimized LINPACK Benchmark,还提供的单独下载:/en-us/articles/intel-math-kernel-library-linpack-download

 2>程序运行:

benchmarks/linpack目录下,包括了已经编译好的可执行文件。直接运行该程序,就可以进行相应的性能测试。运行程序前,建议首先阅读MKL用户指南中,有关“LINPACK and MP LINPACK Benchmarks”的说明部分:

/sites/products/documentation/hpc/composerxe/en-us/mklxe/mkl_userguide_win/MKL_UG_linpack/MKL_UG_linpack.htm

在Intel 64 的平台上, 一个简单的运行命令如下:

  >./xlinpack_xeon64 lininput_xeon64

程序运行后,会提供如下图类似的性能数据: 其中GFlops 列提供了方程求解时, 每秒系统能计算到多少次的10亿次双精度浮点运算(GFLOPs)。比如,我们在Intel® Core™ i7-2600K CPU @ 3.40GHz,4 核的机器测试的结果中,够达到93GFlops 运行结果,该CPU双精度的理论峰值为108.8GFLPs,说明测试程序达到86%的理论峰值。



 3>运行参数

运行该程序,需要输入参数文件。 该文件包括了运行LINPACK 程序的主要参数。填写参数时,一些主要的注意事项为:

 1)设置测试矩阵维数时,需同时考虑的内存的大小:程序运行中,会提示出所需内存(Maximum memory requested that can be used =...), 如果系统实际内存小于该值,需要减小输入的矩阵的维数。

2)矩阵行间距(Leading dimension of array):矩阵行间距必须大于或等于矩阵大小。实际运行时,可以根据具体的环境,测试一下能取得最好性能的矩阵行间距大小。一些测试经验表明,行间距常常在大于矩阵的维数,并能够被8 整除的长度时,系统能取得较高性能。

3)数据的对齐值(alignment values):该数据是KB为单位的,如缺省的输入数据是4,表示是以4K的内存地址上对齐。通常,我们可以将对齐值设置为系统页面的大小。

4>多线程设置

该程序是一个多核优化后的程序. 缺省的程序会根据系统处理器核的数目,设置线程. 用户可以通过OMP_NUM_THREADS 来改变程序运行的线程数目. 如在bash shell中, 设置:

      >export  OMP_NUM_THRADS= 线程数目

为获得最高性能,将线程数目设置为系统核的数目。在有超线程的系统中,设置该数目为系统超线程数目的一半,并设置下面的环境变量:

      KMP_AFFINITY=granularity=fine,compact,1,0.

这方面的讨论,可以参考文章: /en-us/articles/setting-thread-affinity-on-smt-or-ht-enabled-systems-for-better-performance

最后需要顺便说明的是,这个程序的结果,不适用于提交为LINPACK 1000 性能数据。该基准测试需要,运行编译器直接编译后的代码。Intel® Optimized LINPACK Benchmark包括手工专门针对处理器优化的代码。

Nähere Informationen zur Compiler-Optimierung finden Sie in unserem Optimierungshinweis.