+ All Categories
Home > Documents > Next Generation Iterative Solvers: Belos & Anasazi Next Generation Iterative Solvers: Belos &...

Next Generation Iterative Solvers: Belos & Anasazi Next Generation Iterative Solvers: Belos &...

Date post: 18-Dec-2015
Category:
Upload: poppy-arnold
View: 218 times
Download: 0 times
Share this document with a friend
Popular Tags:
25
Next Generation Iterative Next Generation Iterative Solvers: Belos & Anasazi Solvers: Belos & Anasazi November 3 rd , 9:30-10:30am Mike Heroux Ulrich Hetmaniuk Rich Lehoucq Heidi Thornquist Sandia is a multiprogram laboratory operated by Sandia Corporation, a Lockheed Martin Company, for the United States Department of Energy under contract DE-AC04-94AL85000.
Transcript
Page 1: Next Generation Iterative Solvers: Belos & Anasazi Next Generation Iterative Solvers: Belos & Anasazi November 3 rd, 9:30-10:30am Mike Heroux Ulrich Hetmaniuk.

Next Generation Iterative Next Generation Iterative Solvers: Belos & AnasaziSolvers: Belos & Anasazi

November 3rd, 9:30-10:30am

Mike HerouxUlrich Hetmaniuk

Rich LehoucqHeidi Thornquist

Sandia is a multiprogram laboratory operated by Sandia Corporation, a Lockheed Martin Company,for the United States Department of Energy under contract DE-AC04-94AL85000.

Page 2: Next Generation Iterative Solvers: Belos & Anasazi Next Generation Iterative Solvers: Belos & Anasazi November 3 rd, 9:30-10:30am Mike Heroux Ulrich Hetmaniuk.

OutlineOutline

Background AztecOO and ARPACK SLEPc

Iterative solver design requirements Generic programming

Belos and Anasazi What’s in Trilinos 4.0 Current Interfaces Future Development

Concluding remarks

Page 3: Next Generation Iterative Solvers: Belos & Anasazi Next Generation Iterative Solvers: Belos & Anasazi November 3 rd, 9:30-10:30am Mike Heroux Ulrich Hetmaniuk.

BackgroundBackground

Several iterative linear solver / eigensolver libraries exist: PETSc, SLAP, LINSOL, Aztec(OO), … SLEPc, LOBPCG (hypre), ARPACK, …

None are (completely) written in C++ None of the linear solver libraries can efficiently deal

with multiple right-hand sides Stopping criteria are predetermined for most libraries The underlying linear algebra is static

Page 4: Next Generation Iterative Solvers: Belos & Anasazi Next Generation Iterative Solvers: Belos & Anasazi November 3 rd, 9:30-10:30am Mike Heroux Ulrich Hetmaniuk.

AztecOO Linear Solver LibraryAztecOO Linear Solver Library

A C++ wrapper around Aztec library written in C. Algorithms: GMRES, CG, CGS, BiCGSTAB,

TFQMR. Offers status testing capabilities. Output verbosity level can be determined by user. Uses Epetra to perform underlying vector space

operations. Interface to matrix-vector product is defined by the

user through the Epetra_Operator.

Page 5: Next Generation Iterative Solvers: Belos & Anasazi Next Generation Iterative Solvers: Belos & Anasazi November 3 rd, 9:30-10:30am Mike Heroux Ulrich Hetmaniuk.

ARnoldi PACKage (ARPACK)ARnoldi PACKage (ARPACK)

Written in Fortran 77. Algorithms: Implicitly Restarted Arnoldi/Lanczos Static convergence tests. Output formatting, verbosity level is determined by

user. Uses LAPACK/BLAS to perform underlying vector

space operations. Offers abstract interface to matrix-vector products

through reverse communication.

Page 6: Next Generation Iterative Solvers: Belos & Anasazi Next Generation Iterative Solvers: Belos & Anasazi November 3 rd, 9:30-10:30am Mike Heroux Ulrich Hetmaniuk.

