COOLFluiD  Release kernel
COOLFluiD is a Collaborative Simulation Environment (CSE) focused on complex MultiPhysics simulations.
Namespaces | Functions
all_to_all.hpp File Reference
#include "common/Assertions.hpp"
#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 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 >
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)
 

Detailed Description

Author
Tamas Banyai All to all 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 all_to_all.hpp.

Send comments to:
COOLFluiD Web Admin