# Results of Single and Dual Processor Colt Matrix Benchmark

using the matrix package. For more explanations, on how to interpret and run benchmarks on your own boxes, see the documentation of class BenchmarkMatrix.

OS | Linux | Your config.
OS Config. | Red Hat 6.1, Kernel 2.2.12-20smp |
HW | 2 x PentiumIII@600 MHz, 512 MB, 32 KB L1, 2x256 KB L2 (lxplus012.cern.ch) |
VM | IBMJDK1.3, Classic VM, build cxdev-20000502, jitc |
Performance | here |

Here the result for the matrix matrix multiply with one thread and the parallel version with two threads.

Each operation is timed varying the following parameters

- Implementation type - `DenseDoubleMatrix2D, SparseDoubleMatrix2D`
- Density - the fraction of cells in non-zero state (randomly assigned)
- Size - all matrices are square with the given number of rows and columns
- Computer Architecture, Operating System and Virtual Machine

Methodology

- Measurements given in Mops/sec (10^6 ops/sec) and Mflops/sec (10^6 flops/sec). `A[i,j]=B[k,l]` counts as `1` op whereas `sum += A[i,j]*B[k,l]` counts as `2` flops. For sparse implementations Mops and Mflops are expressed in relation to the dense base line implementation: If an operation on a dense matrix executes at 10 Mflops/sec but takes 2 times longer to complete on a sparse matrix, the sparse matrix is said to have a performance of 10/2=5 Mflops.
- All machines are empty.
- No explicit invocation of garbage collection within and between runs (there is not much to collect).
- Each operation is repeated for at least 2 seconds (see command line); the mean of all repetitions is reported.
- Some parameter combinations that do not occur in practice (but would take lots of memory and time) are not benchmarked; they appear in the tables as NaN's (this is not an error). For example, it is possible to multiply two matrices of type `SparseDoubleMatrix2D` which are in fact very dense. However, it doesn't make a lot of sense; one would take `DenseDoubleMatrix2D` for such purposes.

Command line: `java -Xmx400m cern.colt.matrix.bench.BenchmarkMatrix -file all`

Below some results from an old version 1.0Beta4-1. Of historic interest only.

OS | Linux | Linux | Linux | Solaris
OS Config. | Red Hat 6.1, Kernel 2.2.12-20 | Red Hat 6.1, Kernel 2.2.12-20 | Red Hat 6.1, Kernel 2.2.12-20 | Solaris 2.6 (aka SunOS 5.6)
HW | 1 x PentiumIII@600 MHz, 128 MB, 32 KB L1, 256 KB L2 (linuxosdev.cern.ch) | 1 x PentiumIII@600 MHz, 128 MB, 32 KB L1, 256 KB L2 (linuxosdev.cern.ch) | 1 x PentiumIII@600 MHz, 128 MB, 32 KB L1, 256 KB L2 (linuxosdev.cern.ch) | Sun 450, 2 x Ultrasparc-II@400 MHz (1 CPU used), 256 MB, 32 KB L1, 4 MB L2 (shd70.cern.ch)
VM | IBMJDK1.1.8 | BlackdownJDK1.2.2RC3, Classic VM, native threads, sunwjit | SunInpriseJDK1.2.2RC1, Classic VM (build 1.2.2-I, green threads, javacomp) | SunJDK1.2.2, Classic VM
Performance | here | here | here | here