LINPACK_BENCH is a C++ 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:
Language | Precision | Type | Machine | Comment | MegaFLOPS |
---|---|---|---|---|---|
C++ | Single | Real | DHCP95 (Apple G5) | g++ | 222 |
C++ | Double | Real | DHCP95 (Apple G5) | g++ | 167 |
C++ | Double | Real | chili (ALPHA) | g++ | 51 |
The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.
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.
LINPACK_D, a C++ library which solves linear systems using double precision real arithmetic;
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 C++ 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 C++ 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.
SUM_MILLION, a C++ program which sums the integers from 1 to 1,000,000, as a demonstration of how to rate a computer's speed;
TIMER, a C++ library which demonstrates how to measure CPU time or elapsed time.
LINPACK_BENCH_S is the single precision version of the program.
LINPACK_BENCH_D is the double precision version of the program.
Here are the routines for the double precision version of the program:
You can go up one level to the C++ source codes.