Performance of Java matrix math libraries?
Posted
by dfrankow
on Stack Overflow
See other posts from Stack Overflow
or by dfrankow
Published on 2009-02-09T19:12:03Z
Indexed on
2010/04/24
22:53 UTC
Read the original article
Hit count: 334
We are computing something whose runtime is bound by matrix operations. (Some details below if interested.) This experience prompted the following question:
Do folk have experience with the performance of Java libraries for matrix math (e.g., multiply, inverse, etc.)? For example:
- JAMA: http://math.nist.gov/javanumerics/jama/
- COLT: http://acs.lbl.gov/~hoschek/colt/
- Apache commons math: http://commons.apache.org/math/
I searched and found nothing.
Details of our speed comparison:
We are using Intel FORTRAN (ifort (IFORT) 10.1 20070913). We have reimplemented it in Java (1.6) using Apache commons math 1.2 matrix ops, and it agrees to all of its digits of accuracy. (We have reasons for wanting it in Java.) (Java doubles, Fortran real*8). Fortran: 6 minutes, Java 33 minutes, same machine. jvisualm profiling shows much time spent in RealMatrixImpl.{getEntry,isValidCoordinate} (which appear to be gone in unreleased Apache commons math 2.0, but 2.0 is no faster). Fortran is using Atlas BLAS routines (dpotrf, etc.).
Obviously this could depend on our code in each language, but we believe most of the time is in equivalent matrix operations.
In several other computations that do not involve libraries, Java has not been much slower, and sometimes much faster.
© Stack Overflow or respective owner