Collaboration diagram for Thyra Operator/Vector Base Support Subclasses for SPMD Thyra Implementations:
Classes | |
class | Thyra::SpmdLinearOpBase< Scalar > |
Base subclass for simplistic SPMD linear operators. More... | |
class | Thyra::SpmdMultiVectorBase< Scalar > |
Base class for SPMD multi-vectors. More... | |
class | Thyra::SpmdVectorBase< Scalar > |
Base class for SPMD vectors that can provide views of contiguous elements in a process. More... | |
class | Thyra::SpmdVectorSpaceDefaultBase< Scalar > |
Base VectorSpaceBase class for all SPMD vector spaces with contiguous local-to-global indexing. More... |
The UML class diagram below shows the subclasses described here:
Support base subclasses for SPMD distributed-memory Thyra implementations (Note: above graphic is not hyperlinked!)
Thyra::SpmdVectorSpaceDefaultBase
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::SpmdVectorBase
is a base subclass for SPMD Thyra::VectorBase
objects. This class defines concrete implementations for the Thyra::VectorBase
virtual functions applyOp()
, acquireDetachedView() const
, releaseDetachedView() const
, acquireDetachedView()
and commitDetachedView()
. These functions are implemented given explicit access to local processor elements as returned by the getLocalData()
functions overridden in a subclass object.
Thyra::SpmdMultiVectorBase
is a base subclass for SPMD Thyra::MultiVectorBase
objects. This class defines concrete implementations for the Thyra::MultiVectorBase
virtual functions applyOp()
, acquireDetachedView() const
, releaseDetachedView() const
, acquireDetachedView()
and commitDetachedView()
. 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::SpmdMultiVectorBase::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 SPMD multi-vector.
One of the big advantages of deriving concrete 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::SpmdLinearOpBase
is a general base subclass for Serial and SPMD platforms that only requires concrete subclass implementations to override one function that accepts explicit local vector or multi-vector data.