COOLFluiD  Release kernel
COOLFluiD is a Collaborative Simulation Environment (CSE) focused on complex MultiPhysics simulations.
Namespaces | Classes | Typedefs | Functions | Variables
cf3::common::PE Namespace Reference

Classes offering a MPI interface for COOLFluiD. More...

Namespaces

 detail
 Default of get_mpi_datatype_impl which returns nullptr.
 

Classes

class  Buffer
 Buffer that can hold multiple data types, useful for MPI communication. More...
 
class  Comm
 
class  CommPattern
 
class  CommWrapper
 Base wrapper class serving as interface. More...
 
class  CommWrapperMArray
 Wrapper class for Table components. More...
 
class  CommWrapperMArray< T, 1 >
 
class  CommWrapperMArray< T, 2 >
 
class  CommWrapperPtr
 Wrapper class for raw ptr arrays allocated by new[]/malloc/calloc. More...
 
class  CommWrapperVector
 Wrapper class for std::vectors. More...
 
class  CommWrapperView
 
class  get_mpi_op
 ACCESS AND REGISTRATION MECHANISM. More...
 
struct  get_mpi_op< T, bitwise_and, typename boost::enable_if< boost::is_arithmetic< T > >::type >
 
struct  get_mpi_op< T, bitwise_or, typename boost::enable_if< boost::is_arithmetic< T > >::type >
 
struct  get_mpi_op< T, bitwise_xor, typename boost::enable_if< boost::is_arithmetic< T > >::type >
 
struct  get_mpi_op< T, logical_and, typename boost::enable_if< boost::is_arithmetic< T > >::type >
 
struct  get_mpi_op< T, logical_or, typename boost::enable_if< boost::is_arithmetic< T > >::type >
 
struct  get_mpi_op< T, logical_xor, typename boost::enable_if< boost::is_arithmetic< T > >::type >
 
struct  get_mpi_op< T, max, typename boost::enable_if< boost::is_arithmetic< T > >::type >
 
struct  get_mpi_op< T, min, typename boost::enable_if< boost::is_arithmetic< T > >::type >
 
struct  get_mpi_op< T, multiplies, typename boost::enable_if< boost::is_arithmetic< T > >::type >
 
struct  get_mpi_op< T, plus, typename boost::enable_if< boost::is_arithmetic< T > >::type >
 
struct  ListeningInfo
 Holds MPI listening information. More...
 
class  ListeningThread
 Listener for MPI messages. More...
 
class  Manager
 
struct  PackedObject
 
class  WorkerGroup
 

Typedefs

typedef MPI_Comm Communicator
 communicator More...
 
typedef MPI_Op Operation
 operation (mostly for reduce and all_reduce) More...
 
typedef MPI_Datatype Datatype
 datatype More...
 

Functions

template<typename T >
T * all_gather (const Communicator &comm, const T *in_values, const int in_n, T *out_values, const int stride=1)
 
template<typename T >
void all_gather (const Communicator &comm, const std::vector< T > &in_values, std::vector< T > &out_values, const int stride=1)
 
template<typename T >
void all_gather (const Communicator &comm, const T &in_value, std::vector< T > &out_values)
 
template<typename T >
T * all_gather (const Communicator &comm, const T *in_values, const int in_n, const int *in_map, T *out_values, int *out_n, const int *out_map, const int stride=1)
 
template<typename T >
T * all_gather (const Communicator &comm, const T *in_values, const int in_n, T *out_values, int *out_n, const int stride=1)
 
template<typename T >
void all_gather (const Communicator &comm, const std::vector< T > &in_values, const int in_n, const std::vector< int > &in_map, std::vector< T > &out_values, std::vector< int > &out_n, const std::vector< int > &out_map, const int stride=1)
 
template<typename T >
void all_gather (const Communicator &comm, const std::vector< T > &in_values, const int in_n, std::vector< T > &out_values, std::vector< int > &out_n, const int stride=1)
 
template<typename T >
void all_gather (const Communicator &comm, const std::vector< T > &send, std::vector< std::vector< T > > &recv)
 
template<typename T , typename Op >
T * all_reduce (const Communicator &comm, const Op &op, const T *in_values, const int in_n, T *out_values, const int stride=1)
 
template<typename T , typename Op >
void all_reduce (const Communicator &comm, const Op &op, const std::vector< T > &in_values, std::vector< T > &out_values, const int stride=1)
 
template<typename T , typename Op >
T * all_reduce (const Communicator &comm, const Op &op, const T *in_values, const int in_n, const int *in_map, T *out_values, const int *out_map, const int stride=1)
 
template<typename T , typename Op >
void all_reduce (const Communicator &comm, const Op &op, const std::vector< T > &in_values, const std::vector< int > &in_map, std::vector< T > &out_values, const std::vector< int > &out_map, const int stride=1)
 
template<typename T >
T * all_to_all (const Communicator &comm, const T *in_values, const int in_n, T *out_values, const int stride=1)
 
template<typename T >
void all_to_all (const Communicator &comm, const std::vector< T > &in_values, std::vector< T > &out_values, const int stride=1)
 
template<typename T >
T * all_to_all (const Communicator &comm, const T *in_values, const int *in_n, const int *in_map, T *out_values, int *out_n, const int *out_map, const int stride=1)
 
template<typename T >
T * all_to_all (const Communicator &comm, const T *in_values, const int *in_n, T *out_values, int *out_n, const int stride=1)
 
template<typename T >
void all_to_all (const Communicator &comm, const std::vector< T > &in_values, const std::vector< int > &in_n, const std::vector< int > &in_map, std::vector< T > &out_values, std::vector< int > &out_n, const std::vector< int > &out_map, const int stride=1)
 
template<typename T >
void all_to_all (const Communicator &comm, const std::vector< T > &in_values, const std::vector< int > &in_n, std::vector< T > &out_values, std::vector< int > &out_n, const int stride=1)
 
template<typename T >
void all_to_all (const Communicator &comm, const std::vector< std::vector< T > > &send, std::vector< std::vector< T > > &recv)
 
template<typename T >
T * broadcast (const Communicator &comm, const T *in_values, const int in_n, T *out_values, const int root, const int stride=1)
 
template<typename T >
void broadcast (const Communicator &comm, const std::vector< T > &in_values, std::vector< T > &out_values, const int root, const int stride=1)
 
template<typename T >
T * broadcast (const Communicator &comm, const T *in_values, const int in_n, const int *in_map, T *out_values, const int *out_map, const int root, const int stride=1)
 
template<typename T >
void broadcast (const Communicator &comm, const std::vector< T > &in_values, const std::vector< int > &in_map, std::vector< T > &out_values, const std::vector< int > &out_map, const int root, const int stride=1)
 
