jblas is a fast linear algebra library for Java. jblas is based on BLAS and LAPACK, the de-facto industry standard for matrix computations, and uses state-of-the-art implementations like ATLAS for all its computational routines, making jBLAS very fast.
jblas can is essentially a light-wight wrapper around the BLAS and LAPACK routines. These packages have originated in the Fortran community which explains their often archaic API. On the other hand modern implementations are hard to beat performance wise. jblas aims to make this functionality available to Java programmers such that they do not have to worry about writing JNI interfaces and calling conventions of Fortran code.
Download the examples from the slides here.
You have three options:
<dependency> <groupId>org.jblas</groupId> <artifactId>jblas</artifactId> <version>1.2.3</version> </dependency>
$ git clone https://github.com/mikiobraun/jblas.git $ mvn install
jblas is hosted on github.
Currently, Linux (i386/amd64), Mac OS X (i386/x86_64) and Windows (i386) are covered. Currently, only limited support for amd64 on Windows (full functionality, but not the same performance). Read here why.
For instructions on compiling everything yourself, see INSTALL.
If you download the prepackaged file, you can run it
java -server -jar jblas-1.2.3.jar
-- org.jblas INFO jblas version is 1.2.3 Simple benchmark for jblas Running sanity benchmarks. checking vector addition... ok -- org.jblas CONFIG BLAS native library not found in path. Copying native library from the archive. Consider installing the library somewhere in the path (for Windows: PATH, for Linux: LD_LIBRARY_PATH). -- org.jblas CONFIG ArchFlavor native library not found in path. Copying native library libjblas_arch_flavor from the archive. Consider installing the library somewhere in the path (for Windows: PATH, for Linux: LD_LIBRARY_PATH). -- org.jblas CONFIG Loading libjblas_arch_flavor.so from /lib/static/Linux/amd64/, copying to libjblas_arch_flavor.so. -- org.jblas CONFIG Loading libjblas.so from /lib/static/Linux/amd64/sse3/, copying to libjblas.so. checking matrix multiplication... ok checking existence of dsyev...... ok [-0.210656, -0.640445, -0.451188; -0.509085, -0.116445, 0.796815; -0.807515, 0.407556, -0.398408; 0.210656, 0.640445, -0.052780] [17.233688; 1.414214; 0.000000] [-0.470605, 0.782218, 0.408248; -0.571449, 0.082339, -0.816497; -0.672293, -0.617540, 0.408248] [17.233688; 1.414214; 0.000000] checking existence of dgesvd...... ok Checking complex return values... (z = -21.0 + 88.0i) Check whether we're catching XERBLA errors. If you see something like "** On entry to DGEMM parameter number 4 had an illegal value", it didn't work! checking XERBLA... ok Sanity checks passed. Each benchmark will take about 5 seconds... Running benchmark "Java matrix multiplication, double precision". n = 10 : 1.530 GFLOPS (3825688 iterations in 5.0 seconds) n = 100 : 2.107 GFLOPS (5268 iterations in 5.0 seconds) n = 1000 : 1.122 GFLOPS (3 iterations in 5.3 seconds) Running benchmark "Java matrix multiplication, single precision". n = 10 : 1.356 GFLOPS (3391101 iterations in 5.0 seconds) n = 100 : 1.669 GFLOPS (4174 iterations in 5.0 seconds) n = 1000 : 1.447 GFLOPS (4 iterations in 5.5 seconds) Running benchmark "ATLAS matrix multiplication, double precision". n = 10 : 1.475 GFLOPS (3686332 iterations in 5.0 seconds) n = 100 : 5.408 GFLOPS (13523 iterations in 5.0 seconds) n = 1000 : 8.076 GFLOPS (21 iterations in 5.2 seconds) Running benchmark "ATLAS matrix multiplication, single precision". n = 10 : 1.510 GFLOPS (3774883 iterations in 5.0 seconds) n = 100 : 10.400 GFLOPS (26001 iterations in 5.0 seconds) n = 1000 : 16.668 GFLOPS (42 iterations in 5.0 seconds)
Other sources of information:
If you have more questions, go to the jblas-users mailing list .
Some info has been collected in the jblas wiki.
Finally, you might want to check out the issue tracker to check whether a bug is already known.
BSD Revised (see COPYING)
Mikio L. Braun, Johannes
Schaback, Matthias L. Jugel, Nicolas Oury
You can also clone the project with Git by running:
$ git clone https://github.com/mikiobraun/jblas.git