This work has received support from the Norwegian Supercomputing Committee (TRU) through a grant of computing time on the Intel Paragon located in Bergen.
Developers at Intel Corporation configured the AT&T C++ cfront compiler used to compile the Intel Paragon implementations.
Many thanks to those who have assisted this work, and special thanks to Olav M. Loftesnes and Yasemin Yalçinkaya who gave advice on this document and related documents, the technical support staff at the department, and to the supervisor of this project, Jeremy Cook.
This document presents the techniques which have been used to implement a prototype matrix class library in C++, the Symbolic Parallel Linear Algebra library (SymPLA). SymPLA offers a symbolic interface to double precision matrix and vector algebra, that is very close to mathematical notation, supporting arithmetic operations, submatrices, factorization and solution of systems. The library, and the applications using it, can be ported from sequential architectures to parallel architectures with modifications restricted to a few non-public classes at the bottom of the library, in the interface to the external mathematical libraries. The details of storage and calculation is restricted to these classes.
An implementation for LAPACK, and frontend/backend implementations for ScaLAPACK and the MasPar MP-2, made and benchmarked for the Intel Paragon, a cluster of 233 Mhz DEC Alpha workstations and the MasPar MP-2 are presented. These implementations prove that the library can be implemented for these architectures without modifications being needed in the application, or the top-level library, and without excessive overhead for whole matrices (not submatrices) compared to the performance of the external libraries used.
The present implementation supports only a sequential view of the parallel computer, but the design is not restricted to this. The library may easily be expanded into an SPMD implementation, by adding a communication class library and a new bottom layer implementation, or a true client/server implementation similar to the ScaLAPACK version presented.
This document also gives advice on how to proceed in the direction of a complete implementation of SymPLA, and areas of interest in the future development of the library.