Classes | |
| class | Thyra::MPILinearOpBase< Scalar > |
| Base subclass for simplistic MPI SPMD linear operators. More... | |
| class | Thyra::MPIMultiVectorBase< Scalar > |
| Base class for MPI-based SPMD multi-vectors. More... | |
| class | Thyra::MPIVectorBase< Scalar > |
| Base class for MPI-based SPMD vectors. More... | |
| class | Thyra::MPIVectorSpaceBase< Scalar > |
Base VectorSpaceBase class for all MPI-based vector spaces with contiguous local storage. More... | |
| class | Thyra::MultiVectorSerialization< Scalar > |
| Concrete utility class for reading and writing MPI-based SPMD MultiVectorBase objects to and from standard streams. More... | |
The UML class diagram below shows the subclasses described here:
Support base subclasses for MPI SPMD distributed-memory Thyra implementations (Note: above graphic is not hyperlinked!)
Thyra::MPIVectorSpaceBase abstracts the the types of SPMD distributed-memory data distributions supported by these base subclasses. This vector space base class assumes a unique partitioning of vector and multi-vector elements to a set of processors where there exists no ghost elements.
Thyra::MPIVectorBase is a base subclass for MPI-based SPMD Thyra::VectorBase objects. This class defines concrete implementations for the Thyra::VectorBase virtual functions applyOp(), getSubVector() const, freeSubVector() const, getSubVector() and commitSubVector(). These functions are implemented given explicit access to local processor elements as returned by the getLocalData() functions overridden in a subclass object.
Thyra::MPIMultiVectorBase is a base subclass for MPI-based SPMD Thyra::MultiVectorBase objects. This class defines concrete implementations for the Thyra::MultiVectorBase virtual functions applyOp(), getSubMultiVector() const, freeSubMultiVector() const, getSubMultiVector() and commitSubMultiVector(). These functions are implemented given explicit access to local processor elements as returned by the getLocalData() functions overridden in a subclass object. In addition, this subclass derives from Thyra::EuclideanLinearOpBase so that any application-specific scalar product is automatically supported. The multi-vector version of Thyra::MPIMultiVectorBase::euclideanApply() is implemented by calling Teuchos::BLAS::GEMM() on each local processor to access level-3 BLAS. Therefore, if Teuchos is configured to link to optimized BLAS then this base subclass will provided a near optimal implementation of a MPI SPMD multi-vector.
One of the big advantages of deriving concrete MPI-based SPMD implementations from these base subclasses is that they provide automatic interoperability between different concrete subclasses. This type of automatic interoperability is demonstrated in ???this testing program???.
Thyra::MPILinearOpBase is a general base subclass for MPI SPMD platforms that only requires concrete subclass implementations to override one function that accepts explicit local vector data.
1.3.9.1