This Library allows users, even with little knowledge about parallel machines, to easily develop efficient parallel programs on two-dimensional arrays (i.e. matrices). This is because synchronization and communication, which make parallel programming very complicated, are concealed by the parallel skeletons (basic patterns of parallel computation) provided by the Library. The parallel skeletons provided by the Library are implemented efficiently (asymptotically O(log n) for (n x n) matrix), so that users can get efficient parallel programs by composing the skeletons without considering parallelism.
The Library provides the parallel skeletons as templates of C++. Thus arbitrary type of elements of a matrix is allowed. Because parallel skeletons are defined as higher order functions, users can do various computations on matrices by passing user-defined function objects to them.
The library consists of three parts:
dist_matrix and matrix_skeletons classes use MPI in their methods for communication among processors. Thus, a program written by this library can be executed on any environment where MPI implementation is provided.
NOTE: The Library is tested on Unix Clones (FreeBSD and Linux) and Windows XP with cygwin.
Reference Manual is generated by Doxygen.
We'll appreciate any feedback (comments, suggestions, questions, bug reports, ...) concerning the Matrix Skeleton Library at sketo_at_ipl.t.u-tokyo.ac.jp, or emoto_at_ipl.t.u-tokyo.ac.jp (please replace "_at_" with "@").