LINPACK_BENCH
The LINPACK Benchmark


LINPACK_BENCH is a FORTRAN90 program 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

Languages:

LINPACK_BENCH is available in a C version and a C++ version and a FORTRAN77 version and a FORTRAN90 version and a JAVA version and a MATLAB version.

Related Data and Programs:

LINPACK_D, a FORTRAN90 library which supplies the solvers used by LINPACK_BENCH.

LINPACK_Q, a FORTRAN90 library which implements a few of the LINPACK library of linear solvers, using quadruple precision.

MATMUL, a FORTRAN90 program which is an interactive matrix multiplication benchmark program.

MDBNCH, a FORTRAN77 program which is a benchmark code for a molecular dynamics calculation.

MEMORY_TEST, a FORTRAN90 program 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 program 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.

MXV, a FORTRAN90 program which compares the performance of (DO I, DO J) loops, (DO J, DO I) loops, and MATMUL for computing the product of an MxN matrix A and an N vector X.

NAS, a FORTRAN90 program which runs the NASA kernel benchmark.

SUM_MILLION, a FORTRAN90 program which sums the integers from 1 to 1,000,000, as a demonstration of how to rate a computer's speed;

TIMER, a FORTRAN90 example which demonstrates how to measure CPU time or elapsed time.

Reference:

  1. http://www.netlib.org/benchmark/1000s the LINPACK benchmark website (single precision).
  2. http://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:

LINPACK_BENCH_S is the single precision version:

LINPACK_BENCH_D is the double precision version:

LINPACK_BENCH_Q is the quad precision version (your compiler might not allow this arithmetic type, or you may have to change the syntax of the program to get it):

List of Routines:

This is the list of routines for the double precision version of the benchmark program. The single and quad precision names are similar.

You can go up one level to the FORTRAN90 source codes.


Last revised on 07 March 2008.