Ignore:
Timestamp:
06/26/17 18:36:56 (7 years ago)
Author:
yushan
Message:

save dev. recv_test OK

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/branch_yushan_merged/extern/src_ep_dev/ep_intercomm_kernel.cpp

    r1134 r1185  
    9696        ::MPI_Comm_rank(static_cast< ::MPI_Comm>(peer_comm.mpi_comm), &rank_in_peer_mpi[0]); 
    9797 
    98         MPI_Status status; 
     98         
    9999 
    100100        send_buf[0] = size_info[0]; 
     
    102102        send_buf[2] = rank_in_peer_mpi[0]; 
    103103 
    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         
    107114        size_info[1] = recv_buf[0]; 
    108115        remote_ep_size = recv_buf[1]; 
     
    142149        std::copy ( ep_info[0].data(),   ep_info[0].data()   + size_info[0], send_buf.begin() + 2*size_info[0] ); 
    143150 
    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); 
    146153      } 
    147154 
     
    263270        size_info[2] = new_ep_info[0].size(); 
    264271        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); 
    267274      } 
    268275 
     
    284291        std::copy ( new_ep_info[0].data(),   new_ep_info[0].data()   + size_info[0], send_buf.begin() + 2*size_info[2] ); 
    285292 
    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); 
    288295      } 
    289296 
     
    482489    { 
    483490      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); 
    489496 
    490497      new_bcast_root_0 = intercomm_ep_rank; 
     
    507514    { 
    508515      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); 
    511518    } 
    512519 
     
    538545//    MPI_Comm_rank(*test_comm, &test_rank); 
    539546//    printf("=================test_rank = %d\n", test_rank); 
     547     
     548     
    540549 
    541550    return MPI_SUCCESS; 
Note: See TracChangeset for help on using the changeset viewer.