template<>
void Buffer::pack< std::string > (const std::string *data, const Uint data_size)
 pack specialization for std::string More...
 
template<>
void Buffer::unpack< std::string > (std::string *data, const Uint data_size)
 unpack specialization for std::string More...
 
 CF3_COMMON_PE_BUFFER_PACK_OPERATOR (bool)
 
 CF3_COMMON_PE_BUFFER_PACK_OPERATOR (char)
 
 CF3_COMMON_PE_BUFFER_PACK_OPERATOR (unsigned char)
 
 CF3_COMMON_PE_BUFFER_PACK_OPERATOR (short)
 
 CF3_COMMON_PE_BUFFER_PACK_OPERATOR (int)
 
 CF3_COMMON_PE_BUFFER_PACK_OPERATOR (long)
 
 CF3_COMMON_PE_BUFFER_PACK_OPERATOR (unsigned long long)
 
 CF3_COMMON_PE_BUFFER_PACK_OPERATOR (float)
 
 CF3_COMMON_PE_BUFFER_PACK_OPERATOR (double)
 
 CF3_COMMON_PE_BUFFER_PACK_OPERATOR (long double)
 
 CF3_COMMON_PE_BUFFER_PACK_OPERATOR (std::string)
 
 CF3_COMMON_PE_BUFFER_PACK_OPERATOR_VECTOR (char)
 
 CF3_COMMON_PE_BUFFER_PACK_OPERATOR_VECTOR (unsigned char)
 
 CF3_COMMON_PE_BUFFER_PACK_OPERATOR_VECTOR (short)
 
 CF3_COMMON_PE_BUFFER_PACK_OPERATOR_VECTOR (int)
 
 CF3_COMMON_PE_BUFFER_PACK_OPERATOR_VECTOR (long)
 
 CF3_COMMON_PE_BUFFER_PACK_OPERATOR_VECTOR (unsigned long long)
 
 CF3_COMMON_PE_BUFFER_PACK_OPERATOR_VECTOR (float)
 
 CF3_COMMON_PE_BUFFER_PACK_OPERATOR_VECTOR (double)
 
 CF3_COMMON_PE_BUFFER_PACK_OPERATOR_VECTOR (long double)
 
 CF3_COMMON_PE_BUFFER_PACK_OPERATOR_VECTOR (std::string)
 
 CF3_COMMON_PE_BUFFER_PACK_OPERATOR_SUB_ARRAY (Uint)
 
 CF3_COMMON_PE_BUFFER_PACK_OPERATOR_SUB_ARRAY (int)
 
 CF3_COMMON_PE_BUFFER_PACK_OPERATOR_SUB_ARRAY (Real)
 
 CF3_COMMON_PE_BUFFER_PACK_OPERATOR_SUB_ARRAY (bool)
 
 CF3_COMMON_PE_BUFFER_PACK_OPERATOR_CONST_SUB_ARRAY (Uint)
 
 CF3_COMMON_PE_BUFFER_PACK_OPERATOR_CONST_SUB_ARRAY (int)
 
 CF3_COMMON_PE_BUFFER_PACK_OPERATOR_CONST_SUB_ARRAY (Real)
 
 CF3_COMMON_PE_BUFFER_PACK_OPERATOR_CONST_SUB_ARRAY (bool)
 
 CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR (bool)
 
 CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR (char)
 
 CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR (unsigned char)
 
 CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR (short)
 
 CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR (int)
 
 CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR (long)
 
 CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR (unsigned long long)
 
 CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR (float)
 
 CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR (double)
 
 CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR (long double)
 
 CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR (std::string)
 
 CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR_VECTOR (char)
 
 CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR_VECTOR (unsigned char)
 
 CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR_VECTOR (short)
 
 CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR_VECTOR (int)
 
 CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR_VECTOR (long)
 
 CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR_VECTOR (unsigned long long)
 
 CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR_VECTOR (float)
 
 CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR_VECTOR (double)
 
 CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR_VECTOR (long double)
 
 CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR_VECTOR (std::string)
 
 CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR_SUB_ARRAY (Uint)
 
 CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR_SUB_ARRAY (int)
 
 CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR_SUB_ARRAY (Real)
 
 CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR_SUB_ARRAY (bool)
 
Bufferoperator<< (Buffer &buffer, PackedObject &obj)
 
Bufferoperator>> (Buffer &buffer, PackedObject &obj)
 
std::ostream & operator<< (std::ostream &out, const Buffer &buffer)
 
void wait_for_debugger (const int rank)
 
template<typename T >
T * gather (const Communicator &comm, const T *in_values, const int in_n, T *out_values, const int root, const int stride=1)
 
template<typename T >
void gather (const Communicator &comm, const std::vector< T > &in_values, std::vector< T > &out_values, const int root, const int stride=1)
 
template<typename T >
T * gather (const Communicator &comm, const T *in_values, const int in_n, const int *in_map, T *out_values, int *out_n, const int *out_map, const int root, const int stride=1)
 
template<typename T >
T * gather (const Communicator &comm, const T *in_values, const int in_n, T *out_values, int *out_n, const int root, const int stride=1)
 
template<typename T >
void gather (const Communicator &comm, const std::vector< T > &in_values, const int in_n, const std::vector< int > &in_map, std::vector< T > &out_values, std::vector< int > &out_n, const std::vector< int > &out_map, const int root, const int stride=1)
 
template<typename T >
void gather (const Communicator &comm, const std::vector< T > &in_values, const int in_n, std::vector< T > &out_values, std::vector< int > &out_n, const int root, const int stride=1)
 
template<typename T , typename Op >
T * reduce (const Communicator &comm, const Op &op, const T *in_values, const int in_n, T *out_values, const int root, const int stride=1)
 
template<typename T , typename Op >
void reduce (const Communicator &comm, const Op &op, const std::vector< T > &in_values, std::vector< T > &out_values, const int root, const int stride=1)
 
template<typename T , typename Op >
T * reduce (const Communicator &comm, const Op &op, const T *in_values, const int in_n, const int *in_map, T *out_values, const int *out_map, const int root, const int stride=1)
 
template<typename T , typename Op >
void reduce (const Communicator &comm, const Op &op, const std::vector< T > &in_values, const std::vector< int > &in_map, std::vector< T > &out_values, const std::vector< int > &out_map, const int root, const int stride=1)
 
template<typename T >
T * scatter (const Communicator &comm, const T *in_values, const int in_n, T *out_values, const int root, const int stride=1)
 
template<typename T >
void scatter (const Communicator &comm, const std::vector< T > &in_values, std::vector< T > &out_values, const int root, const int stride=1)
 
template<typename T >
T * scatter (const Communicator &comm, const T *in_values, const int *in_n, const int *in_map, T *out_values, int &out_n, const int *out_map, const int root, const int stride=1)
 
