Thyra Version of the Day
Loading...
Searching...
No Matches
List of all members

Efficient concrete implementation subclass for SPMD multi-vectors. More...

#include <Thyra_DefaultSpmdMultiVector_decl.hpp>

Inheritance diagram for Thyra::DefaultSpmdMultiVector< Scalar >:
Inheritance graph
[legend]

Overridden protected functions from SpmdMultiVectorBase

RCP< const SpmdVectorSpaceBase< Scalar > > spmdSpaceImpl () const
 
void getNonconstLocalMultiVectorDataImpl (const Ptr< ArrayRCP< Scalar > > &localValues, const Ptr< Ordinal > &leadingDim)
 
void getLocalMultiVectorDataImpl (const Ptr< ArrayRCP< const Scalar > > &localValues, const Ptr< Ordinal > &leadingDim) const
 

Constructors/initializers/accessors

 DefaultSpmdMultiVector ()
 Construct to uninitialized.
 
 DefaultSpmdMultiVector (const RCP< const SpmdVectorSpaceBase< Scalar > > &spmdRangeSpace, const RCP< const ScalarProdVectorSpaceBase< Scalar > > &domainSpace)
 Calls initialize()
 
 DefaultSpmdMultiVector (const RCP< const SpmdVectorSpaceBase< Scalar > > &spmdRangeSpace, const RCP< const ScalarProdVectorSpaceBase< Scalar > > &domainSpace, const ArrayRCP< Scalar > &localValues, const Ordinal leadingDim=-1)
 Calls initialize()
 
void initialize (const RCP< const SpmdVectorSpaceBase< Scalar > > &spmdRangeSpace, const RCP< const ScalarProdVectorSpaceBase< Scalar > > &domainSpace)
 Initialize only with vector spaces where storage is allocated internally..
 
void initialize (const RCP< const SpmdVectorSpaceBase< Scalar > > &spmdRangeSpace, const RCP< const ScalarProdVectorSpaceBase< Scalar > > &domainSpace, const ArrayRCP< Scalar > &localValues, const Ordinal leadingDim=-1)
 Initialize using externally allocated storage.
 
void uninitialize (RCP< const SpmdVectorSpaceBase< Scalar > > *spmdRangeSpace=NULL, RCP< const ScalarProdVectorSpaceBase< Scalar > > *domainSpace=NULL, ArrayRCP< Scalar > *localValues=NULL, Ordinal *leadingDim=NULL)
 Set to an uninitialized state.
 
RCP< const ScalarProdVectorSpaceBase< Scalar > > domainScalarProdVecSpc () const
 

Overridden protected functions from MultiVectorBase

RCP< VectorBase< Scalar > > nonconstColImpl (Ordinal j)
 
RCP< const MultiVectorBase< Scalar > > contigSubViewImpl (const Range1D &colRng) const
 
RCP< MultiVectorBase< Scalar > > nonconstContigSubViewImpl (const Range1D &colRng)
 
RCP< const MultiVectorBase< Scalar > > nonContigSubViewImpl (const ArrayView< const int > &cols) const
 
RCP< MultiVectorBase< Scalar > > nonconstNonContigSubViewImpl (const ArrayView< const int > &cols)
 

Additional Inherited Members

- Public Member Functions inherited from Thyra::SpmdMultiVectorDefaultBase< Scalar >
 SpmdMultiVectorDefaultBase ()
 
RCP< const ScalarProdVectorSpaceBase< Scalar > > rangeScalarProdVecSpc () const
 Returns spmdSpace.
 
- Public Member Functions inherited from Thyra::SpmdMultiVectorBase< Scalar >
RCP< const SpmdVectorSpaceBase< Scalar > > spmdSpace () const
 Returns the SPMD vector space object for the range of *this multi-vector.
 
RTOpPack::SubMultiVectorView< Scalar > getNonconstLocalSubMultiVector ()
 Get a non-const generalized view of local multi-vector data.
 
RTOpPack::ConstSubMultiVectorView< Scalar > getLocalSubMultiVector () const
 Get a const generalized view of local multi-vector data.
 
