IPPL (Independent Parallel Particle Layer)
IPPL
Loading...
Searching...
No Matches
ippl::mpi Namespace Reference

Namespaces

namespace  core
namespace  tag
namespace  rma

Classes

class  Communicator
struct  vector_dim_type
struct  vector_dim_type< ippl::Vector< T, Dim_ > >
class  Environment
struct  extractBinaryOperationKind
 Helper struct to distinguish between the four basic associative operation types. More...
struct  extractBinaryOperationKind< std::plus< T > >
struct  extractBinaryOperationKind< std::multiplies< T > >
struct  extractBinaryOperationKind< std::less< T > >
struct  extractBinaryOperationKind< std::greater< T > >
struct  always_false
struct  is_ippl_mpi_type
struct  dummy
struct  getMpiOpImpl
struct  getNontrivialMpiOpImpl
 Helper struct to look up and store MPI_Op types for custom types and custom operations. More...
class  Request
struct  is_serializable
class  Status

Enumerations

enum struct  binaryOperationKind { SUM , MIN , MAX , MULTIPLICATION }

Functions

std::vector< char > serializeLogs (const std::vector< LogEntry > &logs)
std::vector< LogEntrydeserializeLogs (const std::vector< char > &buffer)
template<typename T>
MPI_Datatype get_mpi_datatype (const T &)
 IPPL_MPI_OP (std::plus< char >, MPI_SUM)
 IPPL_MPI_OP (std::plus< short >, MPI_SUM)
 IPPL_MPI_OP (std::plus< int >, MPI_SUM)
 IPPL_MPI_OP (std::plus< long >, MPI_SUM)
 IPPL_MPI_OP (std::plus< long long >, MPI_SUM)
 IPPL_MPI_OP (std::plus< unsigned char >, MPI_SUM)
 IPPL_MPI_OP (std::plus< unsigned short >, MPI_SUM)
 IPPL_MPI_OP (std::plus< unsigned int >, MPI_SUM)
 IPPL_MPI_OP (std::plus< unsigned long >, MPI_SUM)
 IPPL_MPI_OP (std::plus< unsigned long long >, MPI_SUM)
 IPPL_MPI_OP (std::plus< float >, MPI_SUM)
 IPPL_MPI_OP (std::plus< double >, MPI_SUM)
 IPPL_MPI_OP (std::plus< long double >, MPI_SUM)
 IPPL_MPI_OP (std::plus< std::complex< float > >, MPI_SUM)
 IPPL_MPI_OP (std::plus< std::complex< double > >, MPI_SUM)
 IPPL_MPI_OP (std::plus< Kokkos::complex< float > >, MPI_SUM)
 IPPL_MPI_OP (std::plus< Kokkos::complex< double > >, MPI_SUM)
 IPPL_MPI_OP (std::less< char >, MPI_MIN)
 IPPL_MPI_OP (std::less< short >, MPI_MIN)
 IPPL_MPI_OP (std::less< int >, MPI_MIN)
 IPPL_MPI_OP (std::less< long >, MPI_MIN)
 IPPL_MPI_OP (std::less< long long >, MPI_MIN)
 IPPL_MPI_OP (std::less< unsigned char >, MPI_MIN)
 IPPL_MPI_OP (std::less< unsigned short >, MPI_MIN)
 IPPL_MPI_OP (std::less< unsigned int >, MPI_MIN)
 IPPL_MPI_OP (std::less< unsigned long >, MPI_MIN)
 IPPL_MPI_OP (std::less< unsigned long long >, MPI_MIN)
 IPPL_MPI_OP (std::less< float >, MPI_MIN)
 IPPL_MPI_OP (std::less< double >, MPI_MIN)
 IPPL_MPI_OP (std::less< long double >, MPI_MIN)
 IPPL_MPI_OP (std::greater< char >, MPI_MAX)
 IPPL_MPI_OP (std::greater< short >, MPI_MAX)
 IPPL_MPI_OP (std::greater< int >, MPI_MAX)
 IPPL_MPI_OP (std::greater< long >, MPI_MAX)
 IPPL_MPI_OP (std::greater< long long >, MPI_MAX)
 IPPL_MPI_OP (std::greater< unsigned char >, MPI_MAX)
 IPPL_MPI_OP (std::greater< unsigned short >, MPI_MAX)
 IPPL_MPI_OP (std::greater< unsigned int >, MPI_MAX)
 IPPL_MPI_OP (std::greater< unsigned long >, MPI_MAX)
 IPPL_MPI_OP (std::greater< unsigned long long >, MPI_MAX)
 IPPL_MPI_OP (std::greater< float >, MPI_MAX)
 IPPL_MPI_OP (std::greater< double >, MPI_MAX)
 IPPL_MPI_OP (std::greater< long double >, MPI_MAX)
 IPPL_MPI_OP (std::multiplies< short >, MPI_PROD)
 IPPL_MPI_OP (std::multiplies< int >, MPI_PROD)
 IPPL_MPI_OP (std::multiplies< long >, MPI_PROD)
 IPPL_MPI_OP (std::multiplies< long long >, MPI_PROD)
 IPPL_MPI_OP (std::multiplies< unsigned short >, MPI_PROD)
 IPPL_MPI_OP (std::multiplies< unsigned int >, MPI_PROD)
 IPPL_MPI_OP (std::multiplies< unsigned long >, MPI_PROD)
 IPPL_MPI_OP (std::multiplies< unsigned long long >, MPI_PROD)
 IPPL_MPI_OP (std::multiplies< float >, MPI_PROD)
 IPPL_MPI_OP (std::multiplies< double >, MPI_PROD)
 IPPL_MPI_OP (std::multiplies< long double >, MPI_PROD)
 IPPL_MPI_OP (std::logical_or< bool >, MPI_LOR)
 IPPL_MPI_OP (std::logical_and< bool >, MPI_LAND)
