Classes | |
| class | RTOpPack::ReductTarget |
| Abstract base class for all reduction objects. More... | |
| class | RTOpPack::RTOpT< Scalar > |
| Templated interface to vector reduction/transformation operators {abstract}. More... | |
public types | |
| typedef PrimitiveTypeTraits< Scalar, Scalar >::primitiveType | RTOpPack::RTOpT::primitive_value_type |
| | |
Reduction object functions (NVI) | |
| void | RTOpPack::RTOpT::get_reduct_type_num_entries (const Ptr< int > &num_values, const Ptr< int > &num_indexes, const Ptr< int > &num_chars) const |
| Get the number of entries of each basic data type in the externalized state for a reduction object for this operator. | |
| Teuchos::RCP< ReductTarget > | RTOpPack::RTOpT::reduct_obj_create () const |
| Creates a new reduction target object initialized and ready to be used in a reduction. | |
| void | RTOpPack::RTOpT::reduce_reduct_objs (const ReductTarget &in_reduct_obj, const Ptr< ReductTarget > &inout_reduct_obj) const |
| Reduce intermediate reduction target objects. | |
| void | RTOpPack::RTOpT::reduct_obj_reinit (const Ptr< ReductTarget > &reduct_obj) const |
| Reinitialize an already created reduction object. | |
| void | RTOpPack::RTOpT::extract_reduct_obj_state (const ReductTarget &reduct_obj, const ArrayView< primitive_value_type > &value_data, const ArrayView< index_type > &index_data, const ArrayView< char_type > &char_data) const |
| Extract the state of an already created reduction object. | |
| void | RTOpPack::RTOpT::load_reduct_obj_state (const ArrayView< const primitive_value_type > &value_data, const ArrayView< const index_type > &index_data, const ArrayView< const char_type > &char_data, const Ptr< ReductTarget > &reduct_obj) const |
| Load the state of an already created reduction object given arrays of primitive objects. | |
Operator functions (NIV) | |
| const std::string | RTOpPack::RTOpT::op_name () const |
| Return the name (as a null-terminated C-style string) of the operator. | |
| bool | RTOpPack::RTOpT::coord_invariant () const |
Returns true if this operator is coordinate invariant. | |
| void | RTOpPack::RTOpT::apply_op (const ArrayView< const ConstSubVectorView< Scalar > > &sub_vecs, const ArrayView< const SubVectorView< Scalar > > &targ_sub_vecs, const Ptr< ReductTarget > &reduct_obj) const |
| Apply the reduction/transformation operator to a set of sub-vectors. | |
Deprecated (NVI) | |
| void | RTOpPack::RTOpT::get_reduct_type_num_entries (int *num_values, int *num_indexes, int *num_chars) const |
| Deprecated. | |
| void | RTOpPack::RTOpT::reduce_reduct_objs (const ReductTarget &in_reduct_obj, ReductTarget *inout_reduct_obj) const |
| Deprecated. | |
| void | RTOpPack::RTOpT::reduct_obj_reinit (ReductTarget *reduct_obj) const |
| Deprecated. | |
| void | RTOpPack::RTOpT::extract_reduct_obj_state (const ReductTarget &reduct_obj, int num_values, primitive_value_type value_data[], int num_indexes, index_type index_data[], int num_chars, char_type char_data[]) const |
| Deprecated. | |
| void | RTOpPack::RTOpT::load_reduct_obj_state (int num_values, const primitive_value_type value_data[], int num_indexes, const index_type index_data[], int num_chars, const char_type char_data[], ReductTarget *reduct_obj) const |
| Deprecated. | |
| void | RTOpPack::RTOpT::apply_op (const int num_vecs, const ConstSubVectorView< Scalar > sub_vecs[], const int num_targ_vecs, const SubVectorView< Scalar > targ_sub_vecs[], ReductTarget *reduct_obj) const |
| Deprecated. | |
| virtual void | RTOpPack::RTOpT::get_reduct_type_num_entries_impl (const Ptr< int > &num_values, const Ptr< int > &num_indexes, const Ptr< int > &num_chars) const |
| Protected virtual functions to be overridden by subclasses. . | |
| virtual Teuchos::RCP< ReductTarget > | RTOpPack::RTOpT::reduct_obj_create_impl () const |
| | |
| virtual void | RTOpPack::RTOpT::reduce_reduct_objs_impl (const ReductTarget &in_reduct_obj, const Ptr< ReductTarget > &inout_reduct_obj) const |
| | |
| virtual void | RTOpPack::RTOpT::reduct_obj_reinit_impl (const Ptr< ReductTarget > &reduct_obj) const |
| | |
| virtual void | RTOpPack::RTOpT::extract_reduct_obj_state_impl (const ReductTarget &reduct_obj, const ArrayView< primitive_value_type > &value_data, const ArrayView< index_type > &index_data, const ArrayView< char_type > &char_data) const |
| | |
| virtual void | RTOpPack::RTOpT::load_reduct_obj_state_impl (const ArrayView< const primitive_value_type > &value_data, const ArrayView< const index_type > &index_data, const ArrayView< const char_type > &char_data, const Ptr< ReductTarget > &reduct_obj) const |
| | |
| virtual const std::string | RTOpPack::RTOpT::op_name_impl () const |
| | |
| virtual bool | RTOpPack::RTOpT::coord_invariant_impl () const |
| | |
| virtual void | RTOpPack::RTOpT::apply_op_impl (const ArrayView< const ConstSubVectorView< Scalar > > &sub_vecs, const ArrayView< const SubVectorView< Scalar > > &targ_sub_vecs, const Ptr< ReductTarget > &reduct_obj) const =0 |
| | |
| RTOpPack::RTOpT::RTOpT (const std::string &op_name_base="") | |
| Nonvirtual protected functions. Constructor that creates an operator name appended with the type. | |
| void | RTOpPack::RTOpT::setOpNameBase (const std::string &op_name_base) |
| Just set the opeator name. | |
typedef PrimitiveTypeTraits<Scalar,Scalar>::primitiveType RTOpPack::RTOpT< Scalar >::primitive_value_type [inherited] |
| void RTOpPack::RTOpT< Scalar >::get_reduct_type_num_entries | ( | const Ptr< int > & | num_values, | |
| const Ptr< int > & | num_indexes, | |||
| const Ptr< int > & | num_chars | |||
| ) | const [inline, inherited] |
Get the number of entries of each basic data type in the externalized state for a reduction object for this operator.
Note that a specific reduction object is not passed in as an argument. This is because the structure of a reduction object is completely determined by its associated operator object and this structure can not change as a result of a reduction operation (this is needed to simplify global communication code when used * with MPI).
The default implementation returns zeros for *num_values, *num_indexes and *num_chars (i.e. by default there is no reduction operation performed).
Definition at line 191 of file RTOpPack_RTOpT_decl.hpp.
| Teuchos::RCP<ReductTarget> RTOpPack::RTOpT< Scalar >::reduct_obj_create | ( | ) | const [inline, inherited] |
Creates a new reduction target object initialized and ready to be used in a reduction.
To delete this object simply let the returned RCP<> object go out of scope.
The default implementation returns return.get()==NULL (i.e. by default there is no reduction operation performed).
Definition at line 210 of file RTOpPack_RTOpT_decl.hpp.
| void RTOpPack::RTOpT< Scalar >::reduce_reduct_objs | ( | const ReductTarget & | in_reduct_obj, | |
| const Ptr< ReductTarget > & | inout_reduct_obj | |||
| ) | const [inline, inherited] |
Reduce intermediate reduction target objects.
The default implementation does not do anything (i.e. by default there is no reduction operation performed).
Definition at line 220 of file RTOpPack_RTOpT_decl.hpp.
| void RTOpPack::RTOpT< Scalar >::reduct_obj_reinit | ( | const Ptr< ReductTarget > & | reduct_obj | ) | const [inline, inherited] |
Reinitialize an already created reduction object.
The default implementation does nothing (i.e. by default there is no reduction operation performed).
| reduct_obj | [in/out] Reduction object is reinitialized on output. |
Definition at line 234 of file RTOpPack_RTOpT_decl.hpp.
| void RTOpPack::RTOpT< Scalar >::extract_reduct_obj_state | ( | const ReductTarget & | reduct_obj, | |
| const ArrayView< primitive_value_type > & | value_data, | |||
| const ArrayView< index_type > & | index_data, | |||
| const ArrayView< char_type > & | char_data | |||
| ) | const [inline, inherited] |
Extract the state of an already created reduction object.
This method allows the state of a reduction target object to be externalized so that it can be passed over a heterogeneous network of computers.
The default implementation does nothing (i.e. by default there is no reduction operation performed).
Definition at line 248 of file RTOpPack_RTOpT_decl.hpp.
| void RTOpPack::RTOpT< Scalar >::load_reduct_obj_state | ( | const ArrayView< const primitive_value_type > & | value_data, | |
| const ArrayView< const index_type > & | index_data, | |||
| const ArrayView< const char_type > & | char_data, | |||
| const Ptr< ReductTarget > & | reduct_obj | |||
| ) | const [inline, inherited] |
Load the state of an already created reduction object given arrays of primitive objects.
The default implementation does nothing.
Definition at line 264 of file RTOpPack_RTOpT_decl.hpp.
| const std::string RTOpPack::RTOpT< Scalar >::op_name | ( | ) | const [inline, inherited] |
Return the name (as a null-terminated C-style string) of the operator.
This name is used to differentiate an operator subclass from all other operator subclasses. This is an important property needed for a client/server or master/slave runtime configuration.
The default implementation uses the value created in the constructor RTOpT().
Definition at line 288 of file RTOpPack_RTOpT_decl.hpp.
| bool RTOpPack::RTOpT< Scalar >::coord_invariant | ( | ) | const [inline, inherited] |
Returns true if this operator is coordinate invariant.
The default implementation returns true as most vector operators are coordinate invariant.
Definition at line 302 of file RTOpPack_RTOpT_decl.hpp.
| void RTOpPack::RTOpT< Scalar >::apply_op | ( | const ArrayView< const ConstSubVectorView< Scalar > > & | sub_vecs, | |
| const ArrayView< const SubVectorView< Scalar > > & | targ_sub_vecs, | |||
| const Ptr< ReductTarget > & | reduct_obj | |||
| ) | const [inline, inherited] |
Apply the reduction/transformation operator to a set of sub-vectors.
op(sub_vecs[],targ_sub_vecs[]),reduct_obj) -> targ_sub_vecs[],reduct_obj.
This is the bread and butter of the whole design. Through this method, a vector implementation applies a reduction/transformation operator to a set of sub-vectors.
| num_vecs | [in] Number of non-mutable sub-vectors in sub_vec[]. | |
| sub_vecs | [in] Array (length num_vecs) of non-mutable vectors to apply the operator over. The ordering of these sub-vectors sub_vecs[k], for k = 0...num_vecs-1, is significant to the this operator object. If num_vecs==0 then sub_vecs can be NULL. | |
| num_targ_vecs | [in] Number of mutable sub-vectors in targ_sub_vec[]. | |
| targ_sub_vecs | [in/out] Array (length num_targ_vecs) of mutable vectors to apply the operator over and be mutated. The ordering of these sub-vectors targ_sub_vecs[k], for k = 0...num_targ_vecs-1, is significant to this operator object. If num_targ_vecs==0 then targ_sub_vecs can be NULL. | |
| reduct_obj | [in/out] This reduction object must have been created by a this->reduct_obj_create() call and it may have * already passed through one or more other reduction operations (accumulating the reductions along the way). If this->get_reduct_type_num_entries() returns num_values==0, num_indexes==0 and num_chars==0, then reduct_obj should be set to NULL as no reduction will be performed. |
num_vecs > 0 || num_targ_vecs > 0 [num_vecs > 0] sub_vecs != NULL [num_targ_vecs > 0] targ_sub_vecs != NULL [num_vecs > 0] globalOffset==sub_vecs[k].globalOffset , for k = 0,...,num_vecs-1 [num_targ_vecs > 0] globalOffset==targ_sub_vecs[k].globalOffset , for k = 0,...,num_targ_vecs-1 [num_vecs > 0] subDim==sub_vecs[k].subDim() , for k = 0,...,num_vecs-1 [num_targ_vecs > 0] subDim==targ_sub_vecs[k].subDim() , for k = 0,...,num_targ_vecs-1
If reduct_obj != NULL then the reduction operation will be accumulated as:
op(op(sub_vecs[],targ_sub_vecs[]),reduct_obj) -> reduct_obj
By allowing an in/out reduct_obj and an accumulation of the reduction, the maximum reuse of memory is achieved. If this->reduct_obj_create() or this->reduct_obj_reinit() (passing in reduct_obj) was called immediately before this function, then on return, reduct_obj will contain only the reduction from this function call.
If num_vecs is incompatible with the underlying operator object then InvalidNumVecs is thrown. If the sub-vectors are not compatible (i.e. globalOffset and/or subDim not the same) then IncompatibleVecs is thrown.
Definition at line 378 of file RTOpPack_RTOpT_decl.hpp.
| void RTOpPack::RTOpT< Scalar >::get_reduct_type_num_entries | ( | int * | num_values, | |
| int * | num_indexes, | |||
| int * | num_chars | |||
| ) | const [inline, inherited] |
| void RTOpPack::RTOpT< Scalar >::reduce_reduct_objs | ( | const ReductTarget & | in_reduct_obj, | |
| ReductTarget * | inout_reduct_obj | |||
| ) | const [inline, inherited] |
| void RTOpPack::RTOpT< Scalar >::reduct_obj_reinit | ( | ReductTarget * | reduct_obj | ) | const [inline, inherited] |
| void RTOpPack::RTOpT< Scalar >::extract_reduct_obj_state | ( | const ReductTarget & | reduct_obj, | |
| int | num_values, | |||
| primitive_value_type | value_data[], | |||
| int | num_indexes, | |||
| index_type | index_data[], | |||
| int | num_chars, | |||
| char_type | char_data[] | |||
| ) | const [inline, inherited] |
| void RTOpPack::RTOpT< Scalar >::load_reduct_obj_state | ( | int | num_values, | |
| const primitive_value_type | value_data[], | |||
| int | num_indexes, | |||
| const index_type | index_data[], | |||
| int | num_chars, | |||
| const char_type | char_data[], | |||
| ReductTarget * | reduct_obj | |||
| ) | const [inline, inherited] |
| void RTOpPack::RTOpT< Scalar >::apply_op | ( | const int | num_vecs, | |
| const ConstSubVectorView< Scalar > | sub_vecs[], | |||
| const int | num_targ_vecs, | |||
| const SubVectorView< Scalar > | targ_sub_vecs[], | |||
| ReductTarget * | reduct_obj | |||
| ) | const [inline, inherited] |
| void RTOpPack::RTOpT< Scalar >::get_reduct_type_num_entries_impl | ( | const Ptr< int > & | num_values, | |
| const Ptr< int > & | num_indexes, | |||
| const Ptr< int > & | num_chars | |||
| ) | const [protected, virtual, inherited] |
Protected virtual functions to be overridden by subclasses. .
Definition at line 46 of file RTOpPack_RTOpT_def.hpp.
| Teuchos::RCP< ReductTarget > RTOpPack::RTOpT< Scalar >::reduct_obj_create_impl | ( | ) | const [protected, virtual, inherited] |
| void RTOpPack::RTOpT< Scalar >::reduce_reduct_objs_impl | ( | const ReductTarget & | in_reduct_obj, | |
| const Ptr< ReductTarget > & | inout_reduct_obj | |||
| ) | const [protected, virtual, inherited] |
| void RTOpPack::RTOpT< Scalar >::reduct_obj_reinit_impl | ( | const Ptr< ReductTarget > & | reduct_obj | ) | const [protected, virtual, inherited] |
| void RTOpPack::RTOpT< Scalar >::extract_reduct_obj_state_impl | ( | const ReductTarget & | reduct_obj, | |
| const ArrayView< primitive_value_type > & | value_data, | |||
| const ArrayView< index_type > & | index_data, | |||
| const ArrayView< char_type > & | char_data | |||
| ) | const [protected, virtual, inherited] |
| void RTOpPack::RTOpT< Scalar >::load_reduct_obj_state_impl | ( | const ArrayView< const primitive_value_type > & | value_data, | |
| const ArrayView< const index_type > & | index_data, | |||
| const ArrayView< const char_type > & | char_data, | |||
| const Ptr< ReductTarget > & | reduct_obj | |||
| ) | const [protected, virtual, inherited] |
| const std::string RTOpPack::RTOpT< Scalar >::op_name_impl | ( | ) | const [protected, virtual, inherited] |
| bool RTOpPack::RTOpT< Scalar >::coord_invariant_impl | ( | ) | const [protected, virtual, inherited] |
| virtual void RTOpPack::RTOpT< Scalar >::apply_op_impl | ( | const ArrayView< const ConstSubVectorView< Scalar > > & | sub_vecs, | |
| const ArrayView< const SubVectorView< Scalar > > & | targ_sub_vecs, | |||
| const Ptr< ReductTarget > & | reduct_obj | |||
| ) | const [protected, pure virtual, inherited] |
| RTOpPack::RTOpT< Scalar >::RTOpT | ( | const std::string & | op_name_base = "" |
) | [protected, inherited] |
Nonvirtual protected functions. Constructor that creates an operator name appended with the type.
Definition at line 125 of file RTOpPack_RTOpT_def.hpp.
| void RTOpPack::RTOpT< Scalar >::setOpNameBase | ( | const std::string & | op_name_base | ) | [protected, inherited] |
1.4.7