42 #ifndef THYRA_SPMD_MULTI_VECTOR_DEFAULT_BASE_DECL_HPP 43 #define THYRA_SPMD_MULTI_VECTOR_DEFAULT_BASE_DECL_HPP 45 #include "Thyra_SpmdMultiVectorBase.hpp" 46 #include "Thyra_MultiVectorAdapterBase_decl.hpp" 47 #include "Teuchos_BLAS.hpp" 97 template<
class Scalar>
140 const ArrayView<
const Ptr<RTOpPack::ReductTarget> > &reduct_objs,
141 const Ordinal primary_global_offset
215 mutable bool in_applyOp_;
217 mutable Teuchos::BLAS<int,Scalar> blas_;
231 #endif // THYRA_SPMD_MULTI_VECTOR_DEFAULT_BASE_DECL_HPP RTOpPack::ConstSubMultiVectorView< Scalar > getLocalSubMultiVectorImpl() const
SpmdMultiVectorDefaultBase()
EOpTransp
Enumeration for determining how a linear operator is applied. `*.
RTOpPack::SubMultiVectorView< Scalar > getNonconstLocalSubMultiVectorImpl()
Base interface class for SPMD multi-vectors.
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
Base node implementation class for SPMD multi-vectors.
Range1D validateColRange(const Range1D &rowCol) const
Validate and resize the column range.
void releaseDetachedMultiVectorViewImpl(RTOpPack::ConstSubMultiVectorView< Scalar > *sub_mv) const
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.
Teuchos::Ordinal Ordinal
Type for the dimension of a vector space. `*.
Interface for a collection of column vectors called a multi-vector.
Range1D validateRowRange(const Range1D &rowRng) const
Validate and resize the row range.
void commitNonconstDetachedMultiVectorViewImpl(RTOpPack::SubMultiVectorView< Scalar > *sub_mv)
Node subclass for MultiVectorBase subclasses that allows the insertion of an application defined scal...
RCP< const ScalarProdVectorSpaceBase< Scalar > > rangeScalarProdVecSpc() const
Returns spmdSpace.
void acquireNonconstDetachedMultiVectorViewImpl(const Range1D &rowRng, const Range1D &colRng, RTOpPack::SubMultiVectorView< Scalar > *sub_mv)
void acquireDetachedMultiVectorViewImpl(const Range1D &rowRng, const Range1D &colRng, RTOpPack::ConstSubMultiVectorView< Scalar > *sub_mv) const
virtual void updateSpmdSpace()
Subclasses should call whenever the structure of the VectorSpaceBase changes.