Parallel Extensions to the Matrix Template Library

We present the preliminary design for a C++ template library to enable the compositional construction of matrix classes suitable for high performance numerical linear algebra computations. The library based on our interface definition — the Matrix Template Library (MTL) — is written in C++ and consists of a small number of template classes that can be composed to represent commonly used matrix formats (both sparse and dense) and parallel data distributions. A comprehensive set of generic algorithms provide high performance for all MTL matrix objects without requiring specific functionality for particular types of matrices. We present performance data to demonstrate that there is little or no performance penalty caused by the powerful MTL abstractions.

[1]  William Gropp,et al.  Efficient Management of Parallelism in Object-Oriented Numerical Software Libraries , 1997, SciTools.

[2]  Jack J. Dongarra,et al.  LAPPACK Working Note No. 28: The IBM RISC System/6000 and Linear Algebra Operations , 1990 .

[3]  K. Timson,et al.  Center for research on parallel computation , 1992 .

[4]  Jack J. Dongarra,et al.  A set of level 3 basic linear algebra subprograms , 1990, TOMS.

[5]  Alexander A. Stepanov,et al.  Algorithm‐oriented generic libraries , 1994, Softw. Pract. Exp..

[6]  Roldan Pozo,et al.  Template Numerical Toolkit for Linear Algebra: High Performance Programming With C++ and the Standard Template Library , 1997, Int. J. High Perform. Comput. Appl..

[7]  Charles L. Lawson,et al.  Basic Linear Algebra Subprograms for Fortran Usage , 1979, TOMS.

[8]  Jack J. Dongarra,et al.  Algorithm 656: an extended set of basic linear algebra subprograms: model implementation and test programs , 1988, TOMS.

[9]  Jack Dongarra,et al.  LAPACK Working Note 74: A Sparse Matrix Library in C++ for High Performance Architectures , 1994 .

[10]  James Demmel,et al.  Optimizing matrix multiply using PHiPAC: a portable, high-performance, ANSI C coding methodology , 1997, ICS '97.

[11]  A. Lumsdaine,et al.  A Sparse Matrix Library in C + + for High PerformanceArchitectures , 1994 .

[12]  D. W. Walker,et al.  LAPACK++: a design overview of object-oriented extensions for high performance linear algebra , 1993, Supercomputing '93.

[13]  Kesheng Wu,et al.  A Revised Proposal for a Sparse BLAS Toolkit , 1994 .

[14]  Majed Sidani,et al.  Parallel Matrix Distributions: Have we been doing it all right? , 1996 .

[15]  Alexander A. Stepanov,et al.  Generic Programming , 1988, ISSAC.

[16]  G. G. Stokes "J." , 1890, The New Yale Book of Quotations.

[17]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..