The X10 Global Matrix Library (GML) is an object-oriented library implementing double-precision, blocked, sparse and dense matrices, distributed across multiple places. Each kind of matrix is implemented in a different class that implements Matrix operations. Operations include cell-wise operations (addition, multiplication etc), and matrix multiplication (using the SUMMA algorithm).
GML runs on the managed backend (on multiple JVMs, connected with sockets), and also on the native backend (on sockets and on MPI). On the native backend, GML provides an interesting example of an MPI+X10 program.
An important aspect of GML is that the library can be used from purely sequential code, even though each library operation is internally fully distributed and concurrent. This makes GML very attractive as a target for a Matlab-like DSL.
The performance of GML code is comparable with that of hand-written C++ code using MPI.
Several benchmarks are available, such as page rank Additional benchmarks are being developed, and additional linear algebra operations are being implemented.
Our eventual plan is to provided pre-built releases of GML in tandem with each X10 release. However, we are still working through different possible packaging approaches. However, GML source code is available via our sourceforge svn at https://x10.svn.sourceforge.net/svnroot/x10/trunk/x10.gml. Please report any bugs or feature requests using the Global Matrix Library component of the X10 JIRA (http://jira.codehaus.org/browse/XTENLANG).
The library has been designed and implemented by Juemin Zhang, in collaboration with Vijay Saraswat.