- Timestamp:
- 06/26/17 18:36:56 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/branch_yushan_merged/extern/src_ep_dev/ep_intercomm_kernel.cpp
r1134 r1185 96 96 ::MPI_Comm_rank(static_cast< ::MPI_Comm>(peer_comm.mpi_comm), &rank_in_peer_mpi[0]); 97 97 98 MPI_Status status;98 99 99 100 100 send_buf[0] = size_info[0]; … … 102 102 send_buf[2] = rank_in_peer_mpi[0]; 103 103 104 MPI_Send(send_buf.data(), 3, MPI_INT_STD, remote_leader, tag, peer_comm); 105 MPI_Recv(recv_buf.data(), 3, MPI_INT_STD, remote_leader, tag, peer_comm, &status); 106 104 MPI_Request req_send, req_recv; 105 MPI_Status sta_send, sta_recv; 106 107 MPI_Isend(send_buf.data(), 3, MPI_INT_STD, remote_leader, tag, peer_comm, &req_send); 108 MPI_Irecv(recv_buf.data(), 3, MPI_INT_STD, remote_leader, tag, peer_comm, &req_recv); 109 110 111 MPI_Wait(&req_send, &sta_send); 112 MPI_Wait(&req_recv, &sta_recv); 113 107 114 size_info[1] = recv_buf[0]; 108 115 remote_ep_size = recv_buf[1]; … … 142 149 std::copy ( ep_info[0].data(), ep_info[0].data() + size_info[0], send_buf.begin() + 2*size_info[0] ); 143 150 144 MPI_Send(send_buf.data(), 3*size_info[0], MPI_INT_STD, remote_leader, tag , peer_comm);145 MPI_Recv(recv_buf.data(), 3*size_info[1], MPI_INT_STD, remote_leader, tag , peer_comm, &status);151 MPI_Send(send_buf.data(), 3*size_info[0], MPI_INT_STD, remote_leader, tag+1, peer_comm); 152 MPI_Recv(recv_buf.data(), 3*size_info[1], MPI_INT_STD, remote_leader, tag+1, peer_comm, &status); 146 153 } 147 154 … … 263 270 size_info[2] = new_ep_info[0].size(); 264 271 MPI_Status status; 265 MPI_Send(&size_info[2], 1, MPI_INT_STD, remote_leader, tag , peer_comm);266 MPI_Recv(&size_info[3], 1, MPI_INT_STD, remote_leader, tag , peer_comm, &status);272 MPI_Send(&size_info[2], 1, MPI_INT_STD, remote_leader, tag+2, peer_comm); 273 MPI_Recv(&size_info[3], 1, MPI_INT_STD, remote_leader, tag+2, peer_comm, &status); 267 274 } 268 275 … … 284 291 std::copy ( new_ep_info[0].data(), new_ep_info[0].data() + size_info[0], send_buf.begin() + 2*size_info[2] ); 285 292 286 MPI_Send(send_buf.data(), 3*size_info[2], MPI_INT_STD, remote_leader, tag , peer_comm);287 MPI_Recv(recv_buf.data(), 3*size_info[3], MPI_INT_STD, remote_leader, tag , peer_comm, &status);293 MPI_Send(send_buf.data(), 3*size_info[2], MPI_INT_STD, remote_leader, tag+3, peer_comm); 294 MPI_Recv(recv_buf.data(), 3*size_info[3], MPI_INT_STD, remote_leader, tag+3, peer_comm, &status); 288 295 } 289 296 … … 482 489 { 483 490 MPI_Status status; 484 MPI_Send((*newintercomm).ep_comm_ptr->intercomm->local_rank_map->data(), 2*local_ep_size, MPI_INT_STD, remote_leader, tag , peer_comm);485 MPI_Recv((*newintercomm).ep_comm_ptr->intercomm->remote_rank_map->data(), 2*remote_ep_size, MPI_INT_STD, remote_leader, tag , peer_comm, &status);486 487 MPI_Send(&local_intercomm_size, 1, MPI_INT_STD, remote_leader, tag , peer_comm);488 MPI_Recv(&remote_intercomm_size, 1, MPI_INT_STD, remote_leader, tag , peer_comm, &status);491 MPI_Send((*newintercomm).ep_comm_ptr->intercomm->local_rank_map->data(), 2*local_ep_size, MPI_INT_STD, remote_leader, tag+4, peer_comm); 492 MPI_Recv((*newintercomm).ep_comm_ptr->intercomm->remote_rank_map->data(), 2*remote_ep_size, MPI_INT_STD, remote_leader, tag+4, peer_comm, &status); 493 494 MPI_Send(&local_intercomm_size, 1, MPI_INT_STD, remote_leader, tag+5, peer_comm); 495 MPI_Recv(&remote_intercomm_size, 1, MPI_INT_STD, remote_leader, tag+5, peer_comm, &status); 489 496 490 497 new_bcast_root_0 = intercomm_ep_rank; … … 507 514 { 508 515 MPI_Status status; 509 MPI_Send((*newintercomm).rank_map->data(), 2*local_intercomm_size, MPI_INT_STD, remote_leader, tag , peer_comm);510 MPI_Recv((*newintercomm).ep_comm_ptr->intercomm->intercomm_rank_map->data(), 2*remote_intercomm_size, MPI_INT_STD, remote_leader, tag , peer_comm, &status);516 MPI_Send((*newintercomm).rank_map->data(), 2*local_intercomm_size, MPI_INT_STD, remote_leader, tag+6, peer_comm); 517 MPI_Recv((*newintercomm).ep_comm_ptr->intercomm->intercomm_rank_map->data(), 2*remote_intercomm_size, MPI_INT_STD, remote_leader, tag+6, peer_comm, &status); 511 518 } 512 519 … … 538 545 // MPI_Comm_rank(*test_comm, &test_rank); 539 546 // printf("=================test_rank = %d\n", test_rank); 547 548 540 549 541 550 return MPI_SUCCESS;
Note: See TracChangeset
for help on using the changeset viewer.