Scalable Library for Eigenvalue Problem Scalable Library for Eigenvalue Problem ComputationsComputations ( SLEPc )( SLEPc )

Written in C (Hernández, Román, and Vidal, 2003). Provides some basic eigensolvers as well as wrappers around:

ARPACK (Lehoucq, Maschhoff, Sorensen, and Yang, 1998)

BLZPACK (Marques, 1995) PLANSO (Wu and Simon 1997) TRLAN (Wu and Simon, 2001)

Native Algorithms: Power/Subspace Iteration, RQI, Arnoldi Wrapped Algorithms: IRAM/IRLM (ARPACK), Block Lanczos

(BLZPACK), and Lanczos (PLANSO / TRLAN) Static convergence tests. Uses PETSc to perform underlying vector space operations,

matrix-vector products, and linear solves. Allows the creation / registration of new matrix-vector products.

Page 7: Next Generation Iterative Solvers: Belos & Anasazi Next Generation Iterative Solvers: Belos & Anasazi November 3 rd, 9:30-10:30am Mike Heroux Ulrich Hetmaniuk.

Why not create a solver library that:1. Provides an abstract interface to an operator-vector

products, scaling, and preconditioning.

2. Allows the user to enlist any linear algebra package for the elementary vector space operations essential to the algorithm. (Epetra, PETSc, etc.)

3. Allows the user to define convergence of any algorithm (a.k.a. status testing).

4. Allows the user to determine the verbosity level, formatting, and processor for the output.

Linear/Eigensolver Software DesignLinear/Eigensolver Software Design

Page 8: Next Generation Iterative Solvers: Belos & Anasazi Next Generation Iterative Solvers: Belos & Anasazi November 3 rd, 9:30-10:30am Mike Heroux Ulrich Hetmaniuk.

AlgorithmA( … )while ( myStatusTest.CheckStatus(…)

== Unconverged ) … … % Compute operator-vector product myProblem.ApplyOp(NOTRANS,v,w); = w.dot(v); …

endmyOM.print(something);

return (solution);end

Generic Iterative MethodGeneric Iterative MethodStatus Test

Generic OperatorInterface

Generic LinearAlgebra Interface Output Manager

Linear/Eigen Problem

Page 9: Next Generation Iterative Solvers: Belos & Anasazi Next Generation Iterative Solvers: Belos & Anasazi November 3 rd, 9:30-10:30am Mike Heroux Ulrich Hetmaniuk.

Benefits of Generic ProgrammingBenefits of Generic Programming

1) Generic programming techniques ease the implementation of complex algorithms.

2) Developing algorithms with generic programming techniques is easier on the developer, while still allowing them to build a flexible and powerful software package.

3) Generic programming techniques also allow the user to leverage their existing software investment.

Caveat: It’s not as easy as taking a piece of code and adding:

template <typename OT, typename ST>

More work has to be done to handle “numeric traits”

Page 10: Next Generation Iterative Solvers: Belos & Anasazi Next Generation Iterative Solvers: Belos & Anasazi November 3 rd, 9:30-10:30am Mike Heroux Ulrich Hetmaniuk.

Teuchos Numeric TraitsTeuchos Numeric Traits

OrdinalTraits zero & one int & long int

ScalarTraits zero, one, magnitude type, absolute value, conjugate,

square root, random number generator, … std::numeric_limits float, double, complex<float>, and complex<double>

Arbitrary precision arithmetic Templated BLAS/LAPACK wrappers, serial dense matrix/vector

Generic programming technique that uses templated interfaces to define the

standard behavior of datatypes.

Page 11: Next Generation Iterative Solvers: Belos & Anasazi Next Generation Iterative Solvers: Belos & Anasazi November 3 rd, 9:30-10:30am Mike Heroux Ulrich Hetmaniuk.

