Interface for Eigenvalue Methods
Lawrence Berkeley National Laboratory
Outline
- Review eigenvalue methods
- Explore possible alternatives
Types of Eigenvalue Problems
- Polynomial: -Ax+lB1x+l2B2x+…=0
Types of Methods
- QR based methods (direct methods)
- Need to access the elements of the matrix
- O(n2) space complexity
- O(n3) time complexity
- Projection based methods (iterative)
- Access matrix through MATVEC
- Problem dependent space and time need
Existing Software
- LANSO, LASO, LANZ, LANCZOS …
Specifying an Eigenvalue Problem
- Matrices: A, B, A-1, (A-sB)-1B, B-1A
- Type of eigenvalues: largest, smallest, around a center, in a range
- Are eigenvectors needed as well
Specifying an Eigenvalue Problem -- Computing Issues
- Representations of matrices, eigenvalues and eigenvectors
- Interface to MATVEC and preconditioner
- Accuracy (reliability) requirement
Case Study I -- LAPACK
SSYEVX(JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, LWORK, IWORK, IFAIL, INFO)
- Representing matrices as arrays (1-D)
- User must set all options
Case Study II -- ARPACK
DNAUPD(COMM, IDO, BMAT, N, WHICH, NEV, TOL, RESID, NCV, V, LDV, IPARAM, IPNTR, WORKD, WORKL, LWORKL, INFO)
- Implicitly restarted Arnoldi method
- Reverse communication for MATVEC
- Arguments are arrays (1-D)
Case Study III -- TRLAN
TRLAN(OP, INFO, NROW, MEV, EVAL, EVEC, LDE)
- thick-restart Lanczos method
- MATVEC (OP) has a prescribed interface
- eigenvalues/eigenvectors are arrays
- use Fortran 90 TYPE (INFO) to store controlling parameters
Case Study IV -- ARPACK++
Nconv = areig(EigValR, EigValI, EigVec, n, nnz, A, inrow, pcol, nev);
- Simple data structures for matrix, eigenvalues and eigenvectors
Case Study V -- RogueWave
- Solution stored in eig object
- Eig.eigenValues() for eigenvalues
Two Basic Strategies
- Closer to traditional libraries
- Explicit arguments for eigenvalue and eigenvector
- May be an interface of a matrix class
- Contains functions to output eigenvalues, etc
- Decomposition is an object
Basic Data Elements
- Eigenvalue and eigenvector are function arguments
- Controlling parameters are function arguments
- Eigenvalue and eigenvector stored internally
- Controlling parameters set by member function
Interaction With Other Components
- Reverse communication or function pointer or direct access to the matrices
- Function pointer (functor) or direct access to matrices
- External functions must use prescribed interface
Feature Comparison
Eigenvalue Class always has a decompose
function, but it may not be public
Relation With Equation Solvers
- Share the same basic elements: vector, multi-vector, matrices
- Share the same external/user-supplied functions: MATVEC, preconditioner
- Eigenvalue solver may use equation solver
Relation With Existing Software
- Existing matrix libraries may be used to specify basic data elements
- Existing Fortran/C libraries may be used to perform the actual computations
- Should make it easy to interact with existing frameworks, e.G., POOMA
Future Work
- Reviewing other OO eigenvalue software
- Concrete interface specification
- Data structure of the basic elements
- Interface of MATVEC and preconditioner