|
Stratimikos Package Browser (Single Doxygen Collection)
Version of the Day
|
Stub adaptor from Thyra::MultiVectorBase to TSQR. More...
#include <Thyra_TsqrAdaptor.hpp>

Public Types | |
| typedef Thyra::MultiVectorBase < Scalar > | MV |
| typedef Scalar | scalar_type |
| typedef int | ordinal_type |
| typedef KokkosClassic::SerialNode | node_type |
| typedef Teuchos::SerialDenseMatrix < ordinal_type, scalar_type > | dense_matrix_type |
| typedef Teuchos::ScalarTraits < scalar_type >::magnitudeType | magnitude_type |
Public Member Functions | |
| TsqrAdaptor (const Teuchos::RCP< Teuchos::ParameterList > &plist) | |
| Constructor (that accepts a parameter list). | |
| TsqrAdaptor () | |
| Constructor (that uses default parameters). | |
| Teuchos::RCP< const Teuchos::ParameterList > | getValidParameters () const |
| void | setParameterList (const Teuchos::RCP< Teuchos::ParameterList > &plist) |
| void | factorExplicit (MV &A, MV &Q, dense_matrix_type &R, const bool forceNonnegativeDiagonal=false) |
| Compute QR factorization [Q,R] = qr(A,0). | |
| int | revealRank (MV &Q, dense_matrix_type &R, const magnitude_type &tol) |
| Rank-revealing decomposition. | |
Private Types | |
| typedef TSQR::NodeTsqrFactory < node_type, scalar_type, ordinal_type > | node_tsqr_factory_type |
| typedef node_tsqr_factory_type::node_tsqr_type | node_tsqr_type |
| typedef TSQR::DistTsqr < ordinal_type, scalar_type > | dist_tsqr_type |
| typedef TSQR::Tsqr < ordinal_type, scalar_type, node_tsqr_type > | tsqr_type |
Private Member Functions | |
| void | prepareNodeTsqr (const MV &X) |
| Finish intranode TSQR initialization. | |
| void | prepareDistTsqr (const MV &X) |
| Finish internode TSQR initialization. | |
| void | prepareTsqr (const MV &X) |
| Finish TSQR initialization. | |
| KokkosClassic::MultiVector < scalar_type, node_type > | getNonConstView (MV &X) |
| Extract a nonconstant view of X's data. | |
Static Private Member Functions | |
| static Teuchos::RCP< const Teuchos::Comm< int > > | getComm (const MV &X) |
| Attempt to get a communicator out of the given multivector. | |
Private Attributes | |
| Teuchos::RCP< node_type > | node_ |
| Kokkos Node instance. | |
| Teuchos::RCP< node_tsqr_type > | nodeTsqr_ |
| The intranode TSQR implementation instance. | |
| Teuchos::RCP< dist_tsqr_type > | distTsqr_ |
| The internode TSQR implementation instance. | |
| Teuchos::RCP< tsqr_type > | tsqr_ |
| The (full) TSQR implementation instance. | |
| Teuchos::RCP< const Teuchos::ParameterList > | defaultParams_ |
Default parameter list. Initialized by getValidParameters(). | |
| bool | ready_ |
| Whether TSQR has been fully initialized. | |
Stub adaptor from Thyra::MultiVectorBase to TSQR.
TSQR (Tall Skinny QR factorization) is an orthogonalization kernel that is as accurate as Householder QR, yet requires only
messages between $P$ MPI processes, independently of the number of columns in the multivector.
TSQR works independently of the particular multivector implementation, and interfaces to the latter via an adaptor class. This class is the adaptor class for MultiVectorBase. It templates on the MultiVector (MV) type so that it can pick up that class' typedefs. In particular, TSQR chooses its intranode implementation based on the Kokkos Node type of the multivector.
Definition at line 96 of file Thyra_TsqrAdaptor.hpp.
| typedef Thyra::MultiVectorBase<Scalar> Thyra::TsqrAdaptor< Scalar >::MV |
Definition at line 98 of file Thyra_TsqrAdaptor.hpp.
| typedef Scalar Thyra::TsqrAdaptor< Scalar >::scalar_type |
Definition at line 99 of file Thyra_TsqrAdaptor.hpp.
| typedef int Thyra::TsqrAdaptor< Scalar >::ordinal_type |
Definition at line 100 of file Thyra_TsqrAdaptor.hpp.
| typedef KokkosClassic::SerialNode Thyra::TsqrAdaptor< Scalar >::node_type |
Definition at line 101 of file Thyra_TsqrAdaptor.hpp.
| typedef Teuchos::SerialDenseMatrix<ordinal_type, scalar_type> Thyra::TsqrAdaptor< Scalar >::dense_matrix_type |
Definition at line 102 of file Thyra_TsqrAdaptor.hpp.
| typedef Teuchos::ScalarTraits<scalar_type>::magnitudeType Thyra::TsqrAdaptor< Scalar >::magnitude_type |
Definition at line 103 of file Thyra_TsqrAdaptor.hpp.
typedef TSQR::NodeTsqrFactory<node_type, scalar_type, ordinal_type> Thyra::TsqrAdaptor< Scalar >::node_tsqr_factory_type [private] |
Definition at line 106 of file Thyra_TsqrAdaptor.hpp.
typedef node_tsqr_factory_type::node_tsqr_type Thyra::TsqrAdaptor< Scalar >::node_tsqr_type [private] |
Definition at line 107 of file Thyra_TsqrAdaptor.hpp.
typedef TSQR::DistTsqr<ordinal_type, scalar_type> Thyra::TsqrAdaptor< Scalar >::dist_tsqr_type [private] |
Definition at line 108 of file Thyra_TsqrAdaptor.hpp.
typedef TSQR::Tsqr<ordinal_type, scalar_type, node_tsqr_type> Thyra::TsqrAdaptor< Scalar >::tsqr_type [private] |
Definition at line 109 of file Thyra_TsqrAdaptor.hpp.
| Thyra::TsqrAdaptor< Scalar >::TsqrAdaptor | ( | const Teuchos::RCP< Teuchos::ParameterList > & | plist | ) | [inline] |
Constructor (that accepts a parameter list).
| plist | [in] List of parameters for configuring TSQR. The specific parameter keys that are read depend on the TSQR implementation. For details, call getValidParameters() and examine the documentation embedded therein. |
Definition at line 118 of file Thyra_TsqrAdaptor.hpp.
| Thyra::TsqrAdaptor< Scalar >::TsqrAdaptor | ( | ) | [inline] |
Constructor (that uses default parameters).
Definition at line 128 of file Thyra_TsqrAdaptor.hpp.
| Teuchos::RCP<const Teuchos::ParameterList> Thyra::TsqrAdaptor< Scalar >::getValidParameters | ( | ) | const [inline, virtual] |
Reimplemented from Teuchos::ParameterListAcceptor.
Definition at line 138 of file Thyra_TsqrAdaptor.hpp.
| void Thyra::TsqrAdaptor< Scalar >::setParameterList | ( | const Teuchos::RCP< Teuchos::ParameterList > & | plist | ) | [inline, virtual] |
Implements Teuchos::ParameterListAcceptor.
Definition at line 155 of file Thyra_TsqrAdaptor.hpp.
| void Thyra::TsqrAdaptor< Scalar >::factorExplicit | ( | MV & | A, |
| MV & | Q, | ||
| dense_matrix_type & | R, | ||
| const bool | forceNonnegativeDiagonal = false |
||
| ) | [inline] |
Compute QR factorization [Q,R] = qr(A,0).
| A | [in/out] On input: the multivector to factor. Overwritten with garbage on output. |
| Q | [out] On output: the (explicitly stored) Q factor in the QR factorization of the (input) multivector A. |
| R | [out] On output: the R factor in the QR factorization of the (input) multivector A. |
| forceNonnegativeDiagonal | [in] If true, then (if necessary) do extra work (modifying both the Q and R factors) in order to force the R factor to have a nonnegative diagonal. |
Definition at line 192 of file Thyra_TsqrAdaptor.hpp.
| int Thyra::TsqrAdaptor< Scalar >::revealRank | ( | MV & | Q, |
| dense_matrix_type & | R, | ||
| const magnitude_type & | tol | ||
| ) | [inline] |
Rank-revealing decomposition.
Using the R factor and explicit Q factor from factorExplicit(), compute the singular value decomposition (SVD) of R (
). If R is full rank (with respect to the given relative tolerance tol), don't change Q or R. Otherwise, compute
and
in place (the latter may be no longer upper triangular).
| Q | [in/out] On input: explicit Q factor computed by factorExplicit(). (Must be an orthogonal resp. unitary matrix.) On output: If R is of full numerical rank with respect to the tolerance tol, Q is unmodified. Otherwise, Q is updated so that the first rank columns of Q are a basis for the column space of A (the original matrix whose QR factorization was computed by factorExplicit()). The remaining columns of Q are a basis for the null space of A. |
| R | [in/out] On input: ncols by ncols upper triangular matrix with leading dimension ldr >= ncols. On output: if input is full rank, R is unchanged on output. Otherwise, if is the SVD of R, on output R is overwritten with $ V^*$. This is also an ncols by ncols matrix, but may not necessarily be upper triangular. |
| tol | [in] Relative tolerance for computing the numerical rank of the matrix R. |
of R:
. Definition at line 237 of file Thyra_TsqrAdaptor.hpp.
| static Teuchos::RCP<const Teuchos::Comm<int> > Thyra::TsqrAdaptor< Scalar >::getComm | ( | const MV & | X | ) | [inline, static, private] |
Attempt to get a communicator out of the given multivector.
This only works if the multivector's range (VectorSpaceBase) is actually an SpmdVectorSpaceBase object, and if that object's Comm is either an MpiComm (in an MPI build) or a SerialComm (in either an MPI build or a no-MPI build).
If the attempt does not succeed, this method throws std::runtime_error. If it does succeed, it returns the (suitably wrapped) communicator.
Definition at line 282 of file Thyra_TsqrAdaptor.hpp.
| void Thyra::TsqrAdaptor< Scalar >::prepareNodeTsqr | ( | const MV & | X | ) | [inline, private] |
Finish intranode TSQR initialization.
Definition at line 351 of file Thyra_TsqrAdaptor.hpp.
| void Thyra::TsqrAdaptor< Scalar >::prepareDistTsqr | ( | const MV & | X | ) | [inline, private] |
Finish internode TSQR initialization.
| X | [in] A valid Thyra::MultiVectorBase instance whose communicator wrapper we will use to prepare TSQR. |
This method may fail if MV is not the right kind of multivector, that is, if it does not have a communicator or if we don't know how to extract a communicator from it. If it fails in this way, it will throw std::runtime_error.
Definition at line 373 of file Thyra_TsqrAdaptor.hpp.
| void Thyra::TsqrAdaptor< Scalar >::prepareTsqr | ( | const MV & | X | ) | [inline, private] |
Finish TSQR initialization.
The intranode and internode TSQR implementations both have a two-stage initialization procedure: first, setting parameters (which may happen at construction), and second, getting information they need from the multivector input in order to finish initialization. For intranode TSQR, this may include the Kokkos Node instance; for internode TSQR, this includes the communicator. The second stage of initialization happens in this class' computational routines; all of those routines accept one or more multivector inputs, which this method can use for finishing initialization. Thus, users of this class never need to see the two-stage initialization.
| X | [in] Multivector object, used only to access the underlying communicator object (in this case, the Teuchos::Comm<int>) and (possibly) the Kokkos Node instance. All multivector objects used with this adapter must have the same communicator and Kokkos Node instance (if applicable). |
Definition at line 406 of file Thyra_TsqrAdaptor.hpp.
| KokkosClassic::MultiVector<scalar_type, node_type> Thyra::TsqrAdaptor< Scalar >::getNonConstView | ( | MV & | X | ) | [inline, private] |
Extract a nonconstant view of X's data.
TSQR represents the local (to each MPI process) part of a multivector as a KokkosClassic::MultiVector (KMV), which gives a nonconstant view of the original multivector's data. This class method tells TSQR how to get the KMV from the input multivector. The KMV is not a persistent view of the data; its scope is contained within the scope of the multivector.
Definition at line 428 of file Thyra_TsqrAdaptor.hpp.
Teuchos::RCP<node_type> Thyra::TsqrAdaptor< Scalar >::node_ [private] |
Kokkos Node instance.
Definition at line 254 of file Thyra_TsqrAdaptor.hpp.
Teuchos::RCP<node_tsqr_type> Thyra::TsqrAdaptor< Scalar >::nodeTsqr_ [private] |
The intranode TSQR implementation instance.
Definition at line 257 of file Thyra_TsqrAdaptor.hpp.
Teuchos::RCP<dist_tsqr_type> Thyra::TsqrAdaptor< Scalar >::distTsqr_ [private] |
The internode TSQR implementation instance.
Definition at line 260 of file Thyra_TsqrAdaptor.hpp.
Teuchos::RCP<tsqr_type> Thyra::TsqrAdaptor< Scalar >::tsqr_ [private] |
The (full) TSQR implementation instance.
Definition at line 263 of file Thyra_TsqrAdaptor.hpp.
Teuchos::RCP<const Teuchos::ParameterList> Thyra::TsqrAdaptor< Scalar >::defaultParams_ [mutable, private] |
Default parameter list. Initialized by getValidParameters().
Definition at line 266 of file Thyra_TsqrAdaptor.hpp.
bool Thyra::TsqrAdaptor< Scalar >::ready_ [private] |
Whether TSQR has been fully initialized.
Definition at line 269 of file Thyra_TsqrAdaptor.hpp.
1.7.6.1