PMRRR¶
Rather than directly using Petschow and Bientinesi’s parallel implementation of the Multiple Relatively Robust Representations (MRRR) algorithm, several simplified interfaces have been exposed.
The prototypes can be found in include/elemental/core/imports/pmrrr.hpp, while the implementations are in the folder external/pmrrr/.
Data structures¶
- type struct pmrrr::Estimate¶
For returning upper bounds on the number of local and global eigenvalues with eigenvalues lying in the specified interval, \((a,b]\).
- int numLocalEigenvalues¶
The upper bound on the number of eigenvalues in the specified interval that our process stores locally.
- int numGlobalEigenvalues¶
The upper bound on the number of eigenvalues in the specified interval.
- type struct pmrrr::Info¶
For returning information about the computed eigenvalues.
- int numLocalEigenvalues¶
The number of computed eigenvalues that our process locally stores.
- int numGlobalEigenvalues¶
The number of computed eigenvalues.
- int firstLocalEigenvalue¶
The index of the first eigenvalue stored locally on our process.
Compute all eigenvalues¶
- pmrrr::Info pmrrr::Eig(int n, double* d, double* e, double* w, mpi::Comm comm)¶
Compute all of the eigenvalues of the real symmetric tridiagonal matrix with diagonal d and subdiagonal e: the eigenvalues will be stored in w and the work will be divided among the processors in comm.
- pmrrr::Info pmrrr::Eig(int n, double* d, double* e, double* w, double* Z, int ldz, mpi::Comm comm)¶
Same as above, but also compute the corresponding eigenvectors.
Compute eigenvalues within interval¶
- pmrrr::Info pmrrr::Eig(int n, double* d, double* e, double* w, mpi::Comm comm, double a, double b)¶
Only compute the eigenvalues lying within the interval \((a,b]\).
- pmrrr::Info pmrrr::Eig(int n, double* d, double* e, double* w, double* Z, int ldz, mpi::Comm comm, double a, double b)¶
Same as above, but also compute the corresponding eigenvectors.
- pmrrr::Estimate pmrrr::EigEstimate(int n, double* d, double* w, mpi::Comm comm, double a, double b)¶
Return upper bounds on the number of local and global eigenvalues lying within the specified interval.
Compute eigenvalues in index range¶
- pmrrr::Info pmrrr::Eig(int n, double* d, double* e, double* w, mpi::Comm comm, int a, int b)¶
Only compute the eigenvalues with indices ranging from a to b, where \(0 \le a \le b < n\).
- pmrrr::Info pmrrr::Eig(int n, double* d, double* e, double* w, double* Z, int ldz, mpi::Comm comm, int a, int b)¶
Same as above, but also compute the corresponding eigenvectors.