template<typename T >
T * scatter (const Communicator &comm, const T *in_values, const int *in_n, T *out_values, int &out_n, const int root, const int stride=1)
 
template<typename T >
void scatter (const Communicator &comm, const std::vector< T > &in_values, const std::vector< int > &in_n, const std::vector< int > &in_map, std::vector< T > &out_values, int &out_n, const std::vector< int > &out_map, const int root, const int stride=1)
 
template<typename T >
void scatter (const Communicator &comm, const std::vector< T > &in_values, const std::vector< int > &in_n, std::vector< T > &out_values, int &out_n, const int root, const int stride=1)
 
template<typename T >
Datatype get_mpi_datatype (const T &ref_of_type)
 ACCESS AND REGISTRATION MECHANISM. More...
 
template<typename T >
Datatype get_mpi_datatype ()
 
 MPI_CUSTOM_OPERATION (max, true,*out=*in > *out?*in:*out)
 BUILT-IN OPERATIONS. More...
 
 MPI_CUSTOM_OPERATION (min, true,*out=*in< *out?*in:*out)
 
 MPI_CUSTOM_OPERATION (plus, true,*out=*in+*out)
 
 MPI_CUSTOM_OPERATION (multiplies, true,*out=*in **out)
 
 MPI_CUSTOM_OPERATION (logical_and, true,*out=*in &&*out)
 
 MPI_CUSTOM_OPERATION (logical_or, true,*out=*in||*out)
 
 MPI_CUSTOM_OPERATION (logical_xor, true,*out=!*in^!*out)
 
 MPI_CUSTOM_OPERATION (bitwise_and, true,*out=*in &*out)
 
 MPI_CUSTOM_OPERATION (bitwise_or, true,*out=*in|*out)
 
 MPI_CUSTOM_OPERATION (bitwise_xor, true,*out=*in^*out)
 
 MPI_CUSTOM_OPERATION (customplus, true,*out=*in+*out)
 EXAMPLE ON HOW TO IMPLEMENT A CUSTOM OPERATION. More...
 

Variables

ComponentBuilder< CommWrapperPtr< int >, CommWrapper, LibCommonCommWrapperPtr_int_builder
 
ComponentBuilder< CommWrapperPtr< Uint >, CommWrapper, LibCommonCommWrapperPtr_Uint_builder
 
ComponentBuilder< CommWrapperPtr< Real >, CommWrapper, LibCommonCommWrapperPtr_Real_builder
 
ComponentBuilder< CommWrapperVector< int >, CommWrapper, LibCommonCommWrapperVector_int_builder
 
ComponentBuilder< CommWrapperVector< Uint >, CommWrapper, LibCommonCommWrapperVector_Uint_builder
 
ComponentBuilder< CommWrapperVector< Real >, CommWrapper, LibCommonCommWrapperVector_Real_builder
 
ComponentBuilder< CommWrapperMArray< Uint, 1 >, CommWrapper, LibCommonCommWrapperMArray_Uint_1_builder
 
ComponentBuilder< CommWrapperMArray< int, 1 >, CommWrapper, LibCommonCommWrapperMArray_int_1_builder
 
ComponentBuilder< CommWrapperMArray< Real, 1 >, CommWrapper, LibCommonCommWrapperMArray_Real_1_builder
 
ComponentBuilder< CommWrapperMArray< Uint, 2 >, CommWrapper, LibCommonCommWrapperMArray_Uint_2_builder
 
ComponentBuilder< CommWrapperMArray< int, 2 >, CommWrapper, LibCommonCommWrapperMArray_int_2_builder
 
ComponentBuilder< CommWrapperMArray< Real, 2 >, CommWrapper, LibCommonCommWrapperMArray_Real_2_builder
 
common::ComponentBuilder< Manager, Component, LibCommonManager_Builder
 
ComponentBuilder< WorkerGroup, Component, LibCommonWorkerGroup_Builder
 

Detailed Description

Classes offering a MPI interface for COOLFluiD.

Typedef Documentation

typedef MPI_Comm Communicator

communicator

Definition at line 41 of file types.hpp.

typedef MPI_Datatype Datatype

datatype

Definition at line 47 of file types.hpp.

typedef MPI_Op Operation

operation (mostly for reduce and all_reduce)

Definition at line 44 of file types.hpp.

Function Documentation

T* cf3::common::PE::all_gather ( const Communicator comm,
const T *  in_values,
const int  in_n,
T *  out_values,
const int  stride = 1 
)
inline

Interface to the constant size all_gather communication with specialization to raw pointer. If null pointer passed for out_values then memory is allocated and the pointer to it is returned, otherwise out_values is returned.

Parameters
commComm::Communicator
in_valuespointer to the send buffer
in_nsize of the send array (number of items)
out_valuespointer to the receive buffer
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 185 of file all_gather.hpp.

void cf3::common::PE::all_gather ( const Communicator comm,
const std::vector< T > &  in_values,
std::vector< T > &  out_values,
const int  stride = 1 
)
inline

Interface to the constant size all_gather communication with specialization to std::vector.

Parameters
commComm::Communicator
in_valuessend buffer
out_valuesreceive buffer
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 214 of file all_gather.hpp.

void cf3::common::PE::all_gather ( const Communicator comm,
const T &  in_value,
std::vector< T > &  out_values 
)
inline

Interface to the constant size all_gather communication with specialization to std::vector.

Parameters
commComm::Communicator
in_valuessend buffer
out_valuesreceive buffer
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 241 of file all_gather.hpp.

T * all_gather ( const Communicator comm,
const T *  in_values,
const int  in_n,
const int *  in_map,
T *  out_values,
int *  out_n,
const int *  out_map,
const int  stride 
)
inline

Interface to the variable size mapped all_gather communication with specialization to raw pointer. If null pointer passed for out_values then memory is allocated to fit the max in map and the pointer is returned, otherwise out_values is returned. If out_n (receive counts) contains only -1, then a pre communication occurs to fill out_n. However due to the fact that map already needs all the information if you use all_gather to allocate out_values and fill out_n then you most probably doing something wrong.

Parameters
commComm::Communicator
in_valuespointer to the send buffer
in_narray holding send counts of size #processes
in_maparray of size #processes holding the mapping. If zero pointer passed, no mapping on send side.
out_valuespointer to the receive buffer
out_narray holding receive counts of size #processes. If zero pointer passed, no mapping on receive side.
out_maparray of size #processes holding the mapping
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 337 of file all_gather.hpp.

T* cf3::common::PE::all_gather ( const Communicator comm,
const T *  in_values,
const int  in_n,
T *  out_values,
int *  out_n,
const int  stride = 1 
)
inline