template<typename Op, typename Datatype>
MPI_Op get_mpi_op ()
 IPPL_MPI_SERIALIZABLE (char)
 IPPL_MPI_SERIALIZABLE (short)
 IPPL_MPI_SERIALIZABLE (int)
 IPPL_MPI_SERIALIZABLE (long)
 IPPL_MPI_SERIALIZABLE (long long)
 IPPL_MPI_SERIALIZABLE (unsigned char)
 IPPL_MPI_SERIALIZABLE (unsigned short)
 IPPL_MPI_SERIALIZABLE (unsigned int)
 IPPL_MPI_SERIALIZABLE (unsigned long)
 IPPL_MPI_SERIALIZABLE (unsigned long long)
 IPPL_MPI_SERIALIZABLE (float)
 IPPL_MPI_SERIALIZABLE (double)
 IPPL_MPI_SERIALIZABLE (long double)
 IPPL_MPI_SERIALIZABLE (bool)
 IPPL_MPI_SERIALIZABLE (std::complex< float >)
 IPPL_MPI_SERIALIZABLE (std::complex< double >)
 IPPL_MPI_SERIALIZABLE (std::complex< long double >)
template<std::contiguous_iterator InputIter, std::contiguous_iterator OutputIter>
void waitall (InputIter req_first, InputIter req_last, OutputIter sta_first)
void wait (Request &request, Status &status)

Variables

static std::map< std::pair< std::type_index, std::type_index >, MPI_Op > mpiOperations

Enumeration Type Documentation

◆ binaryOperationKind

enum struct ippl::mpi::binaryOperationKind
strong
Enumerator
SUM 
MIN 
MAX 
MULTIPLICATION 

Definition at line 20 of file Operations.h.

Function Documentation

◆ deserializeLogs()

std::vector< LogEntry > ippl::mpi::deserializeLogs ( const std::vector< char > & buffer)

Definition at line 79 of file CommunicatorLogging.cpp.

References ippl::LogEntry::deserialize(), and ippl::LogEntry::serialize().

Referenced by ippl::mpi::Communicator::gatherLogsFromAllRanks().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_mpi_datatype()

template<typename T>
MPI_Datatype ippl::mpi::get_mpi_datatype ( const T & )

◆ get_mpi_op()

template<typename Op, typename Datatype>
MPI_Op ippl::mpi::get_mpi_op ( )

Definition at line 206 of file Operations.h.

Referenced by ippl::mpi::Communicator::allreduce(), ippl::mpi::Communicator::allreduce(), and ippl::mpi::Communicator::reduce().

