O-Matrix has been designed from the ground up for accuracy and high-performance.
The O-Matrix environment enables you to both prototype designs and
perform large scale analysis within the integrated environment. O-Matrix
has been built using highly optimized C/C++, FORTRAN, and assembly code to provide
optimal execution performance. The linear algebra
routines in O-Matrix are based on the algorithms from BLAS, LINPACK, and LAPACK to provide
robust, accurate solutions. As of O-Matrix 6.4 the majority of the numerical functions and
many of the data processing functions have been re-strucutured to to take advantage of multi-core
Overall, O-Matrix is the fastest matrix computation package we have tested.
The following benchmarks are from the Stefen Steinhaus' Number Crunching Report,
SciViews.org, and Matlab customers. The benchmark script is 100% Matlab compatible;
the same script can be run in either O-Matrix or Matlab.
performance gains are available when implementing solutions in the native O-Matrix
The O-Matrix environment provides two languages - The native
O-Matrix language which is similar to, but more flexible, powerful,
and easier to use than Matlab; and Matlab mode for running Matlab code.
All timings are in seconds. - Run on an Intel Core 2 Quad, Q6600 at 2.4 GHz, with 4GB of memory
|FFT over 2^19 random complex values
|FFT over 800,000 random complex values
|Sorting 2,000,000 random values
|Standard deviation of 2,000,000 random values
|1000x1000 random matrix .^3
|800x800 random matrix .^1000.
|Gaussian error function over 500x500 matrix
|800x800 Toeplitz matrix
|Create 2000x2000 normal distributed random matrix
|Create 2500x2500 ones matrix
|Linear regression over 600x600 matrix (c=a\b')
|720x720 cross-product (b= a' * a)
|Eigenvalues of 320x320 random matrix
|Determinant of 650x650 random matrix
|Cholesky decomposition of 900x900 matrix
|Inverse of 400x400 random matrix
|750,000 Fibonacci number (vector calculation)
|Creation of 1000x1000 Hilbert matrix
|Escoufier's method on 37x37 matrix (loops)
|Gamma function over 600x600 matrix
|sin(x)+cos(x) over 1500x1500 random matrix
|exp(log(x)) over 1500x1500 random matrix
|matrix*scalar over 2000x2000 random matrix
|matrix/scalar over 2000x2000 random matrix
All calculations performed with double-precision values
I use O-Matrix for computationally intensive numerical mathematics in projects about
plasma physics and engineering. The reasonable O-Matrix price has made it very
affordable, and the outstanding execution performance has relieved me from the need to code in
C/C++ for most of my projects.
- Mario Charro, PhD., - Universidad Politecnica de Madrid, Spain
O-Matrix has a small memory footprint and efficiently
uses system resources. For the benchmark above the initial memory
usage, (immediately after application startup) was 7MB for O-Matrix
and 63MB for Matlab. Peak memory usage during execution was 154MB for
O-Matrix and 170MB for Matlab.
All benchmarks on www.omatrix.com are available in the example\benchmarks
directory of the O-Matrix Light download.
(To run Matlab compatible m-files
press the lightning bolt icon on the toolbar, change the 'Files of type' drop down to
'Mlmode File Type', and then select the file.) Note that you must install the
O-Matrix MFile Compatibility Library
to run the Matlab-based benchmarks available on this page.
See Why Users are Choosing O-Matrix for a more
detailed product comparison of O-Matrix and Matlab.