Interface to the variable size all_gather communication with specialization to raw pointer. If null pointer passed for out_values then memory is allocated and the pointer to it is returned, otherwise out_values is returned. If out_n (receive counts) contains only -1, then a pre communication occurs to fill out_n.

Parameters
commComm::Communicator
in_valuespointer to the send buffer
in_narray holding send counts of size #processes
out_valuespointer to the receive buffer
out_narray holding receive counts of size #processes
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 275 of file all_gather.hpp.

void all_gather ( const Communicator comm,
const std::vector< T > &  in_values,
const int  in_n,
const std::vector< int > &  in_map,
std::vector< T > &  out_values,
std::vector< int > &  out_n,
const std::vector< int > &  out_map,
const int  stride 
)
inline

Interface to the constant size all_gather communication with specialization to raw pointer. If out_values's size is zero then its resized. If out_n (receive counts) is not of size of #processes, then error occurs. If out_n (receive counts) is filled with -1s, then a pre communication occurs to fill out_n. However due to the fact that map already needs all the information if you use all_gather to allocate out_values and fill out_n then you most probably doing something wrong.

Parameters
commComm::Communicator
in_valuessend buffer
in_nsend counts of size #processes
in_maparray of size #processes holding the mapping. If zero pointer or zero size vector passed, no mapping on send side.
out_valuesreceive buffer
out_nreceive counts of size #processes
out_maparray of size #processes holding the mapping. If zero pointer or zero size vector passed, no mapping on receive side.
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 388 of file all_gather.hpp.

void cf3::common::PE::all_gather ( const Communicator comm,
const std::vector< T > &  in_values,
const int  in_n,
std::vector< T > &  out_values,
std::vector< int > &  out_n,
const int  stride = 1 
)
inline

Interface to the constant size all_gather communication with specialization to std::vector. If out_values's size is zero or in_values==out_values, then its resized. If out_n (receive counts) is not of size of #processes, then error occurs. If out_n (receive counts) is filled with -1s, then a pre communication occurs to fill out_n.

Parameters
commComm::Communicator
in_valuessend buffer
in_nsend counts of size #processes
out_valuesreceive buffer
out_nreceive counts of size #processes
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 302 of file all_gather.hpp.

void cf3::common::PE::all_gather ( const Communicator comm,
const std::vector< T > &  send,
std::vector< std::vector< T > > &  recv 
)

Definition at line 423 of file all_gather.hpp.

T* cf3::common::PE::all_reduce ( const Communicator comm,
const Op &  op,
const T *  in_values,
const int  in_n,
T *  out_values,
const int  stride = 1 
)
inline

Interface to all_reduce communication with specialization to raw pointer. If null pointer passed for out_values then memory is allocated and the pointer to it is returned, otherwise out_values is returned.

Parameters
commMPI::communicator
in_valuespointer to the send buffer
in_nsize of the send array (number of items)
out_valuespointer to the receive buffer
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 117 of file all_reduce.hpp.

void cf3::common::PE::all_reduce ( const Communicator comm,
const Op &  op,
const std::vector< T > &  in_values,
std::vector< T > &  out_values,
const int  stride = 1 
)
inline

Interface to all_reduce communication with specialization to std::vector.

Parameters
commMPI::communicator
in_valuessend buffer
out_valuesreceive buffer
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 142 of file all_reduce.hpp.

T* cf3::common::PE::all_reduce ( const Communicator comm,
const Op &  op,
const T *  in_values,
const int  in_n,
const int *  in_map,
T *  out_values,
const int *  out_map,
const int  stride = 1 
)
inline

Interface to the mapped all_reduce communication with specialization to raw pointer. If null pointer passed for out_values then memory is allocated to fit the max in map and the pointer is returned, otherwise out_values is returned. If out_n (receive counts) contains only -1, then a pre communication occurs to fill out_n. However due to the fact that map already needs all the information if you use all_to_all to allocate out_values and fill out_n then you most probably doing something wrong.

Parameters
commMPI::communicator
in_valuespointer to the send buffer
in_narray holding send counts of size #processes
in_maparray of size #processes holding the mapping. If zero pointer passed, no mapping on send side.
out_valuespointer to the receive buffer
out_narray holding receive counts of size #processes. If zero pointer passed, no mapping on receive side.
out_maparray of size #processes holding the mapping
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 171 of file all_reduce.hpp.

void cf3::common::PE::all_reduce ( const Communicator comm,
const Op &  op,
const std::vector< T > &  in_values,
const std::vector< int > &  in_map,
std::vector< T > &  out_values,
const std::vector< int > &  out_map,
const int  stride = 1 
)
inline

Interface to the all_reduce communication with specialization to std::vector. If out_values's size is zero then its resized. If out_n (receive counts) is not of size of #processes, then error occurs. If out_n (receive counts) is filled with -1s, then a pre communication occurs to fill out_n. However due to the fact that map already needs all the information if you use all_to_all to allocate out_values and fill out_n then you most probably doing something wrong.

Parameters
commMPI::communicator
in_valuessend buffer
in_nsend counts of size #processes
in_maparray of size #processes holding the mapping. If zero pointer or zero size vector passed, no mapping on send side.
out_valuesreceive buffer
out_nreceive counts of size #processes
out_maparray of size #processes holding the mapping. If zero pointer or zero size vector passed, no mapping on receive side.
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 209 of file all_reduce.hpp.

T* cf3::common::PE::all_to_all ( const Communicator comm,
const T *  in_values,
const int  in_n,
T *  out_values,
const int  stride = 1 
)
inline

Interface to the constant size all to all communication with specialization to raw pointer. If null pointer passed for out_values then memory is allocated and the pointer to it is returned, otherwise out_values is returned.

Parameters
commComm::Communicator
in_valuespointer to the send buffer
in_nsize of the send array (number of items)
out_valuespointer to the receive buffer
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 192 of file all_to_all.hpp.

void cf3::common::PE::all_to_all ( const Communicator comm,
const std::vector< T > &  in_values,
std::vector< T > &  out_values,
const int  stride = 1 
)
inline

Interface to the constant size all to all communication with specialization to std::vector.

Parameters
commComm::Communicator
in_valuessend buffer
out_valuesreceive buffer
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 221 of file all_to_all.hpp.

T * all_to_all ( const Communicator comm,
const T *  in_values,
const int *  in_n,
const int *  in_map,
T *  out_values,
int *  out_n,
const int *  out_map,
const int  stride 
)
inline

Interface to the variable size mapped all to all communication with specialization to raw pointer. If null pointer passed for out_values then memory is allocated to fit the max in map and the pointer is returned, otherwise out_values is returned. If out_n (receive counts) contains only -1, then a pre communication occurs to fill out_n. However due to the fact that map already needs all the information if you use all_to_all to allocate out_values and fill out_n then you most probably doing something wrong.

