Changeset 1500 for XIOS/dev/branch_openmp/extern/ep_dev/ep_intercomm.cpp
- Timestamp:
- 05/28/18 09:54:32 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/branch_openmp/extern/ep_dev/ep_intercomm.cpp
r1499 r1500 10 10 int MPI_Intercomm_create(MPI_Comm local_comm, int local_leader, MPI_Comm peer_comm, int remote_leader, int tag, MPI_Comm *newintercomm) 11 11 { 12 assert(local_comm .is_ep);12 assert(local_comm->is_ep); 13 13 14 14 int ep_rank, ep_rank_loc, mpi_rank; 15 15 int ep_size, num_ep, mpi_size; 16 16 17 ep_rank = local_comm .ep_comm_ptr->size_rank_info[0].first;18 ep_rank_loc = local_comm .ep_comm_ptr->size_rank_info[1].first;19 mpi_rank = local_comm .ep_comm_ptr->size_rank_info[2].first;20 ep_size = local_comm .ep_comm_ptr->size_rank_info[0].second;21 num_ep = local_comm .ep_comm_ptr->size_rank_info[1].second;22 mpi_size = local_comm .ep_comm_ptr->size_rank_info[2].second;17 ep_rank = local_comm->ep_comm_ptr->size_rank_info[0].first; 18 ep_rank_loc = local_comm->ep_comm_ptr->size_rank_info[1].first; 19 mpi_rank = local_comm->ep_comm_ptr->size_rank_info[2].first; 20 ep_size = local_comm->ep_comm_ptr->size_rank_info[0].second; 21 num_ep = local_comm->ep_comm_ptr->size_rank_info[1].second; 22 mpi_size = local_comm->ep_comm_ptr->size_rank_info[2].second; 23 23 24 24 … … 62 62 { 63 63 if(ep_rank == local_leader) Debug("calling MPI_Intercomm_create_unique_leader\n"); 64 local_comm .ep_comm_ptr->comm_label = -99;64 local_comm->ep_comm_ptr->comm_label = -99; 65 65 66 66 return MPI_Intercomm_create_unique_leader(local_comm, local_leader, peer_comm, remote_leader, tag, newintercomm); … … 77 77 // change leader 78 78 is_decider = true; 79 int target = local_comm .rank_map->at(local_leader).second;79 int target = local_comm->rank_map->at(local_leader).second; 80 80 { 81 81 for(int i=0; i<ep_size; i++) 82 82 { 83 if(local_comm .rank_map->at(i).second != target && local_comm.rank_map->at(i).first == 0)83 if(local_comm->rank_map->at(i).second != target && local_comm->rank_map->at(i).first == 0) 84 84 { 85 85 new_local_leader = i; … … 100 100 // change leader 101 101 is_decider = true; 102 int target = local_comm .rank_map->at(local_leader).second;102 int target = local_comm->rank_map->at(local_leader).second; 103 103 { 104 104 for(int i=0; i<ep_size; i++) 105 105 { 106 if(local_comm .rank_map->at(i).second != target && local_comm.rank_map->at(i).first == 0)106 if(local_comm->rank_map->at(i).second != target && local_comm->rank_map->at(i).first == 0) 107 107 { 108 108 new_local_leader = i; … … 146 146 if(ep_rank == new_local_leader) 147 147 { 148 ::MPI_Comm_rank(to_mpi_comm(MPI_COMM_WORLD .mpi_comm), &leader_in_world[0]);148 ::MPI_Comm_rank(to_mpi_comm(MPI_COMM_WORLD->mpi_comm), &leader_in_world[0]); 149 149 } 150 150 … … 165 165 MPI_Bcast(&leader_in_world[1], 1, MPI_INT, local_leader, local_comm); 166 166 167 local_comm .ep_comm_ptr->comm_label = tag;167 local_comm->ep_comm_ptr->comm_label = tag; 168 168 169 169 if(ep_rank == local_leader) Debug("calling MPI_Intercomm_create_from_world\n"); 170 170 171 return MPI_Intercomm_create_from_world(local_comm, new_local_leader, MPI_COMM_WORLD .mpi_comm, leader_in_world[1], new_tag_in_world, newintercomm);171 return MPI_Intercomm_create_from_world(local_comm, new_local_leader, MPI_COMM_WORLD->mpi_comm, leader_in_world[1], new_tag_in_world, newintercomm); 172 172 173 173 } … … 183 183 { 184 184 *flag = false; 185 if(comm .is_ep)186 { 187 *flag = comm .is_intercomm;185 if(comm->is_ep) 186 { 187 *flag = comm->is_intercomm; 188 188 return 0; 189 189 } 190 else if(comm .mpi_comm != static_cast< ::MPI_Comm*>(MPI_COMM_NULL.mpi_comm))191 { 192 ::MPI_Comm mpi_comm = to_mpi_comm(comm .mpi_comm);190 else if(comm->mpi_comm != static_cast< ::MPI_Comm*>(MPI_COMM_NULL->mpi_comm)) 191 { 192 ::MPI_Comm mpi_comm = to_mpi_comm(comm->mpi_comm); 193 193 194 194 ::MPI_Comm_test_inter(mpi_comm, flag);
Note: See TracChangeset
for help on using the changeset viewer.