OPAL (Object Oriented Parallel Accelerator Library)  2021.1.99
OPAL
Classes | Macros | Functions
Operations.h File Reference
#include <functional>
#include <mpi.h>
Include dependency graph for Operations.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  is_ippl_mpi_type< class >
 
struct  is_ippl_mpi_type< std::plus< char > >
 
struct  is_ippl_mpi_type< std::plus< short > >
 
struct  is_ippl_mpi_type< std::plus< int > >
 
struct  is_ippl_mpi_type< std::plus< long > >
 
struct  is_ippl_mpi_type< std::plus< long long > >
 
struct  is_ippl_mpi_type< std::plus< unsigned char > >
 
struct  is_ippl_mpi_type< std::plus< unsigned short > >
 
struct  is_ippl_mpi_type< std::plus< unsigned int > >
 
struct  is_ippl_mpi_type< std::plus< unsigned long > >
 
struct  is_ippl_mpi_type< std::plus< unsigned long long > >
 
struct  is_ippl_mpi_type< std::plus< float > >
 
struct  is_ippl_mpi_type< std::plus< double > >
 
struct  is_ippl_mpi_type< std::plus< long double > >
 
struct  is_ippl_mpi_type< std::less< char > >
 
struct  is_ippl_mpi_type< std::less< short > >
 
struct  is_ippl_mpi_type< std::less< int > >
 
struct  is_ippl_mpi_type< std::less< long > >
 
struct  is_ippl_mpi_type< std::less< long long > >
 
struct  is_ippl_mpi_type< std::less< unsigned char > >
 
struct  is_ippl_mpi_type< std::less< unsigned short > >
 
struct  is_ippl_mpi_type< std::less< unsigned int > >
 
struct  is_ippl_mpi_type< std::less< unsigned long > >
 
struct  is_ippl_mpi_type< std::less< unsigned long long > >
 
struct  is_ippl_mpi_type< std::less< float > >
 
struct  is_ippl_mpi_type< std::less< double > >
 
struct  is_ippl_mpi_type< std::less< long double > >
 
struct  is_ippl_mpi_type< std::greater< char > >
 
struct  is_ippl_mpi_type< std::greater< short > >
 
struct  is_ippl_mpi_type< std::greater< int > >
 
struct  is_ippl_mpi_type< std::greater< long > >
 
struct  is_ippl_mpi_type< std::greater< long long > >
 
struct  is_ippl_mpi_type< std::greater< unsigned char > >
 
struct  is_ippl_mpi_type< std::greater< unsigned short > >
 
struct  is_ippl_mpi_type< std::greater< unsigned int > >
 
struct  is_ippl_mpi_type< std::greater< unsigned long > >
 
struct  is_ippl_mpi_type< std::greater< unsigned long long > >
 
struct  is_ippl_mpi_type< std::greater< float > >
 
struct  is_ippl_mpi_type< std::greater< double > >
 
struct  is_ippl_mpi_type< std::greater< long double > >
 
struct  is_ippl_mpi_type< std::logical_or< bool > >
 
struct  is_ippl_mpi_type< std::logical_and< bool > >
 

Macros

#define IPPL_MPI_OP(CppOp, MPIOp)
 

Functions

template<class Op >
MPI_Op get_mpi_op (Op op)
 
template<>
MPI_Op get_mpi_op< std::plus< char > > (std::plus< char >)
 
template<>
MPI_Op get_mpi_op< std::plus< short > > (std::plus< short >)
 
template<>
MPI_Op get_mpi_op< std::plus< int > > (std::plus< int >)
 
template<>
MPI_Op get_mpi_op< std::plus< long > > (std::plus< long >)
 
template<>
MPI_Op get_mpi_op< std::plus< long long > > (std::plus< long long >)
 
template<>
MPI_Op get_mpi_op< std::plus< unsigned char > > (std::plus< unsigned char >)
 
template<>
MPI_Op get_mpi_op< std::plus< unsigned short > > (std::plus< unsigned short >)
 
template<>
MPI_Op get_mpi_op< std::plus< unsigned int > > (std::plus< unsigned int >)
 
template<>
MPI_Op get_mpi_op< std::plus< unsigned long > > (std::plus< unsigned long >)
 
