57 MyMPI(
const MPI_Comm& comm_world,
int nplanes){
59 MPI_Comm_size( comm_world, &
nranks );
62 int ranks_per_plane =
nranks/nplanes;
70 std::vector<int> new_sml_comm_ranks(
nranks);
72 for(
int j=0; j<ranks_per_plane; j++){
73 for(
int i=0; i<nplanes; i++){
74 new_sml_comm_ranks[ranks_per_plane*i + j] = k;
81 MPI_Group mpi_comm_world_group;
82 MPI_Comm_group(comm_world, &mpi_comm_world_group);
85 MPI_Group_incl(mpi_comm_world_group,
nranks, new_sml_comm_ranks.data(), &
group);
88 MPI_Comm_create(comm_world,
group, &
comm);
94 int plane_0_pe=int(
my_rank/ranks_per_plane)*ranks_per_plane;
95 std::vector<int> plane_ranks(ranks_per_plane);
96 for(
int j=0; j<ranks_per_plane; j++){
97 plane_ranks[j]=plane_0_pe + j;
101 MPI_Group plane_group;
102 MPI_Group_incl(
group, ranks_per_plane, plane_ranks.data(), &plane_group);
113 std::vector<int> intpl_ranks(nplanes);
114 for(
int i=0; i<nplanes; i++){
119 MPI_Group intpl_group;
120 MPI_Group_incl(
group, nplanes, intpl_ranks.data(), &intpl_group);
MPI_Comm SML_COMM_WORLD
Definition: my_mpi.cpp:4
MPI_Comm plane_comm
Definition: my_mpi.hpp:36
MyMPI(const MPI_Comm &comm_world, int nplanes)
Definition: my_mpi.hpp:57
bool my_debug_flag
Definition: my_mpi.cpp:7
int my_intpl_rank
Definition: my_mpi.hpp:47
int my_rank
Definition: my_mpi.hpp:22
Definition: my_mpi.hpp:17
void create_comm_world(int color)
Definition: my_mpi.cpp:14
MPI_Comm comm
Definition: my_mpi.hpp:19
int my_plane_rank
Definition: my_mpi.hpp:37
int n_plane_ranks
Definition: my_mpi.hpp:38
int SML_COMM_RANK
Definition: my_mpi.cpp:5
MyMPI()
Definition: my_mpi.hpp:55
MPI_Comm intpl_comm
Definition: my_mpi.hpp:46
void destroy_comm_world()
Definition: my_mpi.cpp:29
MPI_Group group
Definition: my_mpi.hpp:20
int nranks
Definition: my_mpi.hpp:21
int n_intpl_ranks
Definition: my_mpi.hpp:48