Teuchos Templated BLAS ExampleTeuchos Templated BLAS Exampletemplate<typename OrdinalType, typename ScalarType> ScalarType BLAS<OrdinalType, ScalarType>::NRM2( const OrdinalType n,

const ScalarType* x, const OrdinalType incx) const

{ OrdinalType izero = OrdinalTraits<OrdinalType>::zero(); OrdinalType ione = OrdinalTraits<OrdinalType>::one(); ScalarType result = ScalarTraits<ScalarType>::zero(); OrdinalType i, ix = izero; if ( n > izero ) { // Set the initial index. if (incx < izero) { ix = (-n+ione)*incx; }

for(i = izero; i < n; i++) { result += ScalarTraits<ScalarType>::conjugate(x[ix]) * x[ix]; ix += incx; } result = ScalarTraits<ScalarType>::squareroot(result); } return result; } /* end NRM2 */

double DNRM2( const int n, const double* x, const int incx) const { int i, ix = 0; double result 0.0; if ( n > 0 ) { // Set the initial index. if (incx < 0) { ix = (-n+1)*incx; }

for(i = 0; i < n; ++i) { result += x[ix] * x[ix]; ix += incx; } result = std::sqrt(result); } return result; } /* end NRM2 */

Page 12: Next Generation Iterative Solvers: Belos & Anasazi Next Generation Iterative Solvers: Belos & Anasazi November 3 rd, 9:30-10:30am Mike Heroux Ulrich Hetmaniuk.

New Packages: Belos and AnasaziNew Packages: Belos and Anasazi

Next generation linear solvers (Belos) and eigensolvers (Anasazi) libraries, written in templated C++.

Provide a generic interface to a collection of algorithms for solving large-scale linear problems and eigenproblems.

Algorithm implementation is accomplished through the use of abstract base classes (mini interface). Interfaces are derived from these base classes to operator-vector products, status tests, and any arbitrary linear algebra library.

Includes block linear solvers and eigensolvers. Release Dates:

Internal (SNL): May 2004 External (Public): March 2005

Page 13: Next Generation Iterative Solvers: Belos & Anasazi Next Generation Iterative Solvers: Belos & Anasazi November 3 rd, 9:30-10:30am Mike Heroux Ulrich Hetmaniuk.

Why are Block Solvers Useful?Why are Block Solvers Useful?

Block Solvers ( in general ): Achieve better performance for operator-vector products.

Block Eigensolvers ( Op(A)X = X ):

Block Linear Solvers ( Op(A)X = B ):

Reliably determine multiple and/or clustered eigenvalues. Example applications: Modal analysis, stability analysis,

bifurcation analysis (LOCA)

Useful for when multiple solutions are required for the same system of equations. Example applications:

• Perturbation analysis

• Optimization problems• Single right-hand sides where A has a handful of small eigenvalues• Inner-iteration of block eigensolvers

Page 14: Next Generation Iterative Solvers: Belos & Anasazi Next Generation Iterative Solvers: Belos & Anasazi November 3 rd, 9:30-10:30am Mike Heroux Ulrich Hetmaniuk.

Belos/Anasazi StatusBelos/Anasazi Status(Trilinos Release 4.0)(Trilinos Release 4.0)

Belos: Solvers: BlockCG and BlockGMRES Linear algebra adapters for Epetra and NOX/LOCA Belos::EpetraOperator allows for integration into other codes Epetra interface accepts Epetra_Operators, so can be used with

ML, AztecOO, Ifpack, Belos, etc… Block size is independent of number of right-hand sides

Anasazi: Solvers: Block Krylov-Schur Method and Modal Analysis Solvers

(Davidson, Jacobi-Davidson, LOBPCG, etc…) Linear algebra adapters for Epetra and NOX/LOCA Can solve standard and generalized eigenproblems Epetra interface accepts Epetra_Operators, so can be used with

Belos, AztecOO, etc… Block size is independent of number of requested eigenvalues

