280 likes | 426 Vues
This presentation led by Ken Stanley will explore the Amesos interfaces designed to simplify the resolution of linear systems in the form (AX = B). It covers background information, how to get started with Amesos_Umfpack, available options, and other interfaces. Challenges such as varying solver performance and the need for consistent software interfaces will be discussed. We will also touch on future work and improvement plans, concluding with a summary of key points and user experiences within the Sandia community.
E N D
AmesosInterfaces to sparse direct solvers October 15, 2003 8:30 – 9:30 a.m. Ken Stanley
Overview • Background • Simplifying AX = B • Getting started: Amesos_Umfpack • Amesos options • Other Amesos interfaces • Status • Future Work and Discussion • Summary
Background • Solvers • Sandia Users • Challenges
Background - Solvers • PSPACES [Gupta]; f90; mpi; SPD; unsupported • WSSMP [Gupta]; binary; mpi; general; • WGSMP [Gupta]; binary; mpi; SPD • SPOOLES [Ashcraft];public domain;c; unsupported • SuperLU [Li,Demmel];serial;c;general • UMFPACK [Davis];serial;c;general;robust • Unnamed [Ng];parallel;f77;SPD; • MUMPS [Amestoy];f90;general/SPD; • Ksparse [Kundert]; • SNL_MPFRONT [Benner];parallel • OTHERS: y12M, Boeing, MA57, MA43, DPSLDLT, DPSLDU, PARDISO, Shen, Dearholt, SPLU, Lusol, LUSOL, XYT
Background – Sandia Users • Tuminaro – ML, etc. • Shadid – MP Salsa • Williams – Sierra • Hoekstra – Xyce • Pierson – • Dohrman – • Schultz - GOMA • Many – Aztec • Many more
Background - 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
Simplifying AX = B • Example • Clean, consistent interface • Single point of contact • Evaluation
Simplifying AX = BExample Epetra_LinearProblem Problem( A, x, b); Amesos_Umfpack A_direct( Problem, ParamList ) ; A_direct.SymbolicFactorization( ) ; A_direct.NumericFactorization( ) ; A_direct.Solve( ) ;
Simplifying 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
Simplifying AX = B Evaluation • Solvers • Platforms • Matrices • Features • Our goal is to find the bugs before you do
Getting started: Building Umfpack • Amesos User Guide: http://software.sandia.gov/trilinos/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?
Getting started: Building Amesos_Umfpack • Amesos User Guide: http://software.sandia.gov/trilinos/packages/amesos • Build Amesos_Umfpack • “./configure –enable-amesos –enable-amesos-umfpack –with-trilinos3PLdir=/home/userid/Trilinos3PL” • “make” • “cd amesos/test; source AmesosUmfpackShort.exe”
Getting started: Calling Amesos_Umfpack Epetra_CrsMatrix A; Epetra_Vector x, b; AMESOS::Parameter::List 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, Trilinos::Parameter::List
Amesos options • Same structure different data • Multiple solves • Blocked right hand sides • Parameter control • Different solver • Matrix format
Amesos 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( ) ; }
Amesos 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( ) ; }
Amesos Options: Blocked right hand sides Epetra_CrsMatrix A; Epetra_MultiVector x, b; AMESOS::Parameter::List ParamList ; Epetra_LinearProblem Problem( A, x, b); Amesos_Umfpack A_direct( Problem, ParamList ) ; A_direct.SymbolicFactorization( ) ; A_direct.NumericFactorization( ) ; A_direct.Solve( ) ;
Amesos Options: Parameter control Epetra_LinearProblem Problem( A, x, b); Amesos_UmfpackA_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( ) ; }
Amesos Options: Matrix format • Interface accepts any Epetra_RowMatrix • Current implementation accepts any Epetra_CrsMatrix
Other 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
Status • 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
Future Work • Capabilities • Ease of use • Single point of contact
Future 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
Future Work – Ease of use • Examples (TSF extended; TSF core; etc.) • Pre-built libraries? (-lamesos, -lumfpack, -lsuperludist) • Autotools use by third party developers • Factory Method
Future 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
Discussion • Your needs? • Platforms • Packages • Features • Interface
Amesos Value Added • Simple, consistent interface • Short learning curve • Easy to switch solvers • Interface to third party developers • Evaluation • Bug workarounds
Summary • 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 don’t fit in memory • Factorizations that take over a minute • Experiment with different solvers