HavoqGT
mpi.hpp File Reference
#include <havoqgt/detail/null_ostream.hpp>
#include <sched.h>
#include <vector>
#include <mpi.h>
#include <assert.h>
#include <stdlib.h>
#include <functional>
#include <iostream>
#include <algorithm>
#include <numeric>
#include <stdint.h>
Include dependency graph for mpi.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  havoqgt::mpi::mpi_communicator
 
class  havoqgt::mpi::owner_sort< T, Partitioner >
 
class  havoqgt::communicator
 

Namespaces

 havoqgt
 
 havoqgt::mpi
 

Macros

#define CHK_MPI(a)
 

Functions

MPI_Datatype havoqgt::mpi::mpi_typeof (char)
 
MPI_Datatype havoqgt::mpi::mpi_typeof (signed short)
 
MPI_Datatype havoqgt::mpi::mpi_typeof (unsigned char)
 
MPI_Datatype havoqgt::mpi::mpi_typeof (unsigned long long)
 
MPI_Datatype havoqgt::mpi::mpi_typeof (signed long long)
 
MPI_Datatype havoqgt::mpi::mpi_typeof (double)
 
MPI_Datatype havoqgt::mpi::mpi_typeof (long double)
 
MPI_Datatype havoqgt::mpi::mpi_typeof (std::pair< int, int >)
 
MPI_Datatype havoqgt::mpi::mpi_typeof (std::pair< float, int >)
 
MPI_Datatype havoqgt::mpi::mpi_typeof (std::pair< double, int >)
 
MPI_Datatype havoqgt::mpi::mpi_typeof (std::pair< long double, int >)
 
MPI_Datatype havoqgt::mpi::mpi_typeof (std::pair< short, int >)
 
template<typename T >
MPI_Op havoqgt::mpi::mpi_typeof (std::greater< T >)
 
template<typename T >
MPI_Op havoqgt::mpi::mpi_typeof (std::less< T >)
 
template<typename T >
MPI_Op havoqgt::mpi::mpi_typeof (std::plus< T >)
 
template<typename T >
MPI_Op havoqgt::mpi::mpi_typeof (std::multiplies< T >)
 
template<typename T >
MPI_Op havoqgt::mpi::mpi_typeof (std::logical_and< T >)
 
template<typename T >
MPI_Op havoqgt::mpi::mpi_typeof (std::logical_or< T >)
 
void havoqgt::mpi::mpi_yield_barrier (MPI_Comm mpi_comm)
 
template<typename T , typename Op >
havoqgt::mpi::mpi_all_reduce (T in_d, Op in_op, MPI_Comm mpi_comm)
 
template<typename Vec , typename Op >
void havoqgt::mpi::mpi_all_reduce_inplace (Vec &vec, Op in_op, MPI_Comm mpi_comm)
 
template<typename T , typename Op >
void havoqgt::mpi::mpi_all_reduce (std::vector< T > &in_vec, std::vector< T > &out_vec, Op in_op, MPI_Comm mpi_comm)
 
template<typename T >
void havoqgt::mpi::mpi_all_to_all (std::vector< T > &in_vec, std::vector< int > &in_sendcnts, std::vector< T > &out_vec, std::vector< int > &out_recvcnts, MPI_Comm mpi_comm)
 
template<typename T , typename Partitioner >
void havoqgt::mpi::mpi_all_to_all (std::vector< T > &inout_vec, std::vector< T > &temp_vec, Partitioner &owner, MPI_Comm mpi_comm)
 
template<typename T , typename Partitioner >
void havoqgt::mpi::mpi_all_to_all_better (std::vector< T > &in_vec, std::vector< T > &out_vec, Partitioner &owner, MPI_Comm mpi_comm)
 
template<typename T >
void havoqgt::mpi::mpi_all_to_all_in_place (std::vector< T > &in_out_vec, size_t count, MPI_Comm mpi_comm)
 
template<typename T >
void havoqgt::mpi::mpi_all_gather (T _t, std::vector< T > &out_p_vec, MPI_Comm mpi_comm)
 TODO: Add tests. More...
 
template<typename T >
void havoqgt::mpi::mpi_all_gather (std::vector< T > &in_send, std::vector< T > &out_recv_gather, MPI_Comm mpi_comm)
 TODO: Add tests, especially with non mpi types, POD. More...
 
template<typename T >
void havoqgt::mpi::mpi_all_to_all (std::vector< std::vector< T > > &in_p_vec, std::vector< std::vector< T > > &out_p_vec, MPI_Comm mpi_comm)
 
template<typename T >
void havoqgt::mpi::mpi_bcast (T &data, int root, MPI_Comm comm)
 
std::ostream & havoqgt::mpi::cout_rank0 ()
 
std::ostream & havoqgt::mpi::cout_rank0_barrier ()
 
int havoqgt::mpi::mpi_comm_rank ()
 
int havoqgt::mpi::mpi_comm_size ()
 

Macro Definition Documentation

#define CHK_MPI (   a)
Value:
{ if (a != MPI_SUCCESS) {\
char* error_string = NULL; \
int len = 0; \
MPI_Error_string(a, error_string, &len); \
std::cerr << __FILE__ << ", line " << __LINE__ \
<<" MPI ERROR = " << error_string << std::endl; \
exit(-1); \
} }

Definition at line 68 of file mpi.hpp.