Title: Amesos Interfaces to sparse direct solvers
1Amesos Interfaces to sparse direct solvers
- October 15, 2003
- 830 930 a.m.
- Ken Stanley
2Overview
- Background
- Simplifying AX B
- Getting started Amesos_Umfpack
- Amesos options
- Other Amesos interfaces
- Status
- Future Work and Discussion
- Summary
3Background
- Solvers
- Sandia Users
- Challenges
4Background - Solvers
- PSPACES Gupta f90 mpi SPD unsupported
- WSSMP Gupta binary mpi general
- WGSMP Gupta binary mpi SPD
- SPOOLES Ashcraftpublic domainc unsupported
- SuperLU Li,Demmelserialcgeneral
- UMFPACK Davisserialcgeneralrobust
- Unnamed Ngparallelf77SPD
- MUMPS Amestoyf90general/SPD
- Ksparse Kundert
- SNL_MPFRONT Bennerparallel
- OTHERS y12M, Boeing, MA57, MA43, DPSLDLT,
DPSLDU, PARDISO, Shen, Dearholt, SPLU, Lusol,
LUSOL, XYT
5Background Sandia Users
- Tuminaro ML, etc.
- Shadid MP Salsa
- Williams Sierra
- Hoekstra Xyce
- Pierson
- Dohrman
- Schultz - GOMA
- Many Aztec
- Many more
6Background - Challenges
- No single solver dominates
- Different interfaces
- Unique data distribution requirements
- Academic quality
- Sporadic development, bugs, untested features,
changing interfaces - Sandia modifications not consistently adopted
- Imperfect heuristics
- Interface changes between revisions
7Simplifying AX B
- Example
- Clean, consistent interface
- Single point of contact
- Evaluation
8Simplifying AX BExample
- Epetra_LinearProblem Problem( A, x, b)
- Amesos_Umfpack A_direct( Problem, ParamList )
- A_direct.SymbolicFactorization( )
- A_direct.NumericFactorization( )
- A_direct.Solve( )
9Simplifying AX B Clean, consistent interface
- Amesos_BaseSolver class
- Seperation from underlying solver
- Identical interface for serial and parallel
solvers - Nearly identical interface for each solver
- Amesos redistributes the data
- Easy upgrade
10Simplifying AX B Single point of contact
- Isolate report bugs follow-up
- Prompt bug fixes without maintaining third party
code - Encourage developers to adopt Trilinos practices
- Autotools CVS regression testing bug tracking
etc. - Regression testing
- Check for memory leaks
11Simplifying AX B Evaluation
- Solvers
- Platforms
- Matrices
- Features
- Our goal is to find the bugs before you do
12Getting started Building Umfpack
- Amesos User Guide http//software.sandia.gov/tri
linos/packages/amesos - Build UMFPACK
- Download from UMFPACK website
- Modify make.inc (see Trilinos3PL/config/UMFPACKv4
.1) - make Check output of example run
- Future Work
- autotool UMFPACK
- Trilinos/packages/UMFPACK ?
- -lumfpack?
13Getting started Building Amesos_Umfpack
- Amesos User Guide
- http//software.sandia.gov/trilinos/packages/ameso
s - Build Amesos_Umfpack
- ./configure enable-amesos enable-amesos-umfpack
with-trilinos3PLdir/home/userid/Trilinos3PL - make
- cd amesos/test source AmesosUmfpackShort.exe
14Getting started Calling Amesos_Umfpack
- Epetra_CrsMatrix A
- Epetra_Vector x, b
- AMESOSParameterList ParamList
- Epetra_LinearProblem Problem( A, x, b)
- Amesos_Umfpack A_direct( Problem, ParamList )
A_direct.SymbolicFactorization( ) - A_direct.NumericFactorization( )
- A_direct.Solve( )
- Future Work Factory Method, TrilinosParameter
List
15Amesos options
- Same structure different data
- Multiple solves
- Blocked right hand sides
- Parameter control
- Different solver
- Matrix format
16Amesos options Same Structure Different Data
- Epetra_LinearProblem Problem( A, x, b)
- Amesos_Umfpack A_direct( Problem, ParamList )
A_direct.SymbolicFactorization( ) - for ( )
- // Modifications to the non-zero values of A
- A_direct.NumericFactorization( )
- A_direct.Solve( )
-
17Amesos options Multiple Solves
- Epetra_LinearProblem Problem( A)
- Amesos_Umfpack A_direct( Problem, ParamList )
A_direct.SymbolicFactorization( ) - A_direct.NumericFactorization( )
- for ( )
- Problem.SetLHS(x)
- Problem.SetRHS(b)
- A_direct.Solve( )
-
18Amesos Options Blocked right hand sides
- Epetra_CrsMatrix A
- Epetra_MultiVector x, b
- AMESOSParameterList ParamList
- Epetra_LinearProblem Problem( A, x, b)
- Amesos_Umfpack A_direct( Problem, ParamList )
A_direct.SymbolicFactorization( ) - A_direct.NumericFactorization( )
- A_direct.Solve( )
19Amesos Options Parameter control
- Epetra_LinearProblem Problem( A, x, b)
- Amesos_Umfpack A_direct( Problem, ParamList )
A_direct.SymbolicFactorization( ) - ParamList.SetParam( UmfpackOrder, 2 )
- for ( )
- // Modifications to the non-zero values of A
- A_direct.NumericFactorization( )
- A_direct.Solve( )
-
20Amesos Options Matrix format
- Interface accepts any Epetra_RowMatrix
- Current implementation accepts any
Epetra_CrsMatrix
21Other Amesos Interfaces
- Klu Serial, unblocked, for circuit matrices
- SuperLUdist Distributed limited Amesos
release - MUMPS Distributed F90 limited Amesos release
- DSCPACK Distributed Symmetric
- Use distributed code for problems
- that are too large to solve on one processor
-or- - take more than one minute to factor
- Others WSMP, Benner, Ksparse, Ng
22Status
- Nightly testing on four platforms
- Atlantis/IRIX,
- Stratus/OSF,
- Herouxsmp/Linux,
- Paunchy/SunOS
- Full support for three packages Amesos_Umfpack,
Amesos_Klu and Amesos_Dscpack - Other packages Epetra_SLU, SuperludistOO,
Amesos_Mumps, Amesos_Superludist - One example code example/AmesosDscpack
23Future Work
- Capabilities
- Ease of use
- Single point of contact
24Future Work - Capabilities
- Amesos_Superludist
- Amesos_Mumps, Amesos_SuperLU, Amesos_Ksparse,
Amesos_Benner, Amesos_Ng, Amesos_Wsmp - Expose capabilities to users
- Support transpose for all solvers
- Support row matrix interface
- Support Epetra_VbrMatrix in DSCPACK
- Extra precision iterative refinement
25Future Work Ease of use
- Examples (TSF extended TSF core etc.)
- Pre-built libraries? (-lamesos, -lumfpack,
-lsuperludist) - Autotools use by third party developers
- Factory Method
26Future Work Single point of contact
- Encourage developers to adopt Trilinos practices
- Autotools CVS regression testing bug tracking
nightly testing etc. - Trilinos package?
- Isolate, report bugs, follow-up
- Migration to latest revisions
- Add testing based on the Amesos_BaseSolver class
- More features
- More matrices
- Parameter control
- Test error conditions
27Discussion
- Your needs?
- Platforms
- Packages
- Features
- Interface
28Amesos Value Added
- Simple, consistent interface
- Short learning curve
- Easy to switch solvers
- Interface to third party developers
- Evaluation
- Bug workarounds
29Summary
- Amesos is driven by your needs
- Tell me what you need
- Give me your matrices
- Simple, consistent interface
- Start with Amesos_Umfpack
- Switch to parallel codes for large matrices
- Matrices that dont fit in memory
- Factorizations that take over a minute
- Experiment with different solvers