10 #ifndef TEUCHOS_MPI_REDUCTION_OP_SETTER_HPP
11 #define TEUCHOS_MPI_REDUCTION_OP_SETTER_HPP
24 #include "Teuchos_ReductionOp.hpp"
37 class TEUCHOSCOMM_LIB_DLL_EXPORT MpiReductionOpBase :
38 virtual public Describable {
41 reduce (
void* invec,
void* inoutvec,
42 int* len, MPI_Datatype* datatype)
const = 0;
51 template<
typename OrdinalType>
52 class MpiReductionOp :
public MpiReductionOpBase {
54 MpiReductionOp (
const ValueTypeReductionOp<OrdinalType,char>& reductOp)
55 : reductOp_ (reductOp)
59 reduce (
void* invec,
void* inoutvec,
int* len, MPI_Datatype* datatype)
const
71 MPI_Type_size (*datatype, &sz);
73 reductOp_.reduce ((*len) * sz, reinterpret_cast<char*> (invec),
74 reinterpret_cast<char*> (inoutvec));
78 const ValueTypeReductionOp<OrdinalType, char>& reductOp_;
81 MpiReductionOp (
const MpiReductionOp&);
82 MpiReductionOp& operator= (
const MpiReductionOp&);
93 TEUCHOSCOMM_LIB_DLL_EXPORT MPI_Op setMpiReductionOp (
const MpiReductionOpBase& reductOp);
100 #endif // TEUCHOS_MPI_REDUCTION_OP_SETTER_HPP
Teuchos header file which uses auto-configuration information to include necessary C++ headers...
#define TEUCHOS_TEST_FOR_EXCEPT(throw_exception_test)
This macro is designed to be a short version of TEUCHOS_TEST_FOR_EXCEPTION() that is easier to call...