Page 15: Next Generation Iterative Solvers: Belos & Anasazi Next Generation Iterative Solvers: Belos & Anasazi November 3 rd, 9:30-10:30am Mike Heroux Ulrich Hetmaniuk.

Belos/Anasazi DesignBelos/Anasazi Design

LinearSolver / Eigensolver Class LinearProblem / Eigenproblem Class Sorting and Orthogonalization Class StatusTest Class OutputManager Class Configurable via Teuchos::ParameterList Interface current Belos/Anasazi abstract linear

algebra classes with TSFCore abstract linear algebra classes.

Page 16: Next Generation Iterative Solvers: Belos & Anasazi Next Generation Iterative Solvers: Belos & Anasazi November 3 rd, 9:30-10:30am Mike Heroux Ulrich Hetmaniuk.

Belos/Anasazi Linear Algebra Interface Belos/Anasazi Linear Algebra Interface ( Mini-interface )( Mini-interface )

(Belos/Anasazi)::MultiVec Abstract interface to define the linear algebra required by

most iterative linear solvers / eigensolvers :• clone methods

• dot product

• update methods

• norms

• initialize / randomize

(Belos/Anasazi)::Operator Abstract interface to define the linear operator interface

required by most iterative linear solvers / eigensolvers :• apply methods

Page 17: Next Generation Iterative Solvers: Belos & Anasazi Next Generation Iterative Solvers: Belos & Anasazi November 3 rd, 9:30-10:30am Mike Heroux Ulrich Hetmaniuk.

Belos/Anasazi IterativeSolver InterfaceBelos/Anasazi IterativeSolver Interface

Provides an abstract interface to Belos/Anasazi basic iterations.

(Belos/Anasazi)::IterativeSolver number of iterations / restarts native residuals linear problem / eigenproblem initialize/finalize iterate

Specialization for solvers that can provide more information Block Krylov-Schur -> Ritz values / residuals

Page 18: Next Generation Iterative Solvers: Belos & Anasazi Next Generation Iterative Solvers: Belos & Anasazi November 3 rd, 9:30-10:30am Mike Heroux Ulrich Hetmaniuk.

Belos/Anasazi Linear/Eigenproblem Belos/Anasazi Linear/Eigenproblem InterfaceInterface

Provides an interface between the basic iterations and linear/eigenproblem to be solved.

Belos::LinearProblem Allows preconditioning, scaling, etc. to be removed from the

algorithm, performs composition apply. Preconditioner/scaling, operator, LHS/RHS, StatusTest Performs bookkeeping for solver

Anasazi::Eigenproblem Allows spectral transformations to be removed from the

algorithm. Differentiates between standard and generalized

eigenproblems Intial vector, stiffness/mass matrix, operator, eigenvalues,

eigenvectors

Page 19: Next Generation Iterative Solvers: Belos & Anasazi Next Generation Iterative Solvers: Belos & Anasazi November 3 rd, 9:30-10:30am Mike Heroux Ulrich Hetmaniuk.

Belos/Anasazi StatusTest InterfaceBelos/Anasazi StatusTest Interface

Similar to NOX / AztecOO. Allows user to decide when solver is finished. Multiple criterion can be logically connected. Abstract base class methods:

StatusType CheckStatus( IterativeSolver<Scalar>* solver ); StatusType GetStatus() const; void Reset(); ostream& Print( ostream& os ) const;

Derived classes Maximum iterations/restarts, Residual norm, Combinations {AND,OR}, …

Page 20: Next Generation Iterative Solvers: Belos & Anasazi Next Generation Iterative Solvers: Belos & Anasazi November 3 rd, 9:30-10:30am Mike Heroux Ulrich Hetmaniuk.

Belos/Anasazi Output Manager Belos/Anasazi Output Manager InterfaceInterface

Allows user to control which processor will handle output from the solver and the verbosity.