Parameters
commComm::Communicator
in_valuespointer to the send buffer
in_narray holding send counts of size #processes
in_maparray of size #processes holding the mapping. If zero pointer passed, no mapping on send side.
out_valuespointer to the receive buffer
out_narray holding receive counts of size #processes. If zero pointer passed, no mapping on receive side.
out_maparray of size #processes holding the mapping
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 318 of file all_to_all.hpp.

T* cf3::common::PE::all_to_all ( const Communicator comm,
const T *  in_values,
const int *  in_n,
T *  out_values,
int *  out_n,
const int  stride = 1 
)
inline

Interface to the variable size all to all communication with specialization to raw pointer. If null pointer passed for out_values then memory is allocated and the pointer to it is returned, otherwise out_values is returned. If out_n (receive counts) contains only -1, then a pre communication occurs to fill out_n.

Parameters
commComm::Communicator
in_valuespointer to the send buffer
in_narray holding send counts of size #processes
out_valuespointer to the receive buffer
out_narray holding receive counts of size #processes
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 256 of file all_to_all.hpp.

void all_to_all ( const Communicator comm,
const std::vector< T > &  in_values,
const std::vector< int > &  in_n,
const std::vector< int > &  in_map,
std::vector< T > &  out_values,
std::vector< int > &  out_n,
const std::vector< int > &  out_map,
const int  stride 
)
inline

Interface to the constant size all to all communication with specialization to raw pointer. If out_values's size is zero then its resized. If out_n (receive counts) is not of size of #processes, then error occurs. If out_n (receive counts) is filled with -1s, then a pre communication occurs to fill out_n. However due to the fact that map already needs all the information if you use all_to_all to allocate out_values and fill out_n then you most probably doing something wrong.

Parameters
commComm::Communicator
in_valuessend buffer
in_nsend counts of size #processes
in_maparray of size #processes holding the mapping. If zero pointer or zero size vector passed, no mapping on send side.
out_valuesreceive buffer
out_nreceive counts of size #processes
out_maparray of size #processes holding the mapping. If zero pointer or zero size vector passed, no mapping on receive side.
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 369 of file all_to_all.hpp.

void cf3::common::PE::all_to_all ( const Communicator comm,
const std::vector< T > &  in_values,
const std::vector< int > &  in_n,
std::vector< T > &  out_values,
std::vector< int > &  out_n,
const int  stride = 1 
)
inline

Interface to the constant size all to all communication with specialization to std::vector. If out_values's size is zero or in_values==out_values then its resized. If out_n (receive counts) is not of size of #processes, then error occurs. If out_n (receive counts) is filled with -1s, then a pre communication occurs to fill out_n.

Parameters
commComm::Communicator
in_valuessend buffer
in_nsend counts of size #processes
out_valuesreceive buffer
out_nreceive counts of size #processes
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 283 of file all_to_all.hpp.

void cf3::common::PE::all_to_all ( const Communicator comm,
const std::vector< std::vector< T > > &  send,
std::vector< std::vector< T > > &  recv 
)

Definition at line 409 of file all_to_all.hpp.

T* cf3::common::PE::broadcast ( const Communicator comm,
const T *  in_values,
const int  in_n,
T *  out_values,
const int  root,
const int  stride = 1 
)
inline

Interface to broadcast communication with specialization to raw pointer. If null pointer passed for out_values then memory is allocated and the pointer to it is returned, otherwise out_values is returned.

Parameters
commMPI::communicator
in_valuespointer to the send buffer
in_nsize of the send array (number of items)
out_valuespointer to the receive buffer
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 111 of file broadcast.hpp.

void cf3::common::PE::broadcast ( const Communicator comm,
const std::vector< T > &  in_values,
std::vector< T > &  out_values,
const int  root,
const int  stride = 1 
)
inline

Interface to broadcast communication with specialization to std::vector.

Parameters
commMPI::communicator
in_valuessend buffer
out_valuesreceive buffer
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 146 of file broadcast.hpp.

T* cf3::common::PE::broadcast ( const Communicator comm,
const T *  in_values,
const int  in_n,
const int *  in_map,
T *  out_values,
const int *  out_map,
const int  root,
const int  stride = 1 
)
inline

Interface to the mapped broadcast communication with specialization to raw pointer. If null pointer passed for out_values then memory is allocated to fit the max in map and the pointer is returned, otherwise out_values is returned. If out_n (receive counts) contains only -1, then a pre communication occurs to fill out_n. However due to the fact that map already needs all the information if you use all_to_all to allocate out_values and fill out_n then you most probably doing something wrong.

Parameters
commMPI::communicator
in_valuespointer to the send buffer
in_narray holding send counts of size #processes
in_maparray of size #processes holding the mapping. If zero pointer passed, no mapping on send side.
out_valuespointer to the receive buffer
out_narray holding receive counts of size #processes. If zero pointer passed, no mapping on receive side.
out_maparray of size #processes holding the mapping
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 198 of file broadcast.hpp.

void cf3::common::PE::broadcast ( const Communicator comm,
const std::vector< T > &  in_values,
const std::vector< int > &  in_map,
std::vector< T > &  out_values,
const std::vector< int > &  out_map,
const int  root,
const int  stride = 1 
)
inline

Interface to the broadcast communication with specialization to std::vector. If out_values's size is zero then its resized. If out_n (receive counts) is not of size of #processes, then error occurs. If out_n (receive counts) is filled with -1s, then a pre communication occurs to fill out_n. However due to the fact that map already needs all the information if you use all_to_all to allocate out_values and fill out_n then you most probably doing something wrong.

Parameters
commMPI::communicator
in_valuessend buffer
in_nsend counts of size #processes
in_maparray of size #processes holding the mapping. If zero pointer or zero size vector passed, no mapping on send side.
out_valuesreceive buffer
out_nreceive counts of size #processes
out_maparray of size #processes holding the mapping. If zero pointer or zero size vector passed, no mapping on receive side.
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 247 of file broadcast.hpp.

void cf3::common::PE::Buffer::pack< std::string > ( const std::string *  data,
const Uint  data_size 
)
inline

pack specialization for std::string

Definition at line 429 of file Buffer.hpp.

void cf3::common::PE::Buffer::unpack< std::string > ( std::string *  data,
const Uint  data_size 
)
inline

unpack specialization for std::string

Definition at line 447 of file Buffer.hpp.

