10#ifndef TEUCHOS_MPI_REDUCTION_OP_SETTER_HPP
11#define TEUCHOS_MPI_REDUCTION_OP_SETTER_HPP
24#include "Teuchos_ReductionOp.hpp"
37class TEUCHOSCOMM_LIB_DLL_EXPORT MpiReductionOpBase :
38 virtual public Describable {
41 reduce (
void* invec,
void* inoutvec,
42 int* len, MPI_Datatype* datatype)
const = 0;
51template<
typename OrdinalType>
52class 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&);
93TEUCHOSCOMM_LIB_DLL_EXPORT MPI_Op setMpiReductionOp (
const MpiReductionOpBase& reductOp);
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.
Namespace of implementation details.
The Teuchos namespace contains all of the classes, structs and enums used by Teuchos,...