Default is lowest verbosity, outputting on proc 0. Methods:

Get/Set Methods: • void SetOStream( ostream& os );• void SetVerbosity( int vbLevel ); • ostream& GetOStream();

Query Methods: • bool doOutput( int vbLevel );

Page 21: Next Generation Iterative Solvers: Belos & Anasazi Next Generation Iterative Solvers: Belos & Anasazi November 3 rd, 9:30-10:30am Mike Heroux Ulrich Hetmaniuk.

Anasazi Sort Manager InterfaceAnasazi Sort Manager Interface

Abstract interface for managing the sorting of the eigenvalues computed by the eigensolver

Important tool to complement spectral transformations Only two methods:

ReturnType sort(IterativeSolver<Scalar>* solver, int n, TYPE *evals, int *perm=0);

ReturnType sort(IterativeSolver<Scalar>* solver, int n, TYPE *r_evals, TYPE *i_evals, int *perm=0);

Basic sorting types are provided largest/smallest magnitude, largest/smallest real part,

largest/smallest imaginary part

Page 22: Next Generation Iterative Solvers: Belos & Anasazi Next Generation Iterative Solvers: Belos & Anasazi November 3 rd, 9:30-10:30am Mike Heroux Ulrich Hetmaniuk.

How do the Interfaces Interoperate?How do the Interfaces Interoperate?(Anasazi)(Anasazi)

Anasazi::EigenproblemAnasazi::Eigenproblem

Anasazi::StatusTestAnasazi::StatusTest

Anasazi::IterativeSolverAnasazi::IterativeSolver

Anasazi::OutputManagerAnasazi::OutputManagerAnasazi::SortManagerAnasazi::SortManager

Anasazi::OperatorAnasazi::OperatorAnasazi::MultiVecAnasazi::MultiVec

Page 23: Next Generation Iterative Solvers: Belos & Anasazi Next Generation Iterative Solvers: Belos & Anasazi November 3 rd, 9:30-10:30am Mike Heroux Ulrich Hetmaniuk.

Projected Belos/Anasazi StatusProjected Belos/Anasazi Status(Trilinos Release 5.0)(Trilinos Release 5.0)

Belos: Solvers: CG, BlockCG, BlockGMRES, and BlockFGMRES Interfaces are defined for Epetra, NOX/LOCA, and TSFCore Configurable via a Teuchos::ParameterList

Anasazi: Solvers: Block Krylov-Schur Method and Modal Analysis

Solvers (Davidson, Jacobi-Davidson, LOBPCG, etc…) Interfaces are defined for Epetra, NOX/LOCA, and TSFCore Abstract interface to sorting and orthogonalization (???) Configurable via a Teuchos::ParameterList

Page 24: Next Generation Iterative Solvers: Belos & Anasazi Next Generation Iterative Solvers: Belos & Anasazi November 3 rd, 9:30-10:30am Mike Heroux Ulrich Hetmaniuk.

Future Anasazi/Belos DevelopmentFuture Anasazi/Belos Development

Belos Algorithms: FCG and BiCGSTAB GMRES not necessary Abstract orthogonalization class, user-determined Krylov

subspace breakdown Higher-level robust managers to orchestrate solvers

Anasazi Algorithms: Restarted Preconditioned Eigensolver (RPE),

Generalized Davidson Abstract orthogonalization class, user-determined Krylov

subspace breakdown Higher-level robust managers to orchestrate solvers

Page 25: Next Generation Iterative Solvers: Belos & Anasazi Next Generation Iterative Solvers: Belos & Anasazi November 3 rd, 9:30-10:30am Mike Heroux Ulrich Hetmaniuk.

Concluding RemarksConcluding Remarks(audience participation)(audience participation)

Are there any capabilities you may need from a linear/eigensolver that have not been addressed?

Do you have any questions, comments, or suggestions about the proposed user interface?

Are there any other solvers that you think would be useful?


Recommended