void getNonconstLocalData (const Ptr< ArrayRCP< Scalar > > &localValues, const Ptr< Ordinal > &leadingDim)
 Returns a non-const pointer to a Fortran-style view of the local multi-vector data.
 
void getLocalData (const Ptr< ArrayRCP< const Scalar > > &localValues, const Ptr< Ordinal > &leadingDim) const
 Returns a const pointer to a Fortran-style view of the local multi-vector data.
 
- Public Member Functions inherited from Thyra::MultiVectorBase< Scalar >
void assign (Scalar alpha)
 V = alpha.
 
void assign (const MultiVectorBase< Scalar > &mv)
 V = mv.
 
void scale (Scalar alpha)
 
void update (Scalar alpha, const MultiVectorBase< Scalar > &mv)
 
void linear_combination (const ArrayView< const Scalar > &alpha, const ArrayView< const Ptr< const MultiVectorBase< Scalar > > > &mv, const Scalar &beta)
 Y.col(j)(i) = beta*Y.col(j)(i) + sum( alpha[k]*X[k].col(j)(i),
 
void dots (const MultiVectorBase< Scalar > &mv, const ArrayView< Scalar > &prods) const
 Column-wise Euclidean dot product.
 
void norms_1 (const ArrayView< typename ScalarTraits< Scalar >::magnitudeType > &norms) const
 Column-wise 1-norms.
 
void norms_2 (const ArrayView< typename ScalarTraits< Scalar >::magnitudeType > &norms) const
 Column-wise 2-norms.
 
void norms_inf (const ArrayView< typename ScalarTraits< Scalar >::magnitudeType > &norms) const
 Column-wise infinity-norms.
 
RCP< const VectorBase< Scalar > > col (Ordinal j) const
 Calls colImpl().
 
RCP< VectorBase< Scalar > > col (Ordinal j)
 Calls nonconstColImpl().
 
RCP< const MultiVectorBase< Scalar > > subView (const Range1D &colRng) const
 Calls contigSubViewImpl().
 
RCP< MultiVectorBase< Scalar > > subView (const Range1D &colRng)
 Calls nonconstContigSubViewImpl().
 
RCP< const MultiVectorBase< Scalar > > subView (const ArrayView< const int > &cols) const
 nonContigSubViewImpl().
 
RCP< MultiVectorBase< Scalar > > subView (const ArrayView< const int > &cols)
 nonconstNonContigSubViewImpl().
 
void applyOp (const RTOpPack::RTOpT< Scalar > &primary_op, const ArrayView< const Ptr< const MultiVectorBase< Scalar > > > &multi_vecs, const ArrayView< const Ptr< MultiVectorBase< Scalar > > > &targ_multi_vecs, const ArrayView< const Ptr< RTOpPack::ReductTarget > > &reduct_objs, const Ordinal primary_global_offset) const
 Calls mvMultiReductApplyOpImpl().
 
void applyOp (const RTOpPack::RTOpT< Scalar > &primary_op, const RTOpPack::RTOpT< Scalar > &secondary_op, const ArrayView< const Ptr< const MultiVectorBase< Scalar > > > &multi_vecs, const ArrayView< const Ptr< MultiVectorBase< Scalar > > > &targ_multi_vecs, const Ptr< RTOpPack::ReductTarget > &reduct_obj, const Ordinal primary_global_offset) const
 mvSingleReductApplyOpImpl().
 
void acquireDetachedView (const Range1D &rowRng, const Range1D &colRng, RTOpPack::ConstSubMultiVectorView< Scalar > *sub_mv) const
 Calls acquireDetachedMultiVectorViewImpl().
 
void releaseDetachedView (RTOpPack::ConstSubMultiVectorView< Scalar > *sub_mv) const
 Calls releaseDetachedMultiVectorViewImpl().
 
void acquireDetachedView (const Range1D &rowRng, const Range1D &colRng, RTOpPack::SubMultiVectorView< Scalar > *sub_mv)
 Calls acquireNonconstDetachedMultiVectorViewImpl().
 
void commitDetachedView (RTOpPack::SubMultiVectorView< Scalar > *sub_mv)
 Calls commitNonconstDetachedMultiVectorViewImpl().
 
RCP< const LinearOpBase< Scalar > > clone () const
 This function is simply overridden to return this->clone_mv().
 
- Public Member Functions inherited from Thyra::LinearOpBase< Scalar >
bool opSupported (EOpTransp M_trans) const
 Return if the M_trans operation of apply() is supported or not.
 
void apply (const EOpTransp M_trans, const MultiVectorBase< Scalar > &X, const Ptr< MultiVectorBase< Scalar > > &Y, const Scalar alpha, const Scalar beta) const
 Apply the linear operator to a multi-vector : Y = alpha*op(M)*X + beta*Y.
 
- Public Member Functions inherited from Thyra::RowStatLinearOpBase< Scalar >
bool rowStatIsSupported (const RowStatLinearOpBaseUtils::ERowStat rowStat) const
 Determine if a given row stat is supported.
 
void getRowStat (const RowStatLinearOpBaseUtils::ERowStat rowStat, const Ptr< VectorBase< Scalar > > &rowStatVec) const
 Get some statistics about a supported row.
 
- Public Member Functions inherited from Thyra::ScaledLinearOpBase< Scalar >
bool supportsScaleLeft () const
 Determines if this objects supports left scaling.
 
bool supportsScaleRight () const
 Determines if this objects supports right scaling.
 
void scaleLeft (const VectorBase< Scalar > &row_scaling)
 Left scales operator with diagonal scaling operator.
 
void scaleRight (const VectorBase< Scalar > &col_scaling)
 Right scales operator with diagonal scaling operator.
 
- Public Member Functions inherited from Thyra::MultiVectorAdapterBase< Scalar >
RCP< const VectorSpaceBase< Scalar > > range () const
 Returns this->rangeScalarProdVecSpc()
 
RCP< const VectorSpaceBase< Scalar > > domain () const
 Returns this->domainScalarProdVecSpc()
 
- Public Member Functions inherited from Thyra::MultiVectorDefaultBase< Scalar >
virtual RCP< MultiVectorBase< Scalar > > clone_mv () const
 
- Protected Member Functions inherited from Thyra::SpmdMultiVectorDefaultBase< Scalar >
virtual void updateSpmdSpace ()
 Subclasses should call whenever the structure of the VectorSpaceBase changes.
 
Range1D validateRowRange (const Range1D &rowRng) const
 Validate and resize the row range.
 
Range1D validateColRange (const Range1D &rowCol) const
 Validate and resize the column range.
 
RTOpPack::SubMultiVectorView< Scalar > getNonconstLocalSubMultiVectorImpl ()
 
RTOpPack::ConstSubMultiVectorView< Scalar > getLocalSubMultiVectorImpl () const
 
void mvMultiReductApplyOpImpl (const RTOpPack::RTOpT< Scalar > &primary_op, const ArrayView< const Ptr< const MultiVectorBase< Scalar > > > &multi_vecs, const ArrayView< const Ptr< MultiVectorBase< Scalar > > > &targ_multi_vecs, const ArrayView< const Ptr< RTOpPack::ReductTarget > > &reduct_objs, const Ordinal primary_global_offset) const
 
void acquireDetachedMultiVectorViewImpl (const Range1D &rowRng, const Range1D &colRng, RTOpPack::ConstSubMultiVectorView< Scalar > *sub_mv) const
 
void releaseDetachedMultiVectorViewImpl (RTOpPack::ConstSubMultiVectorView< Scalar > *sub_mv) const
 
void acquireNonconstDetachedMultiVectorViewImpl (const Range1D &rowRng, const Range1D &colRng, RTOpPack::SubMultiVectorView< Scalar > *sub_mv)
 
void commitNonconstDetachedMultiVectorViewImpl (RTOpPack::SubMultiVectorView< Scalar > *sub_mv)
 
void euclideanApply (const EOpTransp M_trans, const MultiVectorBase< Scalar > &X, const Ptr< MultiVectorBase< Scalar > > &Y, const Scalar alpha, const Scalar beta) const
 Uses GEMM() and Teuchos::reduceAll() to implement.
 
- Protected Member Functions inherited from Thyra::SpmdMultiVectorBase< Scalar >
- Protected Member Functions inherited from Thyra::MultiVectorBase< Scalar >
virtual RCP< const VectorBase< Scalar > > colImpl (Ordinal j) const
 Return a non-changeable view of a constituent column vector.
 
virtual bool rowStatIsSupportedImpl (const RowStatLinearOpBaseUtils::ERowStat rowStat) const
 
virtual void getRowStatImpl (const RowStatLinearOpBaseUtils::ERowStat rowStat, const Ptr< VectorBase< Scalar > > &rowStatVec) const
 
virtual bool supportsScaleLeftImpl () const
 
virtual bool supportsScaleRightImpl () const
 
virtual void scaleLeftImpl (const VectorBase< Scalar > &row_scaling)
 
virtual void scaleRightImpl (const VectorBase< Scalar > &col_scaling)
 
void absRowSum (const Teuchos::Ptr< Thyra::VectorBase< Scalar > > &output) const
 
void absColSum (const Teuchos::Ptr< Thyra::VectorBase< Scalar > > &output) const
 
- Protected Member Functions inherited from Thyra::LinearOpBase< Scalar >
- Protected Member Functions inherited from Thyra::RowStatLinearOpBase< Scalar >
- Protected Member Functions inherited from Thyra::ScaledLinearOpBase< Scalar >
- Protected Member Functions inherited from Thyra::MultiVectorAdapterBase< Scalar >
bool opSupportedImpl (EOpTransp M_trans) const
 
void applyImpl (const EOpTransp M_trans, const MultiVectorBase< Scalar > &X, const Ptr< MultiVectorBase< Scalar > > &Y, const Scalar alpha, const Scalar beta) const
 .

 
- Protected Member Functions inherited from Thyra::MultiVectorDefaultBase< Scalar >
virtual void assignImpl (Scalar alpha)
 Default implementation of assign(scalar) using RTOps.
 
virtual void assignMultiVecImpl (const MultiVectorBase< Scalar > &mv)
 Default implementation of assign(MV) using RTOps.
 
virtual void scaleImpl (Scalar alpha)
 Default implementation of scale using RTOps.
 
virtual void updateImpl (Scalar alpha, const MultiVectorBase< Scalar > &mv)
 Default implementation of update using RTOps.
 
virtual void linearCombinationImpl (const ArrayView< const Scalar > &alpha, const ArrayView< const Ptr< const MultiVectorBase< Scalar > > > &mv, const Scalar &beta)
 Default implementation of linear_combination using RTOps.
 
virtual void dotsImpl (const MultiVectorBase< Scalar > &mv, const ArrayView< Scalar > &prods) const
 Default implementation of dots using RTOps.
 
virtual void norms1Impl (const ArrayView< typename ScalarTraits< Scalar >::magnitudeType > &norms) const
 Default implementation of norms_1 using RTOps.
 
virtual void norms2Impl (const ArrayView< typename ScalarTraits< Scalar >::magnitudeType > &norms) const
 Default implementation of norms_2 using RTOps.
 
virtual void normsInfImpl (const ArrayView< typename ScalarTraits< Scalar >::magnitudeType > &norms) const
 Default implementation of norms_inf using RTOps.
 
RCP< const MultiVectorBase< Scalar > > contigSubViewImpl (const Range1D &colRng) const
 
RCP< MultiVectorBase< Scalar > > nonconstContigSubViewImpl (const Range1D &colRng)
 
RCP< const MultiVectorBase< Scalar > > nonContigSubViewImpl (const ArrayView< const int > &cols) const
 
RCP< MultiVectorBase< Scalar > > nonconstNonContigSubViewImpl (const ArrayView< const int > &cols)
 
virtual void mvSingleReductApplyOpImpl (const RTOpPack::RTOpT< Scalar > &primary_op, const RTOpPack::RTOpT< Scalar > &secondary_op, const ArrayView< const Ptr< const MultiVectorBase< Scalar > > > &multi_vecs, const ArrayView< const Ptr< MultiVectorBase< Scalar > > > &targ_multi_vecs, const Ptr< RTOpPack::ReductTarget > &reduct_obj, const Ordinal primary_global_offset) const
 
- Protected Member Functions inherited from Thyra::LinearOpDefaultBase< Scalar >
std::string description () const
 Default description that gives the label, type, and dimenstion .
 
void describe (Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
 Generates a default outputting for all linear operators.
 

Detailed Description

template<class Scalar>
class Thyra::DefaultSpmdMultiVector< Scalar >

Efficient concrete implementation subclass for SPMD multi-vectors.

This subclass provides a very efficient and very general concrete implementation of a Thyra::MultiVectorBase object.

Objects of this type generally should not be constructed directly by a client but instead by using the concrete vector space subclass Thyra::DefaultSpmdVectorSpace and using the function Thyra::createMembers().

The storage type can be anything since a Teuchos::ArrayRCP is used to pass in the local values pointer into the constructor and initialize().

Definition at line 68 of file Thyra_DefaultSpmdMultiVector_decl.hpp.

Constructor & Destructor Documentation

◆ DefaultSpmdMultiVector() [1/3]

template<class Scalar >
Thyra::DefaultSpmdMultiVector< Scalar >::DefaultSpmdMultiVector ( )

Construct to uninitialized.

Definition at line 140 of file Thyra_DefaultSpmdMultiVector_def.hpp.

◆ DefaultSpmdMultiVector() [2/3]

template<class Scalar >
Thyra::DefaultSpmdMultiVector< Scalar >::DefaultSpmdMultiVector ( const RCP< const SpmdVectorSpaceBase< Scalar > > & spmdRangeSpace,
const RCP< const ScalarProdVectorSpaceBase< Scalar > > & domainSpace )

Calls initialize()

Definition at line 146 of file Thyra_DefaultSpmdMultiVector_def.hpp.

◆ DefaultSpmdMultiVector() [3/3]

template<class Scalar >
Thyra::DefaultSpmdMultiVector< Scalar >::DefaultSpmdMultiVector ( const RCP< const SpmdVectorSpaceBase< Scalar > > & spmdRangeSpace,
const RCP< const ScalarProdVectorSpaceBase< Scalar > > & domainSpace,
const ArrayRCP< Scalar > & localValues,
const Ordinal leadingDim = -1 )

Calls initialize()

Definition at line 156 of file Thyra_DefaultSpmdMultiVector_def.hpp.

Member Function Documentation

◆ initialize() [1/2]

template<class Scalar >
void Thyra::DefaultSpmdMultiVector< Scalar >::initialize ( const RCP< const SpmdVectorSpaceBase< Scalar > > & spmdRangeSpace,
const RCP< const ScalarProdVectorSpaceBase< Scalar > > & domainSpace )

Initialize only with vector spaces where storage is allocated internally..

Parameters
spmdRangeSpace[in] Smart pointer to SpmdVectorSpaceBase object that defines the data distribution for spmdSpace() and range().
domainSpace[in] Smart pointer to VectorSpaceBase object that defines domain() space.

Preconditions:

  • spmdRangeSpace.get()!=NULL
  • domainSpace.get()!=NULL

Definition at line 168 of file Thyra_DefaultSpmdMultiVector_def.hpp.

◆ initialize() [2/2]

template<class Scalar >
void Thyra::DefaultSpmdMultiVector< Scalar >::initialize ( const RCP< const SpmdVectorSpaceBase< Scalar > > & spmdRangeSpace,
const RCP< const ScalarProdVectorSpaceBase< Scalar > > & domainSpace,
const ArrayRCP< Scalar > & localValues,
const Ordinal leadingDim = -1 )

Initialize using externally allocated storage.

Parameters
spmdRangeSpace[in] Smart pointer to SpmdVectorSpaceBase object that defines the data distribution for spmdSpace() and range().
domainSpace[in] Smart pointer to VectorSpaceBase object that defines domain() space.
localValues[in] Smart pointer to beginning of Fortran-style column-major array that defines the local localValues in the multi-vector. This array must be at least of dimension spmdRangeSpace->localSubDim()*domainSpace->dim() and (&*localValues)[ i + j*leadingDim ] gives the local value of the zero-based entry (i,j) where i=0...spmdSpace()->localSubDim()-1 and j=0...domainSpace->dim()-1.
leadingDim[in] The leading dimension of the multi-vector. If -1, then is taken to be spmdRangeSpace->localSubDim().

Preconditions:

  • spmdRangeSpace.get()!=NULL
  • domainSpace.get()!=NULL
  • localValues.get()!=NULL
  • leadingDim >= spmdRangeSpace->localSubDim()

Definition at line 182 of file Thyra_DefaultSpmdMultiVector_def.hpp.

◆ uninitialize()

template<class Scalar >
void Thyra::DefaultSpmdMultiVector< Scalar >::uninitialize ( RCP< const SpmdVectorSpaceBase< Scalar > > * spmdRangeSpace = NULL,
RCP< const ScalarProdVectorSpaceBase< Scalar > > * domainSpace = NULL,
ArrayRCP< Scalar > * localValues = NULL,
Ordinal * leadingDim = NULL )

Set to an uninitialized state.

Postconditions:

Definition at line 208 of file Thyra_DefaultSpmdMultiVector_def.hpp.

◆ domainScalarProdVecSpc()

template<class Scalar >
RCP< const ScalarProdVectorSpaceBase< Scalar > > Thyra::DefaultSpmdMultiVector< Scalar >::domainScalarProdVecSpc ( ) const
virtual

◆ nonconstColImpl()

template<class Scalar >
RCP< VectorBase< Scalar > > Thyra::DefaultSpmdMultiVector< Scalar >::nonconstColImpl ( Ordinal j)
protectedvirtual

◆ contigSubViewImpl()

template<class Scalar >
RCP< const MultiVectorBase< Scalar > > Thyra::DefaultSpmdMultiVector< Scalar >::contigSubViewImpl ( const Range1D & colRng) const
protectedvirtual

◆ nonconstContigSubViewImpl()

template<class Scalar >
RCP< MultiVectorBase< Scalar > > Thyra::DefaultSpmdMultiVector< Scalar >::nonconstContigSubViewImpl ( const Range1D & colRng)
protectedvirtual

◆ nonContigSubViewImpl()

template<class Scalar >
RCP< const MultiVectorBase< Scalar > > Thyra::DefaultSpmdMultiVector< Scalar >::nonContigSubViewImpl ( const ArrayView< const int > & cols) const
protectedvirtual

◆ nonconstNonContigSubViewImpl()

template<class Scalar >
RCP< MultiVectorBase< Scalar > > Thyra::DefaultSpmdMultiVector< Scalar >::nonconstNonContigSubViewImpl ( const ArrayView< const int > & cols)
protectedvirtual

◆ spmdSpaceImpl()

template<class Scalar >
RCP< const SpmdVectorSpaceBase< Scalar > > Thyra::DefaultSpmdMultiVector< Scalar >::spmdSpaceImpl ( ) const
protectedvirtual

◆ getNonconstLocalMultiVectorDataImpl()

template<class Scalar >
void Thyra::DefaultSpmdMultiVector< Scalar >::getNonconstLocalMultiVectorDataImpl ( const Ptr< ArrayRCP< Scalar > > & localValues,
const Ptr< Ordinal > & leadingDim )
protectedvirtual

◆ getLocalMultiVectorDataImpl()

template<class Scalar >
void Thyra::DefaultSpmdMultiVector< Scalar >::getLocalMultiVectorDataImpl ( const Ptr< ArrayRCP< const Scalar > > & localValues,
const Ptr< Ordinal > & leadingDim ) const
protectedvirtual

The documentation for this class was generated from the following files: