43 #ifndef RTOPPACK_SPMD_APPLY_OP_DECL_HPP
44 #define RTOPPACK_SPMD_APPLY_OP_DECL_HPP
46 #include "RTOpPack_RTOpT.hpp"
51 namespace Teuchos {
template<
typename Ordinal>
class Comm; }
55 #define RTOPPACK_ENABLE_SHOW_DUMP
59 # define RTOPPACK_ENABLE_SHOW_DUMP
75 #ifdef RTOPPACK_ENABLE_SHOW_DUMP
77 #endif // RTOPPACK_ENABLE_SHOW_DUMP
85 template<
class PrimitiveScalar>
97 template<
class Scalar>
99 const RTOpT<Scalar> &op,
103 const ReductTarget &reduct_obj,
104 char reduct_obj_ext[]
112 template<
class Scalar>
114 const RTOpT<Scalar> &op,
118 const char reduct_obj_ext[],
119 ReductTarget *reduct_obj
127 template<
class Scalar>
150 ,
const char charBuffer[]
171 template<
class Scalar>
206 template<
class Scalar>
223 template<
class Scalar>
229 ,
const int num_targ_vecs
242 template<
class Scalar>
247 ,
const int num_multi_vecs
249 ,
const int num_targ_multi_vecs
262 template<
class Scalar>
269 ,
const int num_targ_vecs
278 #endif // RTOPPACK_SPMD_APPLY_OP_DECL_HPP
int serializedSize(int num_values, int num_indexes, int num_chars)
Return the size in bytes of an external representation of a ReductTarget object.
ReductTargetReductionOp< Scalar > & operator=(const ReductTargetReductionOp< Scalar > &)
void SPMD_all_reduce(const Teuchos::Comm< index_type > *comm, const RTOpT< Scalar > &op, const int num_cols, const ReductTarget *const i_reduct_objs[], ReductTarget *const reduct_objs[])
Reduce a set of reduction objects.
Teuchos::RCP< ReductTarget > createObj() const
Class for a changeable sub-vector.
void serialize(const index_type count, const ReductTarget *const reduct_objs[], const index_type bytes, char charBuffer[]) const
Teuchos_Ordinal index_type
ReductionOp subclass for ReductTarget objects.
RTOP_DEPRECATED bool show_spmd_apply_op_dump
void serialize(const RTOpT< Scalar > &op, Ordinal num_values, Ordinal num_indexes, Ordinal num_chars, const ReductTarget &reduct_obj, char reduct_obj_ext[])
Serialize a ReductTarget object.
Class for a non-changeable sub-vector.
void deserialize(const RTOpT< Scalar > &op, int num_values, int num_indexes, int num_chars, const char reduct_obj_ext[], ReductTarget *reduct_obj)
Deserialize a ReductTarget object.
Serializer subclass for ReductTarget objects.
Templated interface to vector reduction/transformation operators {abstract}.
TEUCHOS_ORDINAL_TYPE Teuchos_Ordinal
index_type getBufferSize(const index_type count) const
Class for a changeable sub-vector.
void deserialize(const index_type bytes, const char charBuffer[], const index_type count, ReductTarget *const reduct_objs[]) const
Abstract base class for all reduction objects.
void set_SPMD_apply_op_dump_out(const RCP< FancyOStream > &dumpOut)
Set up to show a dump of RTOps applied through SPMD_apply_op().
ReductTargetSerializer & operator=(const ReductTargetSerializer &)
Class for a non-changeable sub-multi-vector (submatrix).
Teuchos::RCP< const RTOpT< Scalar > > op_
ReductTargetReductionOp()
Teuchos::RCP< const RTOpT< Scalar > > op_
void SPMD_apply_op(const Teuchos::Comm< index_type > *comm, const RTOpT< Scalar > &op, const int num_vecs, const ConstSubVectorView< Scalar > sub_vecs[], const int num_targ_vecs, const SubVectorView< Scalar > targ_sub_vecs[], ReductTarget *reduct_obj)
Apply an RTOp in SMPD mode to a set of vectors with contiguous storage per process.
void reduce(const Ordinal count, const ReductTarget *const inBuffer[], ReductTarget *const inoutBuffer[]) const