This paper looks at the development of two software libraries aimed at distributed memory machines, ScaLAPACK and the NAG Numerical PVM Library, concentrating on the underlying design of the libraries and issues concerned with testing the components of the libraries.
The development of ScaLAPACK, and related software, had a strong influence on the NAG Numerical PVM Library and so much of the paper will concentrate on the development of ScaLAPACK.
ScaLAPACK itself is built upon LAPACK, and so the paper will start with a brief discussion of the LAPACK project.
The LAPACK project has produced a software package, also called LAPACK which stands for Linear Algebra PACKage, for dense and banded linear algebra problems targeted at high performance shared memory machines. Part of the ScaLAPACK project is concerned with porting LAPACK to distributed memory machines, and has produced the software package ScaLAPACK, which stands for Scalable Linear Algebra PACKage. There has been a new release of each of these packages in 1996, and a further release of ScaLAPACK is planned for the autumn of 1996.
LAPACK, ScaLAPACK and the NAG Numerical PVM Library are all intended to be portable and efficient in their target environments, as well as being maintainable, and we shall discuss the infrastructure that was required to achieve these attributes.
LAPACK has built upon the development of the BLAS (Basic Linear Algebra Subprograms), which are used to achieve efficiency by performing the computationally intensive operations, and so form the portability layer for LAPACK. ScaLAPACK, which uses an SPMD message passing programming paradigm, utilizes the PBLAS (Parallel BLAS) for its computationally intensive parts and the BLACS (Basic Linear Algebra Communication Subprograms) for communication; the BLACS being the communication equivalents of the BLAS. The PBLAS themselves call the single node BLAS for computation and the BLACS for communication; indeed most of the calls to the BLACS from ScaLAPACK are made within the PBLAS. Thus the PBLAS are effectively the portability layer for ScaLAPACK.
This structure has enabled the ScaLAPACK software to closely resemble the LAPACK software, thus considerably aiding the porting process. Additionally, the interfaces for the ScaLAPACK routines have been made as close as possible to the LAPACK routines, with the intention of making the porting of users programs straightforward.
The NAG Numerical PVM Library incorporates much of ScaLAPACK, uses the same programming model, and similarly utilizes the PBLAS and BLACS as much as possible elsewhere.
The paper will include discussion of the development of the PBLAS and the BLACS, will look at the additional requirements for testing the libraries in a distributed memory environment, and will mention the challenges of making the ScaLAPACK and NAG Numerical PVM Library reliable in a heterogeneous computing environment.