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

Default of get_mpi_datatype_impl which returns nullptr. More...

Functions

template<typename T >
void all_gatherc_impl (const Communicator &comm, const T *in_values, const int in_n, T *out_values, const int stride)
 
template<typename T >
void all_gathervm_impl (const Communicator &comm, const T *in_values, const int in_n, const int *in_map, T *out_values, const int *out_n, const int *out_map, const int stride)
 
template<typename T , typename Op >
void all_reduce_impl (const Communicator &comm, Op, const T *in_values, const int in_n, const int *in_map, T *out_values, const int *out_map, const int stride)
 
template<typename T >
void all_to_allc_impl (const Communicator &comm, const T *in_values, const int in_n, T *out_values, const int stride)
 
template<typename T >
void all_to_allvm_impl (const Communicator &comm, const T *in_values, const int *in_n, const int *in_map, T *out_values, const int *out_n, const int *out_map, const int stride)
 
template<typename T >
void broadcast_impl (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)
 
template<typename T >
Datatype get_mpi_datatype_impl (const T &)
 
template<>
Datatype get_mpi_datatype_impl< char > (const char &)
 
template<>
Datatype get_mpi_datatype_impl< unsigned char > (const unsigned char &)
 
template<>
Datatype get_mpi_datatype_impl< short > (const short &)
 
template<>
Datatype get_mpi_datatype_impl< unsigned short > (const unsigned short &)
 
template<>
Datatype get_mpi_datatype_impl< int > (const int &)
 
template<>
Datatype get_mpi_datatype_impl< unsigned int > (const unsigned int &)
 
template<>
Datatype get_mpi_datatype_impl< long > (const long &)
 
template<>
Datatype get_mpi_datatype_impl< unsigned long > (const unsigned long &)
 
template<>
Datatype get_mpi_datatype_impl< long long > (const long long &)
 
template<>
Datatype get_mpi_datatype_impl< unsigned long long > (const unsigned long long &)
 
template<>
Datatype get_mpi_datatype_impl< float > (const float &)
 
template<>
Datatype get_mpi_datatype_impl< double > (const double &)
 
template<>
Datatype get_mpi_datatype_impl< long double > (const long double &)
 
template<typename T >
void gatherc_impl (const Communicator &comm, const T *in_values, const int in_n, T *out_values, const int root, const int stride)
 
template<typename T >
void gathervm_impl (const Communicator &comm, const T *in_values, const int in_n, const int *in_map, T *out_values, const int *out_n, const int *out_map, const int root, const int stride)
 
template<typename T , typename Op >
Operation get_mpi_op_impl ()
 
template<typename T , typename Op >
void reduce_impl (const Communicator &comm, 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)
 
template<typename T >
void scatterc_impl (const Communicator &comm, const T *in_values, const int in_n, T *out_values, const int root, const int stride)
 
template<typename T >
void scattervm_impl (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)
 

Detailed Description

Default of get_mpi_datatype_impl which returns nullptr.

DEFAULT DATATYPE WRAPPERS.

Template specializations for built-in types.

Function Documentation

void cf3::common::PE::detail::all_gatherc_impl ( const Communicator comm,
const T *  in_values,
const int  in_n,
T *  out_values,
const int  stride 
)
inline

Implementation to the all_gather interface with constant size communication. Don't call this function directly, use MPI::all_gather instead. In_values and out_values must be linear in memory and their sizes should be #processes*n.

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
Bug:
(in OpenMPI ) MPI_CHECK_RESULT(MPI_Allgather, (const_cast<T*>(in_values), in_n*stride, type, out_buf, in_n*stride, type, comm));
Todo:
check if in later versions it is fixed

Definition at line 59 of file all_gather.hpp.

void cf3::common::PE::detail::all_gathervm_impl ( const Communicator comm,
const T *  in_values,
const int  in_n,
const int *  in_map,
T *  out_values,
const int *  out_n,
const int *  out_map,
const int  stride 
)
inline

Implementation to the all_gather interface with variable size communication through in and out map. Don't call this function directly, use MPI::all_gathervm instead. In_values and out_values must be linear in memory and their sizes should be sum(in_n[i]) and sum(out_n[i]) i=0..#processes-1.

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 110 of file all_gather.hpp.

void cf3::common::PE::detail::all_reduce_impl ( const Communicator comm,
Op  ,
const T *  in_values,
const int  in_n,
const int *  in_map,
T *  out_values,
const int *  out_map,
const int  stride 
)
inline

Implementation to the all reduce interface. Don't call this function directly, use MPI::alltoallvm instead. In_values and out_values must be linear in memory and their sizes should be sum(in_n[i]) and sum(out_n[i]) i=0..#processes-1.

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 62 of file all_reduce.hpp.

void cf3::common::PE::detail::all_to_allc_impl ( const Communicator comm,
const T *  in_values,
const int  in_n,
T *  out_values,
const int  stride 
)
inline

Implementation to the all to all interface with constant size communication. Don't call this function directly, use MPI::alltoall instead. In_values and out_values must be linear in memory and their sizes should be #processes*n.

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 60 of file all_to_all.hpp.

