|
O-Matrix Performance
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
machines.
Overall, O-Matrix is the fastest matrix computation package we have tested.
- SciViews
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.
Even greater
performance gains are available when implementing solutions in the native O-Matrix
language.
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.
| Benchmark |
O-Matrix 6.5 |
Matlab 7.6 |
| FFT over 2^19 random complex values |
0.044 |
0.084 |
| FFT over 800,000 random complex values |
0.100 |
0.125 |
| Sorting 2,000,000 random values |
0.201 |
0.271 |
| Standard deviation of 2,000,000 random values |
0.003 |
0.075 |
| 1000x1000 random matrix .^3 |
0.011 |
0.639 |
| 800x800 random matrix .^1000. |
0.012 |
0.045 |
| Gaussian error function over 500x500 matrix |
0.001 |
0.043 |
| 800x800 Toeplitz matrix |
0.014 |
0.050 |
| Create 2000x2000 normal distributed random matrix |
0.011 |
0.103 |
| Create 2500x2500 ones matrix |
0.014 |
0.029 |
| Linear regression over 600x600 matrix (c=a\b') |
0.019 |
0.045 |
| 720x720 cross-product (b= a' * a) |
0.046 |
0.043 |
| Eigenvalues of 320x320 random matrix |
0.154 |
0.215 |
| Determinant of 650x650 random matrix |
0.023 |
0.038 |
| Cholesky decomposition of 900x900 matrix |
0.035 |
0.031 |
| Inverse of 400x400 random matrix |
0.015 |
0.023 |
| 750,000 Fibonacci number (vector calculation) |
0.134 |
0.110 |
| Creation of 1000x1000 Hilbert matrix |
0.025 |
0.038 |
| Escoufier's method on 37x37 matrix (loops) |
0.156 |
0.340 |
| Gamma function over 600x600 matrix |
0.061 |
0.093 |
| sin(x)+cos(x) over 1500x1500 random matrix |
0.048 |
0.094 |
| exp(log(x)) over 1500x1500 random matrix |
0.130 |
0.198 |
| matrix*scalar over 2000x2000 random matrix |
0.022 |
0.025 |
| matrix/scalar over 2000x2000 random matrix |
0.020 |
0.036 |
All timings are in seconds. - Run on an Intel Core 2 Quad, Q6600 at 2.4 GHz, with 4GB of memory
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
in O-Matrix,
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.
|