template<>
MPI_Op get_mpi_op< std::plus< unsigned long long > > (std::plus< unsigned long long >)
 
template<>
MPI_Op get_mpi_op< std::plus< float > > (std::plus< float >)
 
template<>
MPI_Op get_mpi_op< std::plus< double > > (std::plus< double >)
 
template<>
MPI_Op get_mpi_op< std::plus< long double > > (std::plus< long double >)
 
template<>
MPI_Op get_mpi_op< std::less< char > > (std::less< char >)
 
template<>
MPI_Op get_mpi_op< std::less< short > > (std::less< short >)
 
template<>
MPI_Op get_mpi_op< std::less< int > > (std::less< int >)
 
template<>
MPI_Op get_mpi_op< std::less< long > > (std::less< long >)
 
template<>
MPI_Op get_mpi_op< std::less< long long > > (std::less< long long >)
 
template<>
MPI_Op get_mpi_op< std::less< unsigned char > > (std::less< unsigned char >)
 
template<>
MPI_Op get_mpi_op< std::less< unsigned short > > (std::less< unsigned short >)
 
template<>
MPI_Op get_mpi_op< std::less< unsigned int > > (std::less< unsigned int >)
 
template<>
MPI_Op get_mpi_op< std::less< unsigned long > > (std::less< unsigned long >)
 
template<>
MPI_Op get_mpi_op< std::less< unsigned long long > > (std::less< unsigned long long >)
 
template<>
MPI_Op get_mpi_op< std::less< float > > (std::less< float >)
 
template<>
MPI_Op get_mpi_op< std::less< double > > (std::less< double >)
 
template<>
MPI_Op get_mpi_op< std::less< long double > > (std::less< long double >)
 
template<>
MPI_Op get_mpi_op< std::greater< char > > (std::greater< char >)
 
template<>
MPI_Op get_mpi_op< std::greater< short > > (std::greater< short >)
 
template<>
MPI_Op get_mpi_op< std::greater< int > > (std::greater< int >)
 
template<>
MPI_Op get_mpi_op< std::greater< long > > (std::greater< long >)
 
template<>
MPI_Op get_mpi_op< std::greater< long long > > (std::greater< long long >)
 
template<>
MPI_Op get_mpi_op< std::greater< unsigned char > > (std::greater< unsigned char >)
 
template<>
MPI_Op get_mpi_op< std::greater< unsigned short > > (std::greater< unsigned short >)
 
template<>
MPI_Op get_mpi_op< std::greater< unsigned int > > (std::greater< unsigned int >)
 
template<>
MPI_Op get_mpi_op< std::greater< unsigned long > > (std::greater< unsigned long >)
 
template<>
MPI_Op get_mpi_op< std::greater< unsigned long long > > (std::greater< unsigned long long >)
 
template<>
MPI_Op get_mpi_op< std::greater< float > > (std::greater< float >)
 
template<>
MPI_Op get_mpi_op< std::greater< double > > (std::greater< double >)
 
template<>
MPI_Op get_mpi_op< std::greater< long double > > (std::greater< long double >)
 
template<>
MPI_Op get_mpi_op< std::logical_or< bool > > (std::logical_or< bool >)
 
template<>
MPI_Op get_mpi_op< std::logical_and< bool > > (std::logical_and< bool >)
 

Macro Definition Documentation

◆ IPPL_MPI_OP

#define IPPL_MPI_OP (   CppOp,
  MPIOp 
)
Value:
template <> \
inline MPI_Op \
get_mpi_op< CppOp >(CppOp) { return MPIOp; } \
\
template<> \
std::true_type {};

Definition at line 36 of file Operations.h.

Function Documentation

◆ get_mpi_op()

template<class Op >
MPI_Op get_mpi_op ( Op  op)

Definition at line 29 of file Operations.h.

◆ get_mpi_op< std::greater< char > >()

template<>
MPI_Op get_mpi_op< std::greater< char > > ( std::greater< char >  )
inline

Definition at line 83 of file Operations.h.

◆ get_mpi_op< std::greater< double > >()

template<>
MPI_Op get_mpi_op< std::greater< double > > ( std::greater< double >  )
inline