Here is the caller graph for this function:

◆ IPPL_MPI_OP() [1/56]

ippl::mpi::IPPL_MPI_OP ( std::greater< char > ,
MPI_MAX  )

◆ IPPL_MPI_OP() [2/56]

ippl::mpi::IPPL_MPI_OP ( std::greater< double > ,
MPI_MAX  )

◆ IPPL_MPI_OP() [3/56]

ippl::mpi::IPPL_MPI_OP ( std::greater< float > ,
MPI_MAX  )

◆ IPPL_MPI_OP() [4/56]

ippl::mpi::IPPL_MPI_OP ( std::greater< int > ,
MPI_MAX  )

◆ IPPL_MPI_OP() [5/56]

ippl::mpi::IPPL_MPI_OP ( std::greater< long > ,
MPI_MAX  )

◆ IPPL_MPI_OP() [6/56]

ippl::mpi::IPPL_MPI_OP ( std::greater< long double > ,
MPI_MAX  )

◆ IPPL_MPI_OP() [7/56]

ippl::mpi::IPPL_MPI_OP ( std::greater< long long > ,
MPI_MAX  )

◆ IPPL_MPI_OP() [8/56]

ippl::mpi::IPPL_MPI_OP ( std::greater< short > ,
MPI_MAX  )

◆ IPPL_MPI_OP() [9/56]

ippl::mpi::IPPL_MPI_OP ( std::greater< unsigned char > ,
MPI_MAX  )

◆ IPPL_MPI_OP() [10/56]

ippl::mpi::IPPL_MPI_OP ( std::greater< unsigned int > ,
MPI_MAX  )

◆ IPPL_MPI_OP() [11/56]

ippl::mpi::IPPL_MPI_OP ( std::greater< unsigned long > ,
MPI_MAX  )

◆ IPPL_MPI_OP() [12/56]

ippl::mpi::IPPL_MPI_OP ( std::greater< unsigned long long > ,
MPI_MAX  )

◆ IPPL_MPI_OP() [13/56]

ippl::mpi::IPPL_MPI_OP ( std::greater< unsigned short > ,
MPI_MAX  )

◆ IPPL_MPI_OP() [14/56]

ippl::mpi::IPPL_MPI_OP ( std::less< char > ,
MPI_MIN  )

◆ IPPL_MPI_OP() [15/56]

ippl::mpi::IPPL_MPI_OP ( std::less< double > ,
MPI_MIN  )

◆ IPPL_MPI_OP() [16/56]

ippl::mpi::IPPL_MPI_OP ( std::less< float > ,
MPI_MIN  )

◆ IPPL_MPI_OP() [17/56]

ippl::mpi::IPPL_MPI_OP ( std::less< int > ,
MPI_MIN  )

◆ IPPL_MPI_OP() [18/56]

ippl::mpi::IPPL_MPI_OP ( std::less< long > ,
MPI_MIN  )

◆ IPPL_MPI_OP() [19/56]

ippl::mpi::IPPL_MPI_OP ( std::less< long double > ,
MPI_MIN  )

◆ IPPL_MPI_OP() [20/56]

ippl::mpi::IPPL_MPI_OP ( std::less< long long > ,
MPI_MIN  )

◆ IPPL_MPI_OP() [21/56]

ippl::mpi::IPPL_MPI_OP ( std::less< short > ,
MPI_MIN  )

◆ IPPL_MPI_OP() [22/56]

ippl::mpi::IPPL_MPI_OP ( std::less< unsigned char > ,
MPI_MIN  )

◆ IPPL_MPI_OP() [23/56]

ippl::mpi::IPPL_MPI_OP ( std::less< unsigned int > ,
MPI_MIN  )

◆ IPPL_MPI_OP() [24/56]

ippl::mpi::IPPL_MPI_OP ( std::less< unsigned long > ,
MPI_MIN  )

◆ IPPL_MPI_OP() [25/56]

ippl::mpi::IPPL_MPI_OP ( std::less< unsigned long long > ,
MPI_MIN  )

◆ IPPL_MPI_OP() [26/56]

ippl::mpi::IPPL_MPI_OP ( std::less< unsigned short > ,
MPI_MIN  )

