Ignore:
Timestamp:
01/10/18 16:16:44 (6 years ago)
Author:
yushan
Message:

dev EP-RMA : MPI_Rput MPI_Rget MPI_Raccumulate MPI_Rget_accumulate (to be tested)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/branch_openmp/extern/ep_dev/ep_put.cpp

    r1384 r1398  
    2424  } 
    2525 
     26  int MPI_Rput(const void *origin_addr, int origin_count, MPI_Datatype origin_datatype,  
     27              int target_rank, MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype, MPI_Win win, MPI_Request *request) 
     28  { 
     29    int target_mpi_rank   = win.comm.rank_map->at(target_rank).second; 
     30    int target_local_rank = win.comm.rank_map->at(target_rank).first; 
     31    int num_ep = win.comm.ep_comm_ptr->size_rank_info[1].second; 
     32     
     33    ::MPI_Request mpi_request; 
     34 
     35    if(num_ep==1) 
     36    { 
     37      int return_value = ::MPI_Rput(origin_addr, origin_count, to_mpi_type(origin_datatype), target_mpi_rank, to_mpi_aint(target_disp), target_count, to_mpi_type(target_datatype),  
     38                           to_mpi_win(win.server_win[target_local_rank]), &mpi_request); 
     39 
     40      request->mpi_request = new ::MPI_Request(mpi_request); 
     41 
     42      request->ep_datatype = origin_datatype; 
     43      request->type = 1; 
     44      return return_value; 
     45    } 
     46 
     47    else 
     48    { 
     49      int return_value = ::MPI_Rput(origin_addr, origin_count, to_mpi_type(origin_datatype), target_mpi_rank, to_mpi_aint(target_disp), target_count, to_mpi_type(target_datatype),  
     50                         to_mpi_win(win.client_win), &mpi_request); 
     51 
     52      request->mpi_request = new ::MPI_Request(mpi_request); 
     53 
     54      request->ep_datatype = origin_datatype; 
     55      request->type = 1; 
     56      return return_value; 
     57    } 
     58  } 
     59 
    2660} 
Note: See TracChangeset for help on using the changeset viewer.