How Does LINPACK Measure Supercomputer Performance?

The LINPACK benchmark evaluates supercomputers by measuring how fast they solve a dense system of linear equations using double-precision floating-point arithmetic. Since 1993, the Top500 project has used the High-Performance LINPACK (HPL) implementation to rank the world's fastest classical supercomputers by their sustained execution rate, reported in floating-point operations per second (FLOPS).

Solving a Dense System of Linear Equations

At its core, HPL solves a system of \(N\) linear equations with \(N\) unknowns, represented in matrix form as:

\[Ax = b\]

Here, \(A\) is a dense \(N \times N\) matrix of random 64-bit (IEEE 754 double-precision) floating-point numbers, \(b\) is a known vector of length \(N\), and \(x\) is the unknown solution vector. To solve for \(x\), the benchmark uses LU factorization with partial pivoting, which decomposes \(A\) into a lower triangular matrix \(L\) and an upper triangular matrix \(U\), followed by forward and backward substitution.

Calculating Performance in FLOPS

For a dense \(N \times N\) system, the number of floating-point operations required for LU factorization and substitution is standardized as:

\[\text{Operations} = \frac{2}{3}N^3 + 2N^2\]

The benchmark records the wall-clock time \(T\) (in seconds) required to compute the solution. The sustained performance \(R_{\max}\) is then calculated as:

\[R_{\max} = \frac{\frac{2}{3}N^3 + 2N^2}{T}\]

Because \(N\) is typically very large on supercomputers, the \(N^3\) term dominates. Modern Top500 systems achieve \(R_{\max}\) values measured in petaflops (\(10^{15}\) FLOPS) or exaflops (\(10^{18}\) FLOPS).

Tunable Parameters and Verification

Unlike fixed-size benchmarks, HPL allows system administrators to tune parameters to extract maximum hardware efficiency:

  • Problem size (\(N\)): Operators choose \(N\) large enough to fill most of the system's main memory, minimizing the relative overhead of communication and maximizing compute utilization.
  • Block size (\(NB\)): The matrix is partitioned into \(NB \times NB\) blocks to optimize cache reuse and overlap computation with network communication.
  • Process grid (\(P \times Q\)): MPI processes are arranged in a two-dimensional grid to distribute data across compute nodes.

After computing \(x\), HPL verifies numerical accuracy by checking the scaled residual:

\[\frac{\|Ax - b\|_\infty}{\epsilon (\|A\|_\infty \|x\|_\infty + \|b\|_\infty) N} \le 16\]

where \(\epsilon\) is machine epsilon for 64-bit precision. A run is only accepted for the Top500 list if this residual check passes, ensuring that optimizations do not compromise mathematical correctness.

Why Top500 Uses HPL

HPL remains the standard for Top500 rankings because it scales predictably across architectures, stresses both floating-point units and high-speed interconnects, and provides a single, comparable metric (\(R_{\max}\)) alongside theoretical peak performance (\(R_{\text{peak}}\)). While newer benchmarks such as HPCG and HPL-MxP complement it by testing memory bandwidth and mixed-precision workloads, HPL continues to serve as the primary baseline for classical supercomputing performance.