◆ IPPL_MPI_OP() [27/56]

ippl::mpi::IPPL_MPI_OP ( std::logical_and< bool > ,
MPI_LAND  )

◆ IPPL_MPI_OP() [28/56]

ippl::mpi::IPPL_MPI_OP ( std::logical_or< bool > ,
MPI_LOR  )

◆ IPPL_MPI_OP() [29/56]

ippl::mpi::IPPL_MPI_OP ( std::multiplies< double > ,
MPI_PROD  )

◆ IPPL_MPI_OP() [30/56]

ippl::mpi::IPPL_MPI_OP ( std::multiplies< float > ,
MPI_PROD  )

◆ IPPL_MPI_OP() [31/56]

ippl::mpi::IPPL_MPI_OP ( std::multiplies< int > ,
MPI_PROD  )

◆ IPPL_MPI_OP() [32/56]

ippl::mpi::IPPL_MPI_OP ( std::multiplies< long > ,
MPI_PROD  )

◆ IPPL_MPI_OP() [33/56]

ippl::mpi::IPPL_MPI_OP ( std::multiplies< long double > ,
MPI_PROD  )

◆ IPPL_MPI_OP() [34/56]

ippl::mpi::IPPL_MPI_OP ( std::multiplies< long long > ,
MPI_PROD  )

◆ IPPL_MPI_OP() [35/56]

ippl::mpi::IPPL_MPI_OP ( std::multiplies< short > ,
MPI_PROD  )

◆ IPPL_MPI_OP() [36/56]

ippl::mpi::IPPL_MPI_OP ( std::multiplies< unsigned int > ,
MPI_PROD  )

◆ IPPL_MPI_OP() [37/56]

ippl::mpi::IPPL_MPI_OP ( std::multiplies< unsigned long > ,
MPI_PROD  )

◆ IPPL_MPI_OP() [38/56]

ippl::mpi::IPPL_MPI_OP ( std::multiplies< unsigned long long > ,
MPI_PROD  )

◆ IPPL_MPI_OP() [39/56]

ippl::mpi::IPPL_MPI_OP ( std::multiplies< unsigned short > ,
MPI_PROD  )

◆ IPPL_MPI_OP() [40/56]

ippl::mpi::IPPL_MPI_OP ( std::plus< char > ,
MPI_SUM  )

◆ IPPL_MPI_OP() [41/56]

ippl::mpi::IPPL_MPI_OP ( std::plus< double > ,
MPI_SUM  )

◆ IPPL_MPI_OP() [42/56]

ippl::mpi::IPPL_MPI_OP ( std::plus< float > ,
MPI_SUM  )

◆ IPPL_MPI_OP() [43/56]

ippl::mpi::IPPL_MPI_OP ( std::plus< int > ,
MPI_SUM  )

◆ IPPL_MPI_OP() [44/56]

ippl::mpi::IPPL_MPI_OP ( std::plus< Kokkos::complex< double > > ,
MPI_SUM  )

◆ IPPL_MPI_OP() [45/56]

ippl::mpi::IPPL_MPI_OP ( std::plus< Kokkos::complex< float > > ,
MPI_SUM  )

◆ IPPL_MPI_OP() [46/56]

ippl::mpi::IPPL_MPI_OP ( std::plus< long > ,
MPI_SUM  )

◆ IPPL_MPI_OP() [47/56]

ippl::mpi::IPPL_MPI_OP ( std::plus< long double > ,
MPI_SUM  )

◆ IPPL_MPI_OP() [48/56]

ippl::mpi::IPPL_MPI_OP ( std::plus< long long > ,
MPI_SUM  )

◆ IPPL_MPI_OP() [49/56]

ippl::mpi::IPPL_MPI_OP ( std::plus< short > ,
MPI_SUM  )

◆ IPPL_MPI_OP() [50/56]

ippl::mpi::IPPL_MPI_OP ( std::plus< std::complex< double > > ,
MPI_SUM  )

◆ IPPL_MPI_OP() [51/56]

ippl::mpi::IPPL_MPI_OP ( std::plus< std::complex< float > > ,
MPI_SUM  )

◆ IPPL_MPI_OP() [52/56]

