如何做 Linpack 测试及性能优化
曹振南
czn@ncic.ac.cn,caozn@dawning.com.cn
2004 年 8 月
本文主要说明如何完成 HPL 测试,并介绍了一些简单的性能优化方法。
一、Linpack 简介
Linpack 是国际上最流行的用于测试高性能计算机系统浮点性能的 benchmark。通过对
高性能计算机采用高斯消元法求解一元 N 次稠密线性代数方程组的测试,评价高性能计算
机的浮点性能。
Linpack 测试包括三类,Linpack100、Linpack1000 和 HPL。Linpack100 求解规模为 100
阶的稠密线性代数方程组,它只允许采用编译优化选项进行优化,不得更改代码,甚至代
码中的注释也不得修改。Linpack1000 要求求解 1000 阶的线性代数方程组,达到指定的精
度要求,可以在不改变计算量的前提下做算法和代码上做优化。HPL 即 High Performance
Linpack,也叫高度并行计算基准测试,它对数组大小 N 没有限制,求解问题的规模可以改
变,除基本算法(计算量)不可改变外,可以采用其它任何优化方法。前两种测试运行规
模较小,已不是很适合现代计算机的发展。
HPL 是针对现代并行计算机提出的测试方式。用户在不修改任意测试程序的基础上,
可以调节问题规模大小(矩阵大小)、使用 CPU 数目、使用各种优化方法等等来执行该测试
程序,以获取最佳的性能。HPL 采用高斯消元法求解线性方程组。求解问题规模为 N 时,
浮点运算次数为(2/3 * N^3-2*N^2)。因此,只要给出问题规模 N,测得系统计算时间 T,
峰值=计算量(2/3 * N^3-2*N^2)/计算时间 T,测试结果以浮点运算每秒(Flops)给出。
HPL 测试结果是 TOP500 排名的重要依据。
二、计算机计算峰值简介
衡量计算机性能的一个重要指标就是计算峰值或者浮点计算峰值,它是指计算机每秒
钟能完成的浮点计算最大次数。包括理论浮点峰值和实测浮点峰值。
理论浮点峰值是该计算机理论上能达到的每秒钟能完成浮点计算最大次数,它主要是
由 CPU 的主频决定的。
理论浮点峰值=CPU 主频×CPU 每个时钟周期执行浮点运算的次数×系统中 CPU 数
CPU 每个时钟周期执行浮点运算的次数是由处理器中浮点运算单元的个数及每个浮点
运算单元在每个时钟周期能处理几条浮点运算来决定的,下表是各种 CPU 的每个时钟周期
执行浮点运算的次数。
CPU
Flops/Cycle CPU Flops/Cycle CPU Flops/Cycle
IBM Power4 4 Ultra SPARC 2 Opteron 2
PA-RISC 4 SGI MIPS 2 Xeon 2
Alpha 2 Itanium 4 Pentium 1
实测浮点峰值是指 Linpack 值,也就是说在这台机器上运行 Linpack 测试程序,通过