void cf3::common::PE::detail::all_to_allvm_impl ( const Communicator comm,
const T *  in_values,
const int *  in_n,
const int *  in_map,
T *  out_values,
const int *  out_n,
const int *  out_map,
const int  stride 
)
inline

Implementation to the all to all interface with variable size communication through in and out map. Don't call this function directly, use MPI::alltoallvm instead. In_values and out_values must be linear in memory and their sizes should be sum(in_n[i]) and sum(out_n[i]) i=0..#processes-1.

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 105 of file all_to_all.hpp.

void cf3::common::PE::detail::broadcast_impl ( 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 
)
inline

Implementation to the broadcast interface. Don't call this function directly, use MPI::broadcastvm instead. In_values and out_values must be linear in memory and their sizes should be sum(in_n[i]) and sum(out_n[i]) i=0..#processes-1.

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 59 of file broadcast.hpp.

void cf3::common::PE::detail::gatherc_impl ( const Communicator comm,
const T *  in_values,
const int  in_n,
T *  out_values,
const int  root,
const int  stride 
)
inline

Implementation to the Gather interface with constant size communication. Don't call this function directly, use MPI::gather instead. In_values and out_values must be linear in memory and their sizes should be #processes*n.

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 59 of file gather.hpp.

void cf3::common::PE::detail::gathervm_impl ( const Communicator comm,
const T *  in_values,
const int  in_n,
const int *  in_map,
T *  out_values,
const int *  out_n,
const int *  out_map,
const int  root,
const int  stride 
)
inline

Implementation to the Gather interface with variable size communication through in and out map. Don't call this function directly, use MPI::gathervm instead. In_values and out_values must be linear in memory and their sizes should be sum(in_n[i]) and sum(out_n[i]) i=0..#processes-1.

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 103 of file gather.hpp.

Datatype cf3::common::PE::detail::get_mpi_datatype_impl ( const T &  )
inline

Definition at line 43 of file datatype.hpp.

Datatype cf3::common::PE::detail::get_mpi_datatype_impl< char > ( const char &  )
inline

Definition at line 80 of file datatype.hpp.

Datatype cf3::common::PE::detail::get_mpi_datatype_impl< double > ( const double &  )
inline

Definition at line 91 of file datatype.hpp.

Datatype cf3::common::PE::detail::get_mpi_datatype_impl< float > ( const float &  )
inline

Definition at line 90 of file datatype.hpp.

Definition at line 84 of file datatype.hpp.

Datatype cf3::common::PE::detail::get_mpi_datatype_impl< long > ( const long &  )
inline

Definition at line 86 of file datatype.hpp.

Datatype cf3::common::PE::detail::get_mpi_datatype_impl< long double > ( const long double &  )
inline

Definition at line 92 of file datatype.hpp.

Datatype cf3::common::PE::detail::get_mpi_datatype_impl< long long > ( const long long &  )
inline

Definition at line 88 of file datatype.hpp.

Datatype cf3::common::PE::detail::get_mpi_datatype_impl< short > ( const short &  )
inline

Definition at line 82 of file datatype.hpp.

Datatype cf3::common::PE::detail::get_mpi_datatype_impl< unsigned char > ( const unsigned char &  )
inline

Definition at line 81 of file datatype.hpp.

Datatype cf3::common::PE::detail::get_mpi_datatype_impl< unsigned int > ( const unsigned int &  )
inline

Definition at line 85 of file datatype.hpp.

Datatype cf3::common::PE::detail::get_mpi_datatype_impl< unsigned long > ( const unsigned long &  )
inline

Definition at line 87 of file datatype.hpp.

Datatype cf3::common::PE::detail::get_mpi_datatype_impl< unsigned long long > ( const unsigned long long &  )
inline

Definition at line 89 of file datatype.hpp.

Datatype cf3::common::PE::detail::get_mpi_datatype_impl< unsigned short > ( const unsigned short &  )
inline

Definition at line 83 of file datatype.hpp.

Operation cf3::common::PE::detail::get_mpi_op_impl ( )

Support for registering and storing non-built-in operations.

Returns
Operation to the desired operation and type combo.

Definition at line 44 of file operations.hpp.

void cf3::common::PE::detail::reduce_impl ( const Communicator comm,
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 
)
inline

Implementation to the all reduce interface. Don't call this function directly, use MPI::alltoallvm instead. In_values and out_values must be linear in memory and their sizes should be sum(in_n[i]) and sum(out_n[i]) i=0..#processes-1.

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 61 of file reduce.hpp.

void cf3::common::PE::detail::scatterc_impl ( const Communicator comm,
const T *  in_values,
const int  in_n,
T *  out_values,
const int  root,
const int  stride 
)
inline

Implementation to the scatter interface with constant size communication. Don't call this function directly, use MPI::alltoall instead. In_values and out_values must be linear in memory and their sizes should be #processes*n.

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 59 of file scatter.hpp.

void cf3::common::PE::detail::scattervm_impl ( 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

Implementation to the scatter interface with variable size communication through in and out map. Don't call this function directly, use MPI::alltoallvm instead. In_values and out_values must be linear in memory and their sizes should be sum(in_n[i]) and sum(out_n[i]) i=0..#processes-1.

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 103 of file scatter.hpp.

Send comments to:
COOLFluiD Web Admin