ippl::mpi::IPPL_MPI_OP ( std::plus< unsigned char > ,
MPI_SUM  )

◆ IPPL_MPI_OP() [53/56]

ippl::mpi::IPPL_MPI_OP ( std::plus< unsigned int > ,
MPI_SUM  )

◆ IPPL_MPI_OP() [54/56]

ippl::mpi::IPPL_MPI_OP ( std::plus< unsigned long > ,
MPI_SUM  )

◆ IPPL_MPI_OP() [55/56]

ippl::mpi::IPPL_MPI_OP ( std::plus< unsigned long long > ,
MPI_SUM  )

◆ IPPL_MPI_OP() [56/56]

ippl::mpi::IPPL_MPI_OP ( std::plus< unsigned short > ,
MPI_SUM  )

◆ IPPL_MPI_SERIALIZABLE() [1/17]

ippl::mpi::IPPL_MPI_SERIALIZABLE ( bool )

◆ IPPL_MPI_SERIALIZABLE() [2/17]

ippl::mpi::IPPL_MPI_SERIALIZABLE ( char )

◆ IPPL_MPI_SERIALIZABLE() [3/17]

ippl::mpi::IPPL_MPI_SERIALIZABLE ( double )

◆ IPPL_MPI_SERIALIZABLE() [4/17]

ippl::mpi::IPPL_MPI_SERIALIZABLE ( float )

◆ IPPL_MPI_SERIALIZABLE() [5/17]

ippl::mpi::IPPL_MPI_SERIALIZABLE ( int )

◆ IPPL_MPI_SERIALIZABLE() [6/17]

ippl::mpi::IPPL_MPI_SERIALIZABLE ( long double )

◆ IPPL_MPI_SERIALIZABLE() [7/17]

ippl::mpi::IPPL_MPI_SERIALIZABLE ( long long )

◆ IPPL_MPI_SERIALIZABLE() [8/17]

ippl::mpi::IPPL_MPI_SERIALIZABLE ( long )

◆ IPPL_MPI_SERIALIZABLE() [9/17]

ippl::mpi::IPPL_MPI_SERIALIZABLE ( short )

◆ IPPL_MPI_SERIALIZABLE() [10/17]

ippl::mpi::IPPL_MPI_SERIALIZABLE ( std::complex< double > )

◆ IPPL_MPI_SERIALIZABLE() [11/17]

ippl::mpi::IPPL_MPI_SERIALIZABLE ( std::complex< float > )

◆ IPPL_MPI_SERIALIZABLE() [12/17]

ippl::mpi::IPPL_MPI_SERIALIZABLE ( std::complex< long double > )

◆ IPPL_MPI_SERIALIZABLE() [13/17]

ippl::mpi::IPPL_MPI_SERIALIZABLE ( unsigned char )

◆ IPPL_MPI_SERIALIZABLE() [14/17]

ippl::mpi::IPPL_MPI_SERIALIZABLE ( unsigned int )

◆ IPPL_MPI_SERIALIZABLE() [15/17]

ippl::mpi::IPPL_MPI_SERIALIZABLE ( unsigned long long )

◆ IPPL_MPI_SERIALIZABLE() [16/17]

ippl::mpi::IPPL_MPI_SERIALIZABLE ( unsigned long )

◆ IPPL_MPI_SERIALIZABLE() [17/17]

ippl::mpi::IPPL_MPI_SERIALIZABLE ( unsigned short )

◆ serializeLogs()

std::vector< char > ippl::mpi::serializeLogs ( const std::vector< LogEntry > & logs)

Definition at line 68 of file CommunicatorLogging.cpp.

Referenced by ippl::mpi::Communicator::sendLogsToRank0().

Here is the caller graph for this function:

◆ wait()

void ippl::mpi::wait ( Request & request,
Status & status )

Definition at line 20 of file Wait.h.

◆ waitall()

template<std::contiguous_iterator InputIter, std::contiguous_iterator OutputIter>
void ippl::mpi::waitall ( InputIter req_first,
InputIter req_last,
OutputIter sta_first )

Definition at line 15 of file Wait.h.

Variable Documentation

◆ mpiOperations

std::map<std::pair<std::type_index, std::type_index>, MPI_Op> ippl::mpi::mpiOperations
static