Definition at line 94 of file Operations.h.

◆ get_mpi_op< std::greater< float > >()

template<>
MPI_Op get_mpi_op< std::greater< float > > ( std::greater< float >  )
inline

Definition at line 93 of file Operations.h.

◆ get_mpi_op< std::greater< int > >()

template<>
MPI_Op get_mpi_op< std::greater< int > > ( std::greater< int >  )
inline

Definition at line 85 of file Operations.h.

◆ get_mpi_op< std::greater< long > >()

template<>
MPI_Op get_mpi_op< std::greater< long > > ( std::greater< long >  )
inline

Definition at line 86 of file Operations.h.

◆ get_mpi_op< std::greater< long double > >()

template<>
MPI_Op get_mpi_op< std::greater< long double > > ( std::greater< long double >  )
inline

Definition at line 95 of file Operations.h.

◆ get_mpi_op< std::greater< long long > >()

template<>
MPI_Op get_mpi_op< std::greater< long long > > ( std::greater< long long >  )
inline

Definition at line 87 of file Operations.h.

◆ get_mpi_op< std::greater< short > >()

template<>
MPI_Op get_mpi_op< std::greater< short > > ( std::greater< short >  )
inline

Definition at line 84 of file Operations.h.

◆ get_mpi_op< std::greater< unsigned char > >()

template<>
MPI_Op get_mpi_op< std::greater< unsigned char > > ( std::greater< unsigned char >  )
inline

Definition at line 88 of file Operations.h.

◆ get_mpi_op< std::greater< unsigned int > >()

template<>
MPI_Op get_mpi_op< std::greater< unsigned int > > ( std::greater< unsigned int >  )
inline

Definition at line 90 of file Operations.h.

◆ get_mpi_op< std::greater< unsigned long > >()

template<>
MPI_Op get_mpi_op< std::greater< unsigned long > > ( std::greater< unsigned long >  )
inline

Definition at line 91 of file Operations.h.

◆ get_mpi_op< std::greater< unsigned long long > >()

template<>
MPI_Op get_mpi_op< std::greater< unsigned long long > > ( std::greater< unsigned long long >  )
inline

Definition at line 92 of file Operations.h.

◆ get_mpi_op< std::greater< unsigned short > >()

template<>
MPI_Op get_mpi_op< std::greater< unsigned short > > ( std::greater< unsigned short >  )
inline

Definition at line 89 of file Operations.h.

◆ get_mpi_op< std::less< char > >()

template<>
MPI_Op get_mpi_op< std::less< char > > ( std::less< char >  )
inline

Definition at line 68 of file Operations.h.

◆ get_mpi_op< std::less< double > >()

template<>
MPI_Op get_mpi_op< std::less< double > > ( std::less< double >  )
inline

Definition at line 79 of file Operations.h.

◆ get_mpi_op< std::less< float > >()

template<>
MPI_Op get_mpi_op< std::less< float > > ( std::less< float >  )
inline

Definition at line 78 of file Operations.h.

◆ get_mpi_op< std::less< int > >()

template<>
MPI_Op get_mpi_op< std::less< int > > ( std::less< int >  )
inline

Definition at line 70 of file Operations.h.

◆ get_mpi_op< std::less< long > >()

template<>
MPI_Op get_mpi_op< std::less< long > > ( std::less< long >  )
inline

Definition at line 71 of file Operations.h.

◆ get_mpi_op< std::less< long double > >()

template<>
MPI_Op get_mpi_op< std::less< long double > > ( std::less< long double >  )
inline

Definition at line 80 of file Operations.h.

◆ get_mpi_op< std::less< long long > >()

template<>
MPI_Op get_mpi_op< std::less< long long > > ( std::less< long long >  )
inline

Definition at line 72 of file Operations.h.

◆ get_mpi_op< std::less< short > >()

template<>
MPI_Op get_mpi_op< std::less< short > > ( std::less< short >  )
inline

Definition at line 69 of file Operations.h.

◆ get_mpi_op< std::less< unsigned char > >()

template<>
MPI_Op get_mpi_op< std::less< unsigned char > > ( std::less< unsigned char >  )
inline

