COOLFluiD  Release kernel
COOLFluiD is a Collaborative Simulation Environment (CSE) focused on complex MultiPhysics simulations.
Namespaces | Functions
scatter.hpp File Reference
#include "common/Foreach.hpp"
#include "common/BasicExceptions.hpp"
#include "common/PE/types.hpp"
#include "common/PE/datatype.hpp"

Go to the source code of this file.

Namespaces

 cf3
 Top-level namespace for coolfluid.
 
 cf3::common
 Most basic kernel library.
 
 cf3::common::PE
 Classes offering a MPI interface for COOLFluiD.
 
 cf3::common::PE::detail
 Default of get_mpi_datatype_impl which returns nullptr.
 

Functions

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)
 
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)
 

Detailed Description

Author
Tamas Banyai Scatter collective communication interface to MPI standard. Due to the nature of MPI standard, at the lowest level the memory required to be linear meaning &xyz[0] should give a single and continous block of memory. Some functions support automatic evaluation of number of items on the receive side but be very cautious with using them because it requires two collective communication and may end up with degraded performance. Currently, the interface supports raw pointers and std::vectors. Three types of communications is implemented:
  • Constant size +send and receive on all processors via MPI_alltoall
  • Variable size send and receive via MPI_alltoallv
  • Extension of the variable sized communication to support mapped storage both on send and receive side.

Definition in file scatter.hpp.

Send comments to:
COOLFluiD Web Admin