OPAL (Object Oriented Parallel Accelerator Library) 2024.2
OPAL
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<> \
struct is_ippl_mpi_type<CppOp>: \
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.

References get_mpi_op().

Referenced by allreduce(), allreduce(), get_mpi_op(), new_reduce(), new_reduce(), and reduce().

Here is the call graph for this function:

◆ 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.