linpack_bench


linpack_bench, a Fortran90 code which carries out the LINPACK Benchmark.

The LINPACK benchmark is a test problem used to rate the performance of a computer on a simple linear algebra problem.

The test problem requires the user to set up a random dense matrix A of size N = 1000, and a right hand side vector B which is the product of A and a vector X of all 1's. The first task is to compute an LU factorization of A. The second task is to use the LU factorization to solve the linear system

A * X = B.

The number of floating point operations required for these two tasks is roughly

ops = 2 * N*N*N / 3 + 2 * N * N,
therefore, the "MegaFLOPS" rating, or millions of floating point operations per second, can be found as
mflops = ops / ( cpu * 1000000 ).

On a given computer, if you run the benchmark for a sequence of increasing values of N, the behavior of the MegaFLOPS rating will vary as you pass through three main zones of behavior:

LanguagePrecisionTypeMachineCommentMegaFLOPS
Fortran90SingleRealChili(rewritten)240
Fortran90SingleRealKachina 196
Fortran90SingleRealChili 194
Fortran90SingleRealEclipse(1 processor)127
Fortran90SingleRealDHCP95 (Apple G5)gFortran118
Fortran90SingleRealYankee (Apple G4) 36
Fortran90SingleRealTeragold(1 processor)18
Fortran90SingleRealSgi 16
      
Fortran90DoubleRealDHCP95 (Apple G5)gFortran149
Fortran90DoubleRealChilifort -fast104
Fortran90DoubleRealKachina 87
Fortran90DoubleRealChili 77
      
Fortran90QuadRealDHCP95 (Apple G5)gFortran23
Fortran90QuadRealChili 10

Licensing:

The information on this web page is distributed under the MIT license.

Languages:

linpack_bench is available in a C version and a C++ version and a Fortran90 version and a MATLAB version.

Related Data and Programs:

linpack_bench_test

linpack_d, a Fortran90 code which supplies the solvers used by LINPACK_BENCH.

matmul, a Fortran90 code which is an interactive matrix multiplication benchmark program.

memory_test, a Fortran90 code which declares and uses a sequence of larger and larger vectors, to see how big a vector can be used on a given machine and compiler.

mxm, a Fortran90 code which sets up a matrix multiplication problem A=B*C of arbitrary size, and compares the time required for IJK, IKJ, JIK, JKI, KIJ and KJI orderings of the loops.

nas, a Fortran90 code which runs the NASA kernel benchmark.

timer, a Fortran90 code which measures CPU time or elapsed time.

Reference:

  1. https://www.netlib.org/benchmark/1000s the LINPACK benchmark website (single precision).
  2. https://www.netlib.org/benchmark/1000d the LINPACK benchmark website (double precision).
  3. Jack Dongarra,
    Performance of Various Computers Using Standard Linear Equations Software, Technical Report CS-89-85,
    Electrical Engineering and Computer Science Department,
    University of Tennessee, 2008.
  4. Jack Dongarra, Jim Bunch, Cleve Moler, Pete Stewart,
    LINPACK User's Guide,
    SIAM, 1979,
    ISBN13: 978-0-898711-72-1,
    LC: QA214.L56.
  5. George Fishman,
    Multiplicative congruential random number generators with modulus 2**b: an exhaustive analysis for b = 32 and a partial analysis for b = 48,
    Mathematics of Computation,
    Volume 189, 1990, pages 331-344.
  6. Charles Lawson, Richard Hanson, David Kincaid, Fred Krogh,
    Algorithm 539: Basic Linear Algebra Subprograms for Fortran Usage,
    ACM Transactions on Mathematical Software,
    Volume 5, Number 3, September 1979, pages 308-323.

Source Code:


Last revised on 01 July 2024.