Definition at line 73 of file Operations.h.

◆ get_mpi_op< std::less< unsigned int > >()

template<>
MPI_Op get_mpi_op< std::less< unsigned int > > ( std::less< unsigned int >  )
inline

Definition at line 75 of file Operations.h.

◆ get_mpi_op< std::less< unsigned long > >()

template<>
MPI_Op get_mpi_op< std::less< unsigned long > > ( std::less< unsigned long >  )
inline

Definition at line 76 of file Operations.h.

◆ get_mpi_op< std::less< unsigned long long > >()

template<>
MPI_Op get_mpi_op< std::less< unsigned long long > > ( std::less< unsigned long long >  )
inline

Definition at line 77 of file Operations.h.

◆ get_mpi_op< std::less< unsigned short > >()

template<>
MPI_Op get_mpi_op< std::less< unsigned short > > ( std::less< unsigned short >  )
inline

Definition at line 74 of file Operations.h.

◆ get_mpi_op< std::logical_and< bool > >()

template<>
MPI_Op get_mpi_op< std::logical_and< bool > > ( std::logical_and< bool >  )
inline

Definition at line 99 of file Operations.h.

◆ get_mpi_op< std::logical_or< bool > >()

template<>
MPI_Op get_mpi_op< std::logical_or< bool > > ( std::logical_or< bool >  )
inline

Definition at line 98 of file Operations.h.

◆ get_mpi_op< std::plus< char > >()

template<>
MPI_Op get_mpi_op< std::plus< char > > ( std::plus< char >  )
inline

Definition at line 53 of file Operations.h.

◆ get_mpi_op< std::plus< double > >()

template<>
MPI_Op get_mpi_op< std::plus< double > > ( std::plus< double >  )
inline

Definition at line 64 of file Operations.h.

◆ get_mpi_op< std::plus< float > >()

template<>
MPI_Op get_mpi_op< std::plus< float > > ( std::plus< float >  )
inline

Definition at line 63 of file Operations.h.

◆ get_mpi_op< std::plus< int > >()

template<>
MPI_Op get_mpi_op< std::plus< int > > ( std::plus< int >  )
inline

Definition at line 55 of file Operations.h.

◆ get_mpi_op< std::plus< long > >()

template<>
MPI_Op get_mpi_op< std::plus< long > > ( std::plus< long >  )
inline

Definition at line 56 of file Operations.h.

◆ get_mpi_op< std::plus< long double > >()

template<>
MPI_Op get_mpi_op< std::plus< long double > > ( std::plus< long double >  )
inline

Definition at line 65 of file Operations.h.

◆ get_mpi_op< std::plus< long long > >()

template<>
MPI_Op get_mpi_op< std::plus< long long > > ( std::plus< long long >  )
inline

Definition at line 57 of file Operations.h.

◆ get_mpi_op< std::plus< short > >()

template<>
MPI_Op get_mpi_op< std::plus< short > > ( std::plus< short >  )
inline

Definition at line 54 of file Operations.h.

◆ get_mpi_op< std::plus< unsigned char > >()

template<>
MPI_Op get_mpi_op< std::plus< unsigned char > > ( std::plus< unsigned char >  )
inline

Definition at line 58 of file Operations.h.

◆ get_mpi_op< std::plus< unsigned int > >()

template<>
MPI_Op get_mpi_op< std::plus< unsigned int > > ( std::plus< unsigned int >  )
inline

Definition at line 60 of file Operations.h.

◆ get_mpi_op< std::plus< unsigned long > >()

template<>
MPI_Op get_mpi_op< std::plus< unsigned long > > ( std::plus< unsigned long >  )
inline

Definition at line 61 of file Operations.h.

◆ get_mpi_op< std::plus< unsigned long long > >()

template<>
MPI_Op get_mpi_op< std::plus< unsigned long long > > ( std::plus< unsigned long long >  )
inline

Definition at line 62 of file Operations.h.

◆ get_mpi_op< std::plus< unsigned short > >()

template<>
MPI_Op get_mpi_op< std::plus< unsigned short > > ( std::plus< unsigned short >  )
inline

Definition at line 59 of file Operations.h.