cf3::common::PE::CF3_COMMON_PE_BUFFER_PACK_OPERATOR ( bool  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_PACK_OPERATOR ( char  )
CF3_COMMON_PE_BUFFER_PACK_OPERATOR ( unsigned  char)
cf3::common::PE::CF3_COMMON_PE_BUFFER_PACK_OPERATOR ( short  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_PACK_OPERATOR ( int  )
CF3_COMMON_PE_BUFFER_PACK_OPERATOR ( long  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_PACK_OPERATOR ( unsigned long  long)
cf3::common::PE::CF3_COMMON_PE_BUFFER_PACK_OPERATOR ( float  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_PACK_OPERATOR ( double  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_PACK_OPERATOR ( long  double)
cf3::common::PE::CF3_COMMON_PE_BUFFER_PACK_OPERATOR ( std::string  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_PACK_OPERATOR_CONST_SUB_ARRAY ( Uint  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_PACK_OPERATOR_CONST_SUB_ARRAY ( int  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_PACK_OPERATOR_CONST_SUB_ARRAY ( Real  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_PACK_OPERATOR_CONST_SUB_ARRAY ( bool  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_PACK_OPERATOR_SUB_ARRAY ( Uint  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_PACK_OPERATOR_SUB_ARRAY ( int  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_PACK_OPERATOR_SUB_ARRAY ( Real  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_PACK_OPERATOR_SUB_ARRAY ( bool  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_PACK_OPERATOR_VECTOR ( char  )
CF3_COMMON_PE_BUFFER_PACK_OPERATOR_VECTOR ( unsigned  char)
cf3::common::PE::CF3_COMMON_PE_BUFFER_PACK_OPERATOR_VECTOR ( short  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_PACK_OPERATOR_VECTOR ( int  )
CF3_COMMON_PE_BUFFER_PACK_OPERATOR_VECTOR ( long  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_PACK_OPERATOR_VECTOR ( unsigned long  long)
cf3::common::PE::CF3_COMMON_PE_BUFFER_PACK_OPERATOR_VECTOR ( float  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_PACK_OPERATOR_VECTOR ( double  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_PACK_OPERATOR_VECTOR ( long  double)
cf3::common::PE::CF3_COMMON_PE_BUFFER_PACK_OPERATOR_VECTOR ( std::string  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR ( bool  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR ( char  )
CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR ( unsigned  char)
cf3::common::PE::CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR ( short  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR ( int  )
CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR ( long  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR ( unsigned long  long)
cf3::common::PE::CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR ( float  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR ( double  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR ( long  double)
cf3::common::PE::CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR ( std::string  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR_SUB_ARRAY ( Uint  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR_SUB_ARRAY ( int  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR_SUB_ARRAY ( Real  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR_SUB_ARRAY ( bool  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR_VECTOR ( char  )
CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR_VECTOR ( unsigned  char)
cf3::common::PE::CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR_VECTOR ( short  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR_VECTOR ( int  )
CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR_VECTOR ( long  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR_VECTOR ( unsigned long  long)
cf3::common::PE::CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR_VECTOR ( float  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR_VECTOR ( double  )
cf3::common::PE::CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR_VECTOR ( long  double)
cf3::common::PE::CF3_COMMON_PE_BUFFER_UNPACK_OPERATOR_VECTOR ( std::string  )
T* cf3::common::PE::gather ( const Communicator comm,
const T *  in_values,
const int  in_n,
T *  out_values,
const int  root,
const int  stride = 1 
)
inline

Interface to the constant size Gather communication with specialization to raw pointer. If null pointer passed for out_values then memory is allocated and the pointer to it is returned, otherwise out_values is returned.

Parameters
commComm::Communicator
in_valuespointer to the send buffer
in_nsize of the send array (number of items)
out_valuespointer to the receive buffer
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 186 of file gather.hpp.

void cf3::common::PE::gather ( const Communicator comm,
const std::vector< T > &  in_values,
std::vector< T > &  out_values,
const int  root,
const int  stride = 1 
)
inline

Interface to the constant size Gather communication with specialization to std::vector.

Parameters
commComm::Communicator
in_valuessend buffer
out_valuesreceive buffer
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 220 of file gather.hpp.

T * gather ( const Communicator comm,
const T *  in_values,
const int  in_n,
const int *  in_map,
T *  out_values,
int *  out_n,
const int *  out_map,
const int  root,
const int  stride 
)
inline

Interface to the variable size mapped Gather communication with specialization to raw pointer. If null pointer passed for out_values then memory is allocated to fit the max in map and the pointer is returned, otherwise out_values is returned. If out_n (receive counts) contains only -1, then a pre communication occurs to fill out_n. However due to the fact that map already needs all the information if you use gather to allocate out_values and fill out_n then you most probably doing something wrong.

Parameters
commComm::Communicator
in_valuespointer to the send buffer
in_narray holding send counts of size #processes
in_maparray of size #processes holding the mapping. If zero pointer passed, no mapping on send side.
out_valuespointer to the receive buffer
out_narray holding receive counts of size #processes. If zero pointer passed, no mapping on receive side.
out_maparray of size #processes holding the mapping
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 330 of file gather.hpp.

T* cf3::common::PE::gather ( const Communicator comm,
const T *  in_values,
const int  in_n,
T *  out_values,
int *  out_n,
const int  root,
const int  stride = 1 
)
inline

Interface to the variable size Gather communication with specialization to raw pointer. If null pointer passed for out_values then memory is allocated and the pointer to it is returned, otherwise out_values is returned. If out_n (receive counts) contains only -1, then a pre communication occurs to fill out_n.

Parameters
commComm::Communicator
in_valuespointer to the send buffer
in_narray holding send counts of size #processes
out_valuespointer to the receive buffer
out_narray holding receive counts of size #processes
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 263 of file gather.hpp.

void gather ( const Communicator comm,
const std::vector< T > &  in_values,
const int  in_n,
const std::vector< int > &  in_map,
std::vector< T > &  out_values,
std::vector< int > &  out_n,
const std::vector< int > &  out_map,
const int  root,
const int  stride 
)
inline

Interface to the constant size Gather communication with specialization to raw pointer. If out_values's size is zero then its resized. If out_n (receive counts) is not of size of #processes, then error occurs. If out_n (receive counts) is filled with -1s, then a pre communication occurs to fill out_n. However due to the fact that map already needs all the information if you use gather to allocate out_values and fill out_n then you most probably doing something wrong.

Parameters
commComm::Communicator
in_valuessend buffer
in_nsend counts of size #processes
in_maparray of size #processes holding the mapping. If zero pointer or zero size vector passed, no mapping on send side.
out_valuesreceive buffer
out_nreceive counts of size #processes
out_maparray of size #processes holding the mapping. If zero pointer or zero size vector passed, no mapping on receive side.
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 388 of file gather.hpp.

void cf3::common::PE::gather ( const Communicator comm,
const std::vector< T > &  in_values,
const int  in_n,
std::vector< T > &  out_values,
std::vector< int > &  out_n,
const int  root,
const int  stride = 1 
)
inline

Interface to the constant size Gather communication with specialization to std::vector. If out_values's size is zero or in_values==out_values then its resized. If out_n (receive counts) is not of size of #processes, then error occurs. If out_n (receive counts) is filled with -1s, then a pre communication occurs to fill out_n.

Parameters
commComm::Communicator
in_valuessend buffer
in_nsend counts of size #processes
out_valuesreceive buffer
out_nreceive counts of size #processes
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 290 of file gather.hpp.

Datatype cf3::common::PE::get_mpi_datatype ( const T &  ref_of_type)
inline

ACCESS AND REGISTRATION MECHANISM.

Function to obtain Datatype from type or if non-existent than commit one to MPI and store it.

Definition at line 49 of file datatype.hpp.

Datatype cf3::common::PE::get_mpi_datatype ( )
inline

Definition at line 62 of file datatype.hpp.

cf3::common::PE::MPI_CUSTOM_OPERATION ( max  ,
true  ,
out = *in,
*out?*in:*  out 
)

BUILT-IN OPERATIONS.

cf3::common::PE::MPI_CUSTOM_OPERATION ( min  ,
true   
)
cf3::common::PE::MPI_CUSTOM_OPERATION ( plus  ,
true  ,
out = *in+*out 
)
cf3::common::PE::MPI_CUSTOM_OPERATION ( multiplies  ,
true  ,
out = *in **out 
)
cf3::common::PE::MPI_CUSTOM_OPERATION ( logical_and  ,
true  ,
out = *in &&*out 
)
cf3::common::PE::MPI_CUSTOM_OPERATION ( logical_or  ,
true  ,
out = *in||*out 
)
cf3::common::PE::MPI_CUSTOM_OPERATION ( logical_xor  ,
true  ,
out = !*in^!*out 
)
cf3::common::PE::MPI_CUSTOM_OPERATION ( bitwise_and  ,
true  ,
out = *in &*out 
)
cf3::common::PE::MPI_CUSTOM_OPERATION ( bitwise_or  ,
true  ,
out = *in|*out 
)
cf3::common::PE::MPI_CUSTOM_OPERATION ( bitwise_xor  ,
true  ,
out = *in^*out 
)
cf3::common::PE::MPI_CUSTOM_OPERATION ( customplus  ,
true  ,
out = *in+*out 
)

EXAMPLE ON HOW TO IMPLEMENT A CUSTOM OPERATION.

Example operator, the only requirement is to have the following two members:

  • a boolean with name is_commutative
  • a function templatized by T respecting MPI_User_function syntax For ease of use, there is a macro called MPI_CUSTOM_OPERATION.
Buffer& cf3::common::PE::operator<< ( Buffer buffer,
PackedObject obj 
)
inline

Definition at line 672 of file Buffer.hpp.

std::ostream& cf3::common::PE::operator<< ( std::ostream &  out,
const Buffer buffer 
)
inline

Definition at line 686 of file Buffer.hpp.

Buffer& cf3::common::PE::operator>> ( Buffer buffer,
PackedObject obj 
)
inline

Definition at line 678 of file Buffer.hpp.

T* cf3::common::PE::reduce ( const Communicator comm,
const Op &  op,
const T *  in_values,
const int  in_n,
T *  out_values,
const int  root,
const int  stride = 1 
)
inline

Interface to reduce communication with specialization to raw pointer. If null pointer passed for out_values then memory is allocated and the pointer to it is returned, otherwise out_values is returned.

Parameters
commMPI::communicator
in_valuespointer to the send buffer
in_nsize of the send array (number of items)
out_valuespointer to the receive buffer
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 124 of file reduce.hpp.

void cf3::common::PE::reduce ( const Communicator comm,
const Op &  op,
const std::vector< T > &  in_values,
std::vector< T > &  out_values,
const int  root,
const int  stride = 1 
)
inline

Interface to reduce communication with specialization to std::vector.

Parameters
commMPI::communicator
in_valuessend buffer
out_valuesreceive buffer
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 159 of file reduce.hpp.

T* cf3::common::PE::reduce ( const Communicator comm,
const Op &  op,
const T *  in_values,
const int  in_n,
const int *  in_map,
T *  out_values,
const int *  out_map,
const int  root,
const int  stride = 1 
)
inline

Interface to the mapped reduce communication with specialization to raw pointer. If null pointer passed for out_values then memory is allocated to fit the max in map and the pointer is returned, otherwise out_values is returned. If out_n (receive counts) contains only -1, then a pre communication occurs to fill out_n. However due to the fact that map already needs all the information if you use to_all to allocate out_values and fill out_n then you most probably doing something wrong.

Parameters
commMPI::communicator
in_valuespointer to the send buffer
in_narray holding send counts of size #processes
in_maparray of size #processes holding the mapping. If zero pointer passed, no mapping on send side.
out_valuespointer to the receive buffer
out_narray holding receive counts of size #processes. If zero pointer passed, no mapping on receive side.
out_maparray of size #processes holding the mapping
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 198 of file reduce.hpp.

void cf3::common::PE::reduce ( const Communicator comm,
const Op &  op,
const std::vector< T > &  in_values,
const std::vector< int > &  in_map,
std::vector< T > &  out_values,
const std::vector< int > &  out_map,
const int  root,
const int  stride = 1 
)
inline

Interface to the reduce communication with specialization to std::vector. If out_values's size is zero then its resized. If out_n (receive counts) is not of size of #processes, then error occurs. If out_n (receive counts) is filled with -1s, then a pre communication occurs to fill out_n. However due to the fact that map already needs all the information if you use to_all to allocate out_values and fill out_n then you most probably doing something wrong.

Parameters
commMPI::communicator
in_valuessend buffer
in_nsend counts of size #processes
in_maparray of size #processes holding the mapping. If zero pointer or zero size vector passed, no mapping on send side.
out_valuesreceive buffer
out_nreceive counts of size #processes
out_maparray of size #processes holding the mapping. If zero pointer or zero size vector passed, no mapping on receive side.
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 246 of file reduce.hpp.

T* cf3::common::PE::scatter ( const Communicator comm,
const T *  in_values,
const int  in_n,
T *  out_values,
const int  root,
const int  stride = 1 
)
inline

Interface to the constant size scatter communication with specialization to raw pointer. If null pointer passed for out_values then memory is allocated and the pointer to it is returned, otherwise out_values is returned.

Parameters
commComm::Communicator
in_valuespointer to the send buffer
in_nsize of the send array (number of items)
out_valuespointer to the receive buffer
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 187 of file scatter.hpp.

void cf3::common::PE::scatter ( const Communicator comm,
const std::vector< T > &  in_values,
std::vector< T > &  out_values,
const int  root,
const int  stride = 1 
)
inline

Interface to the constant size scatter communication with specialization to std::vector.

Parameters
commComm::Communicator
in_valuessend buffer
out_valuesreceive buffer
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 221 of file scatter.hpp.

T * scatter ( const Communicator comm,
const T *  in_values,
const int *  in_n,
const int *  in_map,
T *  out_values,
int &  out_n,
const int *  out_map,
const int  root,
const int  stride 
)
inline

Interface to the variable size mapped scatter communication with specialization to raw pointer. If null pointer passed for out_values then memory is allocated to fit the max in map and the pointer is returned, otherwise out_values is returned. If out_n (receive counts) contains only -1, then a pre communication occurs to fill out_n. However due to the fact that map already needs all the information if you use scatter to allocate out_values and fill out_n then you most probably doing something wrong.

Parameters
commComm::Communicator
in_valuespointer to the send buffer
in_narray holding send counts of size #processes
in_maparray of size #processes holding the mapping. If zero pointer passed, no mapping on send side.
out_valuespointer to the receive buffer
out_narray holding receive counts of size #processes. If zero pointer passed, no mapping on receive side.
out_maparray of size #processes holding the mapping
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 336 of file scatter.hpp.

T* cf3::common::PE::scatter ( const Communicator comm,
const T *  in_values,
const int *  in_n,
T *  out_values,
int &  out_n,
const int  root,
const int  stride = 1 
)
inline

Interface to the variable size scatter communication with specialization to raw pointer. If null pointer passed for out_values then memory is allocated and the pointer to it is returned, otherwise out_values is returned. If out_n (receive counts) contains only -1, then a pre communication occurs to fill out_n.

Parameters
commComm::Communicator
in_valuespointer to the send buffer
in_narray holding send counts of size #processes
out_valuespointer to the receive buffer
out_narray holding receive counts of size #processes
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 269 of file scatter.hpp.

void scatter ( const Communicator comm,
const std::vector< T > &  in_values,
const std::vector< int > &  in_n,
const std::vector< int > &  in_map,
std::vector< T > &  out_values,
int &  out_n,
const std::vector< int > &  out_map,
const int  root,
const int  stride 
)
inline

Interface to the constant size scatter communication with specialization to raw pointer. If out_values's size is zero then its resized. If out_n (receive counts) is not of size of #processes, then error occurs. If out_n (receive counts) is filled with -1s, then a pre communication occurs to fill out_n. However due to the fact that map already needs all the information if you use scatter to allocate out_values and fill out_n then you most probably doing something wrong.

Parameters
commComm::Communicator
in_valuessend buffer
in_nsend counts of size #processes
in_maparray of size #processes holding the mapping. If zero pointer or zero size vector passed, no mapping on send side.
out_valuesreceive buffer
out_nreceive counts of size #processes
out_maparray of size #processes holding the mapping. If zero pointer or zero size vector passed, no mapping on receive side.
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 390 of file scatter.hpp.

void cf3::common::PE::scatter ( const Communicator comm,
const std::vector< T > &  in_values,
const std::vector< int > &  in_n,
std::vector< T > &  out_values,
int &  out_n,
const int  root,
const int  stride = 1 
)
inline

Interface to the constant size scatter communication with specialization to std::vector. If out_values's size is zero or in_values==out_values then its resized. If out_n (receive counts) is not of size of #processes, then error occurs. If out_n (receive counts) is filled with -1s, then a pre communication occurs to fill out_n.

Parameters
commComm::Communicator
in_valuessend buffer
in_nsend counts of size #processes
out_valuesreceive buffer
out_nreceive counts of size #processes
strideis the number of items of type T forming one array element, for example if communicating coordinates together, then stride==3: X0,Y0,Z0,X1,Y1,Z1,...,Xn-1,Yn-1,Zn-1

Definition at line 296 of file scatter.hpp.

void wait_for_debugger ( const int  rank = -1)

Called to wait for a debugger. You need to use the debugger interface to set the variable stopped to 0

Parameters
rankRank that has to wait, or if -1 all processes will wait

Definition at line 23 of file debug.cpp.

Variable Documentation

ComponentBuilder< CommWrapperMArray<int,1>, CommWrapper, LibCommon > CommWrapperMArray_int_1_builder

Definition at line 21 of file CommWrapperMArray.cpp.

ComponentBuilder< CommWrapperMArray<int,2>, CommWrapper, LibCommon > CommWrapperMArray_int_2_builder

Definition at line 26 of file CommWrapperMArray.cpp.

ComponentBuilder< CommWrapperMArray<Real,1>, CommWrapper, LibCommon > CommWrapperMArray_Real_1_builder

Definition at line 22 of file CommWrapperMArray.cpp.

ComponentBuilder< CommWrapperMArray<Real,2>, CommWrapper, LibCommon > CommWrapperMArray_Real_2_builder

Definition at line 27 of file CommWrapperMArray.cpp.

ComponentBuilder< CommWrapperMArray<Uint,1>, CommWrapper, LibCommon > CommWrapperMArray_Uint_1_builder

Definition at line 20 of file CommWrapperMArray.cpp.

ComponentBuilder< CommWrapperMArray<Uint,2>, CommWrapper, LibCommon > CommWrapperMArray_Uint_2_builder

Definition at line 25 of file CommWrapperMArray.cpp.

ComponentBuilder< CommWrapperPtr<int>, CommWrapper, LibCommon > CommWrapperPtr_int_builder

Definition at line 29 of file CommWrapper.cpp.

ComponentBuilder< CommWrapperPtr<Real>, CommWrapper, LibCommon > CommWrapperPtr_Real_builder

Definition at line 31 of file CommWrapper.cpp.

ComponentBuilder< CommWrapperPtr<Uint>, CommWrapper, LibCommon > CommWrapperPtr_Uint_builder

Definition at line 30 of file CommWrapper.cpp.

ComponentBuilder< CommWrapperVector<int>, CommWrapper, LibCommon > CommWrapperVector_int_builder

Definition at line 34 of file CommWrapper.cpp.

ComponentBuilder< CommWrapperVector<Real>, CommWrapper, LibCommon > CommWrapperVector_Real_builder

Definition at line 36 of file CommWrapper.cpp.

ComponentBuilder< CommWrapperVector<Uint>, CommWrapper, LibCommon > CommWrapperVector_Uint_builder

Definition at line 35 of file CommWrapper.cpp.

Definition at line 45 of file Manager.cpp.

ComponentBuilder< WorkerGroup, Component, LibCommon > WorkerGroup_Builder

Definition at line 26 of file WorkerGroup.cpp.

Send comments to:
COOLFluiD Web Admin