The design of sparse direct solvers using object-oriented techniques

We describe our experience in designing object-oriented software for sparse direct solvers. We discuss Spindle, a library of sparse matrix ordering codes, and OBLIO, a package that implements the factorization and triangular solution steps of a direct solver. We discuss the goals of our design: managing complexity, simplicity of interface, flexibility, extensibility, safety, and efficiency. High performance is obtained by carefully implementing the computationally intensive kernels and by making several tradeoffs to balance the conflicting demands of efficiency and good software design. Some of the missteps that we made in the course of this work are also described.

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

[2]  Jason Wu,et al.  The Reference Manual for SPOOLES, Release 2.2: An Object Oriented Software Library for Solving Sparse Linear Systems of Equations , 1999 .

[3]  Iain S. Duff,et al.  Users' guide for the Harwell-Boeing sparse matrix collection (Release 1) , 1992 .

[4]  Alan George,et al.  The Evolution of the Minimum Degree Ordering Algorithm , 1989, SIAM Rev..

[5]  Joseph W. H. Liu The role of elimination trees in sparse factorization , 1990 .

[6]  John Stuart Lakos,et al.  Large-Scale C++ Software Design , 1996 .

[7]  John K. Reid,et al.  The Multifrontal Solution of Indefinite Sparse Symmetric Linear , 1983, TOMS.

[8]  I. Duff,et al.  Direct Methods for Sparse Matrices , 1987 .

[9]  A. Pothen,et al.  Two improved algorithms for envelope and wavefront reduction , 1997 .

[10]  William Gropp,et al.  Modern Software Tools in Scientific Computing , 1994 .

[11]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[12]  Hans Petter Langtangen,et al.  Computational Partial Differential Equations - Numerical Methods and Diffpack Programming , 1999, Lecture Notes in Computational Science and Engineering.

[13]  Todd L. Veldhuizen Blitz++: The Library that Thinks it is a Compiler , 2000 .

[14]  Bruce Hendrickson,et al.  The Chaco user`s guide. Version 1.0 , 1993 .

[15]  Richard F. Barrett,et al.  Matrix Market: a web resource for test matrix collections , 1996, Quality of Numerical Software.

[16]  Alex Pothen,et al.  An Object-Oriented Collection of Minimum Degree Algorithms , 1998, ISCOPE.

[17]  G GrimesRoger,et al.  Accurate Symmetric Indefinite Linear Equation Solvers , 1999 .

[18]  Hans Petter Langtangen,et al.  Object-oriented design of preconditioned iterative methods in diffpack , 1997, TOMS.

[19]  John G. Lewis,et al.  Accurate Symmetric Indefinite Linear Equation Solvers , 1999, SIAM J. Matrix Anal. Appl..

[20]  Alan George,et al.  An Object-Oriented Approach to the Design of a User Interface for a Sparse Matrix Package , 1999, SIAM J. Matrix Anal. Appl..

[21]  Padma Raghavan,et al.  Performance of Greedy Ordering Heuristics for Sparse Cholesky Factorization , 1999, SIAM J. Matrix Anal. Appl..

[22]  Patrick R. Amestoy,et al.  An Approximate Minimum Degree Ordering Algorithm , 1996, SIAM J. Matrix Anal. Appl..

[23]  Joseph W. H. Liu,et al.  Modification of the minimum-degree algorithm by multiple elimination , 1985, TOMS.

[24]  Joseph W. H. Liu,et al.  The Multifrontal Method for Sparse Matrix Solution: Theory and Practice , 1992, SIAM Rev..

[25]  Alan George,et al.  A Fast Implementation of the Minimum Degree Algorithm Using Quotient Graphs , 1980, TOMS.

[26]  S. Eisenstat,et al.  Node Selection Strategies for Bottom-Up Sparse Matrix Ordering , 1998, SIAM J. Matrix Anal. Appl..

[27]  Florin Dobrian,et al.  Object-Oriented Design for Sparse Direct Solvers , 1998, ISCOPE.

[28]  J. Pasciak,et al.  Computer solution of large sparse positive definite systems , 1982 .