Changeset 1500 for XIOS/dev/branch_openmp/extern/ep_dev/ep_accumulate.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_accumulate.cpp
r1398 r1500 12 12 int target_rank, MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype, MPI_Op op, MPI_Win win) 13 13 { 14 int target_mpi_rank = win .comm.rank_map->at(target_rank).second;15 int target_local_rank = win .comm.rank_map->at(target_rank).first;16 int num_ep = win .comm.ep_comm_ptr->size_rank_info[1].second;14 int target_mpi_rank = win->comm->rank_map->at(target_rank).second; 15 int target_local_rank = win->comm->rank_map->at(target_rank).first; 16 int num_ep = win->comm->ep_comm_ptr->size_rank_info[1].second; 17 17 if(num_ep==1) 18 18 return ::MPI_Accumulate(origin_addr, origin_count, to_mpi_type(origin_datatype), target_mpi_rank, to_mpi_aint(target_disp), target_count, to_mpi_type(target_datatype), 19 to_mpi_op(op), to_mpi_win(win .server_win[target_local_rank]));19 to_mpi_op(op), to_mpi_win(win->server_win[target_local_rank])); 20 20 21 21 else 22 22 return ::MPI_Accumulate(origin_addr, origin_count, to_mpi_type(origin_datatype), target_mpi_rank, to_mpi_aint(target_disp), target_count, to_mpi_type(target_datatype), 23 to_mpi_op(op), to_mpi_win(win .client_win));23 to_mpi_op(op), to_mpi_win(win->client_win)); 24 24 } 25 25 … … 27 27 int target_rank, MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype, MPI_Op op, MPI_Win win, MPI_Request *request) 28 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;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 32 ::MPI_Request mpi_request; 33 33 … … 35 35 { 36 36 int return_value = ::MPI_Raccumulate(origin_addr, origin_count, to_mpi_type(origin_datatype), target_mpi_rank, to_mpi_aint(target_disp), target_count, to_mpi_type(target_datatype), 37 to_mpi_op(op), to_mpi_win(win .server_win[target_local_rank]), &mpi_request);38 request->mpi_request = new ::MPI_Request(mpi_request);37 to_mpi_op(op), to_mpi_win(win->server_win[target_local_rank]), &mpi_request); 38 (*request)->mpi_request = new ::MPI_Request(mpi_request); 39 39 40 request->ep_datatype = origin_datatype;41 request->type = 1;40 (*request)->ep_datatype = origin_datatype; 41 (*request)->type = 1; 42 42 return return_value; 43 43 } … … 46 46 { 47 47 int return_value = ::MPI_Raccumulate(origin_addr, origin_count, to_mpi_type(origin_datatype), target_mpi_rank, to_mpi_aint(target_disp), target_count, to_mpi_type(target_datatype), 48 to_mpi_op(op), to_mpi_win(win .client_win), &mpi_request);49 request->mpi_request = new ::MPI_Request(mpi_request);48 to_mpi_op(op), to_mpi_win(win->client_win), &mpi_request); 49 (*request)->mpi_request = new ::MPI_Request(mpi_request); 50 50 51 request->ep_datatype = origin_datatype;52 request->type = 1;51 (*request)->ep_datatype = origin_datatype; 52 (*request)->type = 1; 53 53 return return_value; 54 54 } … … 60 60 int target_count, MPI_Datatype target_datatype, MPI_Op op, MPI_Win win) 61 61 { 62 int target_mpi_rank = win .comm.rank_map->at(target_rank).second;63 int target_local_rank = win .comm.rank_map->at(target_rank).first;64 int num_ep = win .comm.ep_comm_ptr->size_rank_info[1].second;62 int target_mpi_rank = win->comm->rank_map->at(target_rank).second; 63 int target_local_rank = win->comm->rank_map->at(target_rank).first; 64 int num_ep = win->comm->ep_comm_ptr->size_rank_info[1].second; 65 65 if(num_ep==1) 66 66 return ::MPI_Get_accumulate(origin_addr, origin_count, to_mpi_type(origin_datatype), result_addr, result_count, to_mpi_type(result_datatype), target_mpi_rank, to_mpi_aint(target_disp), target_count, 67 to_mpi_type(target_datatype), to_mpi_op(op), to_mpi_win(win .server_win[target_local_rank]));67 to_mpi_type(target_datatype), to_mpi_op(op), to_mpi_win(win->server_win[target_local_rank])); 68 68 else 69 69 return ::MPI_Get_accumulate(origin_addr, origin_count, to_mpi_type(origin_datatype), result_addr, result_count, to_mpi_type(result_datatype), target_mpi_rank, to_mpi_aint(target_disp), target_count, 70 to_mpi_type(target_datatype), to_mpi_op(op), to_mpi_win(win .client_win));70 to_mpi_type(target_datatype), to_mpi_op(op), to_mpi_win(win->client_win)); 71 71 } 72 72 … … 75 75 int target_count, MPI_Datatype target_datatype, MPI_Op op, MPI_Win win, MPI_Request *request) 76 76 { 77 int target_mpi_rank = win .comm.rank_map->at(target_rank).second;78 int target_local_rank = win .comm.rank_map->at(target_rank).first;79 int num_ep = win .comm.ep_comm_ptr->size_rank_info[1].second;77 int target_mpi_rank = win->comm->rank_map->at(target_rank).second; 78 int target_local_rank = win->comm->rank_map->at(target_rank).first; 79 int num_ep = win->comm->ep_comm_ptr->size_rank_info[1].second; 80 80 ::MPI_Request mpi_request; 81 81 if(num_ep==1) 82 82 { 83 83 int return_value = ::MPI_Rget_accumulate(origin_addr, origin_count, to_mpi_type(origin_datatype), result_addr, result_count, to_mpi_type(result_datatype), target_mpi_rank, to_mpi_aint(target_disp), target_count, 84 to_mpi_type(target_datatype), to_mpi_op(op), to_mpi_win(win .server_win[target_local_rank]), &mpi_request);85 request->mpi_request = new ::MPI_Request(mpi_request);84 to_mpi_type(target_datatype), to_mpi_op(op), to_mpi_win(win->server_win[target_local_rank]), &mpi_request); 85 (*request)->mpi_request = new ::MPI_Request(mpi_request); 86 86 87 request->ep_datatype = origin_datatype;88 request->type = 1;87 (*request)->ep_datatype = origin_datatype; 88 (*request)->type = 1; 89 89 return return_value; 90 90 } … … 92 92 { 93 93 int return_value = ::MPI_Rget_accumulate(origin_addr, origin_count, to_mpi_type(origin_datatype), result_addr, result_count, to_mpi_type(result_datatype), target_mpi_rank, to_mpi_aint(target_disp), target_count, 94 to_mpi_type(target_datatype), to_mpi_op(op), to_mpi_win(win .client_win), &mpi_request);95 request->mpi_request = new ::MPI_Request(mpi_request);94 to_mpi_type(target_datatype), to_mpi_op(op), to_mpi_win(win->client_win), &mpi_request); 95 (*request)->mpi_request = new ::MPI_Request(mpi_request); 96 96 97 request->ep_datatype = origin_datatype;98 request->type = 1;97 (*request)->ep_datatype = origin_datatype; 98 (*request)->type = 1; 99 99 return return_value; 100 100 }
Note: See TracChangeset
for help on using the changeset viewer.