64 MyMPI(
const MPI_Comm& comm_world,
int nplanes);
72 MPI_Comm_rank( comm, &my_rank );
73 MPI_Comm_size( comm, &n_ranks );
80 for(
int i=0; i<n_ranks; i++){
81 if(my_rank==i) func(i);
91 if constexpr(std::is_same<T, double>::value) {
93 }
else if constexpr(std::is_same<T, int>::value) {
95 }
else if constexpr(std::is_same<T, float>::value) {
97 }
else if constexpr(std::is_same<T, long long int>::value) {
98 return MPI_LONG_LONG_INT;
101 static_assert(!std::is_same<T, T>::value,
"Unsupported MPI data type");
102 return MPI_DATATYPE_NULL;
107 template <
typename ViewType>
109 using value_type =
typename ViewType::value_type;
110 return get_mpi_type<value_type>();
void destroy_comm_world()
Definition: my_mpi.cpp:141
int SML_COMM_RANK
Definition: my_mpi.cpp:5
void execute_in_rank_order(const MPI_Comm &comm, F func)
Definition: my_mpi.hpp:69
MPI_Comm SML_COMM_WORLD
Definition: my_mpi.cpp:4
MPI_Datatype get_mpi_type()
Definition: my_mpi.hpp:90
int SML_COMM_SIZE
Definition: my_mpi.cpp:6
void create_comm_world(int color)
Definition: my_mpi.cpp:126
Definition: my_mpi.hpp:19
MyMPI()
Definition: my_mpi.hpp:57
int n_plane_ranks
Definition: my_mpi.hpp:40
MyMPI(int nranks_in)
Definition: my_mpi.hpp:60
int nranks
Definition: my_mpi.hpp:23
int n_intpl_ranks
Definition: my_mpi.hpp:50
int my_plane_rank
Definition: my_mpi.hpp:39
int my_intpl_rank
Definition: my_mpi.hpp:49
MPI_Comm intpl_comm
Definition: my_mpi.hpp:48
int my_rank
Definition: my_mpi.hpp:24
MPI_Comm comm
Definition: my_mpi.hpp:21
MPI_Comm plane_comm
Definition: my_mpi.hpp:38
MPI_Group group
Definition: my_mpi.hpp:22