The X10 Global Matrix Library (GML) is an object-oriented library implementing double-precision, blocked, sparse and dense matrices, distributed across multiple places. Each matrix type implements cell-wise operations (addition, multiplication, etc.) and higher level operations like matrix multiplication (using the SUMMA algorithm).
The high-level matrix operations can be invoked 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.
GML runs on both Managed X10 (on multiple JVMs over sockets), and Native X10 (over sockets or MPI).
The performance of GML code is comparable with that of hand-written C++ code using MPI. Parallelism within a node is exploited through the use of multi-threaded implementations of the Basic Linear Algebra Subroutines (BLAS) and Linear Algebra PACKage (LAPACK) routines. Between nodes, collective communications are used to support coarse-grained parallelism.
Several benchmarks are available, including:
- PageRank;
- linear regression;
- logistic regression; and
- non-negative matrix factorization.
Additional benchmarks are being developed, and additional linear algebra operations are being implemented.
Download the GML source package from SourceForge, or check out the latest GML source from Git. Please report any bugs or feature requests using the Global Matrix Library component of the X10 JIRA.
GML was originally designed and implemented by Juemin Zhang in collaboration with Vijay Saraswat.