Changeset 1500 for XIOS/dev/branch_openmp/extern/ep_dev/ep_recv.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_recv.cpp
r1381 r1500 24 24 { 25 25 26 if(!comm .is_ep)26 if(!comm->is_ep) 27 27 { 28 28 ::MPI_Status mpi_status; 29 ::MPI_Recv(buf, count, to_mpi_type(datatype), src<0? MPI_ANY_SOURCE : src, tag<0? MPI_ANY_TAG: tag, to_mpi_comm(comm .mpi_comm), &mpi_status);29 ::MPI_Recv(buf, count, to_mpi_type(datatype), src<0? MPI_ANY_SOURCE : src, tag<0? MPI_ANY_TAG: tag, to_mpi_comm(comm->mpi_comm), &mpi_status); 30 30 31 31 status->ep_src = src; … … 36 36 } 37 37 38 Message_Check(comm);38 //Message_Check(comm); 39 39 40 40 MPI_Request request; … … 56 56 57 57 58 if(!comm .is_ep)58 if(!comm->is_ep) 59 59 { 60 60 ::MPI_Request mpi_request; 61 ::MPI_Irecv(buf, count, to_mpi_type(datatype), src<0? MPI_ANY_SOURCE : src, tag<0? MPI_ANY_TAG: tag, to_mpi_comm(comm .mpi_comm), &mpi_request);61 ::MPI_Irecv(buf, count, to_mpi_type(datatype), src<0? MPI_ANY_SOURCE : src, tag<0? MPI_ANY_TAG: tag, to_mpi_comm(comm->mpi_comm), &mpi_request); 62 62 63 request->mpi_request = new ::MPI_Request(mpi_request);64 request->ep_src = src;65 request->ep_datatype = datatype;66 request->ep_tag = tag;63 (*request)->mpi_request = new ::MPI_Request(mpi_request); 64 (*request)->ep_src = src; 65 (*request)->ep_datatype = datatype; 66 (*request)->ep_tag = tag; 67 67 } 68 69 *request = new ep_request; 70 printf("new %p : in ep_lib::MPI_Irecv, *request = new ep_request\n", (*request)); 68 71 69 request->buf = buf; 70 request->comm = comm; 71 request->type = 2; 72 (*request)->mpi_request = new ::MPI_Request; 73 printf("new %p : in ep_lib::MPI_Irecv, (*request)->mpi_request = new ::MPI_Request\n", (*request)->mpi_request); 74 75 (*request)->buf = buf; 76 (*request)->comm = comm; 77 (*request)->type = 2; 78 (*request)->state = 0; 79 72 80 73 request->ep_src = src; 74 request->ep_tag = tag; 75 request->ep_datatype = datatype; 76 77 78 81 (*request)->ep_src = src; 82 (*request)->ep_tag = tag; 83 (*request)->ep_datatype = datatype; 84 85 79 86 /* With Improbe*/ 80 Message_Check(comm);81 87 82 88 if(EP_PendingRequests == 0 ) … … 85 91 } 86 92 87 88 EP_PendingRequests->push_back(request); 89 90 93 EP_PendingRequests->push_back(request); 94 91 95 Request_Check(); 92 96 … … 98 102 Debug("MPI_Imrecv"); 99 103 100 request->type = 3; 104 (*request)->type = 3; 105 106 ::MPI_Imrecv(buf, count, to_mpi_type(datatype), to_mpi_message_ptr(*message), to_mpi_request_ptr(*request)); 101 107 102 ::MPI_Request mpi_request; 103 ::MPI_Imrecv(buf, count, to_mpi_type(datatype), static_cast< ::MPI_Message* >(message->mpi_message), &mpi_request); 104 105 request->mpi_request = new ::MPI_Request(mpi_request); 106 request->ep_datatype = datatype; 107 request->ep_tag = message->ep_tag; 108 request->ep_src = message->ep_src; 108 (*request)->ep_datatype = datatype; 109 (*request)->ep_tag = (*message)->ep_tag; 110 (*request)->ep_src = (*message)->ep_src; 109 111 110 delete message->mpi_message; 111 112 112 113 return 0; 113 114 } … … 119 120 120 121 ::MPI_Status mpi_status; 121 ::MPI_Mrecv(buf, count, to_mpi_type(datatype), static_cast< ::MPI_Message* >( message->mpi_message), &mpi_status);122 ::MPI_Mrecv(buf, count, to_mpi_type(datatype), static_cast< ::MPI_Message* >((*message)->mpi_message), &mpi_status); 122 123 123 124 status->mpi_status = new ::MPI_Status(mpi_status); 124 status->ep_src = message->ep_src;125 status->ep_src = (*message)->ep_src; 125 126 status->ep_datatype = datatype; 126 status->ep_tag = message->ep_tag;127 status->ep_tag = (*message)->ep_tag; 127 128 128 delete message->mpi_message;129 delete (*message)->mpi_message; 129 130 130 131 //check_sum_recv(buf, count, datatype, message->ep_src, message->ep_tag);
Note: See TracChangeset
for help on using the changeset viewer.