Ignore:
Timestamp:
06/04/18 19:25:08 (6 years ago)
Author:
yushan
Message:

save dev. TO DO : test with xios

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/branch_openmp/extern/src_ep_dev/ep_allgatherv.cpp

    r1354 r1520  
    2020  { 
    2121 
    22     if(!comm.is_ep && comm.mpi_comm) 
     22    if(!comm->is_ep && comm->mpi_comm) 
    2323    { 
    24       return ::MPI_Allgatherv(sendbuf, sendcount, to_mpi_type(sendtype), recvbuf, recvcounts, displs, to_mpi_type(recvtype), to_mpi_comm(comm.mpi_comm)); 
     24      return ::MPI_Allgatherv(sendbuf, sendcount, to_mpi_type(sendtype), recvbuf, recvcounts, displs, to_mpi_type(recvtype), to_mpi_comm(comm->mpi_comm)); 
    2525    } 
    2626 
    27     if(!comm.mpi_comm) return 0; 
     27    if(!comm->mpi_comm) return 0; 
    2828 
    2929 
     
    3838 
    3939 
    40     int ep_rank = comm.ep_comm_ptr->size_rank_info[0].first; 
    41     int ep_rank_loc = comm.ep_comm_ptr->size_rank_info[1].first; 
    42     int mpi_rank = comm.ep_comm_ptr->size_rank_info[2].first; 
    43     int ep_size = comm.ep_comm_ptr->size_rank_info[0].second; 
    44     int num_ep = comm.ep_comm_ptr->size_rank_info[1].second; 
    45     int mpi_size = comm.ep_comm_ptr->size_rank_info[2].second; 
     40    int ep_rank = comm->ep_comm_ptr->size_rank_info[0].first; 
     41    int ep_rank_loc = comm->ep_comm_ptr->size_rank_info[1].first; 
     42    int mpi_rank = comm->ep_comm_ptr->size_rank_info[2].first; 
     43    int ep_size = comm->ep_comm_ptr->size_rank_info[0].second; 
     44    int num_ep = comm->ep_comm_ptr->size_rank_info[1].second; 
     45    int mpi_size = comm->ep_comm_ptr->size_rank_info[2].second; 
    4646 
    4747    assert(sendcount == recvcounts[ep_rank]); 
     
    7979 
    8080      int local_sendcount = std::accumulate(local_recvcounts.begin(), local_recvcounts.end(), 0); 
    81       ::MPI_Allgather(&local_sendcount, 1, to_mpi_type(MPI_INT), mpi_recvcounts.data(), 1, to_mpi_type(MPI_INT), to_mpi_comm(comm.mpi_comm)); 
     81      ::MPI_Allgather(&local_sendcount, 1, to_mpi_type(MPI_INT), mpi_recvcounts.data(), 1, to_mpi_type(MPI_INT), to_mpi_comm(comm->mpi_comm)); 
    8282 
    8383      for(int i=1; i<mpi_size; i++) 
     
    8585 
    8686 
    87       ::MPI_Allgatherv(local_recvbuf, local_sendcount, to_mpi_type(datatype), tmp_recvbuf, mpi_recvcounts.data(), mpi_displs.data(), to_mpi_type(datatype), to_mpi_comm(comm.mpi_comm)); 
     87      ::MPI_Allgatherv(local_recvbuf, local_sendcount, to_mpi_type(datatype), tmp_recvbuf, mpi_recvcounts.data(), mpi_displs.data(), to_mpi_type(datatype), to_mpi_comm(comm->mpi_comm)); 
    8888 
    8989      // reorder  
     
    9292      { 
    9393        int extra = 0; 
    94         for(int j=0, k=0; j<ep_size, k<comm.rank_map->at(i).first; j++) 
    95           if(comm.rank_map->at(i).second == comm.rank_map->at(j).second) 
     94        for(int j=0, k=0; j<ep_size, k<comm->ep_rank_map->at(i).first; j++) 
     95          if(comm->ep_rank_map->at(i).second == comm->ep_rank_map->at(j).second) 
    9696          { 
    9797            extra += recvcounts[j]; 
     
    9999          }   
    100100 
    101         offset = mpi_displs[comm.rank_map->at(i).second] +  extra; 
     101        offset = mpi_displs[comm->ep_rank_map->at(i).second] +  extra; 
    102102 
    103103        memcpy(recvbuf+displs[i]*datasize, tmp_recvbuf+offset*datasize, recvcounts[i]*datasize); 
Note: See TracChangeset for help on using the changeset viewer.