MXM
MatrixMatrix Multiplication Timings
MXM
is a C++ program which
sets up a matrixmatrix multiplication problem A = B * C,
and carries it out using

Nested FOR I, J, K loops;

Nested FOR I, K, J loops;

Nested FOR J, I, K loops;

Nested FOR J, K, I loops;

Nested FOR K, I, J loops;

Nested FOR K, J, I loops;

the MATMUL FORTRAN90 intrinsic function;
The user is allowed to specify N1, N2, and N3, which define
the matrix sizes.
Usage:
mxm n1 n2 n3
where

n1 is the number of rows in B.

n2 is the number of columns in B and rows in C.

n3 is the number of columns in C;
Licensing:
The computer code and data files described and made available on this web page
are distributed under
the GNU LGPL license.
Languages:
MXM is available in
a C version and
a C++ version and
a FORTRAN77 version and
a FORTRAN90 version and
a MATLAB version.
Related Data and Programs:
LINPACK_BENCH,
a C++ program which
measures the time needed to factor and solve a "large" (N=1000)
dense linear system of equations, and is used as a benchmark.
MXV,
a C++ program which
compares the performance of (DO I, FOR J) loops, (DO J, FOR I ) loops,
and MATMUL for computing the product of an MxN matrix A and an N vector X.
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,
C++ programs which
demonstrate how to compute CPU time or elapsed time.
Reference:

John Burkardt, Paul Puglielli,
Pittsburgh Supercomputing Center,
MATMUL: An Interactive Matrix Multiplication Benchmark
Source Code:
List of Routines:

MAIN is the main program for MXM.

CPU_TIME reports the elapsed CPU time.

MATGEN generates a random matrix.

MXM_IJK computes A = B * C using FOR I, FOR J, FOR K loops.

MXM_IKJ computes A = B * C using FOR I, FOR K, FOR J loops.

MXM_JIK computes A = B * C using FOR J, FOR I, FOR K loops.

MXM_JKI computes A = B * C using FOR J, FOR K, FOR I loops.

MXM_KIJ computes A = B * C using FOR K, FOR I, FOR J loops.

MXM_KJI computes A = B * C using FOR K, FOR J, FOR I loops.

TIMESTAMP prints the current YMDHMS date as a time stamp.
You can go up one level to
the C++ source codes.
Last revised on 08 October 2010.