Changeset 1503 for XIOS/dev/branch_openmp/extern/ep_dev/ep_message.cpp
- Timestamp:
- 05/28/18 17:28:07 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/branch_openmp/extern/ep_dev/ep_message.cpp
r1500 r1503 20 20 int Request_Check() 21 21 { 22 if(EP_PendingRequests == 0 ) EP_PendingRequests = new std::list< MPI_Request* >; 23 24 if(EP_PendingRequests->size() == 0) return 0; 25 22 26 MPI_Status status; 23 27 MPI_Message *message; … … 26 30 std::list<MPI_Request* >::iterator it; 27 31 28 if(EP_PendingRequests == 0 ) return 0;29 32 30 33 for(it = EP_PendingRequests->begin(); it!=EP_PendingRequests->end(); it++) … … 38 41 if((*(*it))->state == 0) 39 42 { 40 41 message = new MPI_Message; 42 *message = new ep_message; 43 44 printf("new %p : in ep_lib::Request_Check, message = new MPI_Message\n", message); 45 printf("new %p : in ep_lib::Request_Check, *message = new ep_message\n", *message); 43 #pragma omp critical (_query0) 44 { 45 MPI_Iprobe((*(*it))->ep_src, (*(*it))->ep_tag, ((*(*it))->comm), &probed, &status); 46 if(probed) 47 { 48 message = new MPI_Message; 49 *message = new ep_message; 50 51 memcheck("new "<< message <<" : in ep_lib::Request_Check, message = new MPI_Message"); 52 memcheck("new "<< *message <<" : in ep_lib::Request_Check, *message = new ep_message"); 46 53 47 54 48 MPI_Improbe((*(*it))->ep_src, (*(*it))->ep_tag, ((*(*it))->comm), &probed, message, &status); 49 printf("in Request_Check, after improbe, mpi_status = %p\n", to_mpi_status_ptr(status)); 55 MPI_Improbe((*(*it))->ep_src, (*(*it))->ep_tag, (*(*it))->comm, &probed, message, &status); 56 57 } 58 } 50 59 51 60 … … 54 63 ::MPI_Get_count(to_mpi_status_ptr(status), to_mpi_type((*(*it))->ep_datatype), &recv_count); 55 64 56 printf("in Request_Check, imrecv, buf = %p, recv_count = %d, status = %p\n", (*(*it))->buf, recv_count, to_mpi_status_ptr(status));57 65 MPI_Imrecv((*(*it))->buf, recv_count, (*(*it))->ep_datatype, message, *it); 58 66 (*(*it))->type = 3; 59 67 (*(*it))->state = 1; 60 61 62 printf("delete %p : in ep_lib::Request_Check, delete *message\n", *message); 63 printf("delete %p : in ep_lib::Request_Check, delete message\n", message); 68 69 memcheck("delete "<< status.mpi_status <<" : in ep_lib::Request_Check, delete status.mpi_status"); 70 delete status.mpi_status; 71 72 memcheck("delete "<< *message <<" : in ep_lib::Request_Check, delete *message"); 73 memcheck("delete "<< message <<" : in ep_lib::Request_Check, delete message"); 64 74 65 75 delete *message; … … 68 78 it++; 69 79 continue; 70 } 80 } 71 81 } 72 82 73 83 if((*(*it))->state == 2) 74 84 { 75 printf("delete %p : in ep_lib::Request_Check, delete (*(*it))\n", (*(*it))); 85 int ep_rank = ((*(*it))->comm)->ep_comm_ptr->size_rank_info[0].first; 86 memcheck("delete "<< (*(*it)) <<" : in ep_lib::Request_Check, delete (*(*it))"); 76 87 delete (*(*it)); 77 88 78 89 EP_PendingRequests->erase(it); 79 printf("EP_PendingRequests->size() = %lu\n",EP_PendingRequests->size());90 memcheck("EP_PendingRequests["<<ep_rank<<"]->size() = " << EP_PendingRequests->size()); 80 91 it = EP_PendingRequests->begin(); 81 92 continue; … … 128 139 msg->mpi_message = new ::MPI_Message(message); 129 140 130 printf("new %p : in ep_lib::Message_Check, msg = new ep_message\n", msg);131 printf("new %p : in ep_lib::Message_Check, msg->mpi_message = new ::MPI_Message\n", msg->mpi_message);141 memcheck("new "<< msg <<" : in ep_lib::Message_Check, msg = new ep_message"); 142 memcheck("new "<< msg->mpi_message <<" : in ep_lib::Message_Check, msg->mpi_message = new ::MPI_Message"); 132 143 133 144 … … 139 150 msg->ep_src = get_ep_rank(comm, src_loc, src_mpi); 140 151 msg->mpi_status = new ::MPI_Status(status); 141 printf("new %p : in ep_lib::Message_Check, msg->mpi_status = new ::MPI_Status\n", msg->mpi_status);152 memcheck("new "<< msg->mpi_status <<" : in ep_lib::Message_Check, msg->mpi_status = new ::MPI_Status"); 142 153 143 154 #pragma omp critical (_query) … … 145 156 #pragma omp flush 146 157 comm->ep_comm_ptr->comm_list[dest_loc]->ep_comm_ptr->message_queue->push_back(msg); 147 int test_count; 148 ::MPI_Get_count(static_cast< ::MPI_Status* >(msg->mpi_status), 1275070475, &test_count); 149 printf("status1 = %p, test_count2 = %d\n", static_cast< ::MPI_Status* >(msg->mpi_status), test_count); 150 151 ::MPI_Get_count(static_cast< ::MPI_Status* >(comm->ep_comm_ptr->comm_list[dest_loc]->ep_comm_ptr->message_queue->back()->mpi_status), 1275070475, &test_count); 152 printf("status2 = %p, test_count2 = %d\n", static_cast< ::MPI_Status* >(comm->ep_comm_ptr->comm_list[dest_loc]->ep_comm_ptr->message_queue->back()->mpi_status), test_count); 153 158 int dest_mpi = comm->ep_comm_ptr->size_rank_info[2].first; 159 memcheck("message_queue["<<dest_mpi<<","<<dest_loc<<"]->size = "<<comm->ep_comm_ptr->comm_list[dest_loc]->ep_comm_ptr->message_queue->size()); 154 160 #pragma omp flush 155 161 } … … 199 205 msg->mpi_message = new ::MPI_Message(message); 200 206 201 printf("new %p : in ep_lib::Message_Check, msg = new ep_message\n", msg);202 printf("new %p : in ep_lib::Message_Check, msg->mpi_message = new ::MPI_Message\n", msg->mpi_message);207 memcheck("new "<< msg <<" : in ep_lib::Message_Check, msg = new ep_message"); 208 memcheck("new "<< msg->mpi_message <<" : in ep_lib::Message_Check, msg->mpi_message = new ::MPI_Message"); 203 209 204 210 … … 210 216 211 217 msg->ep_src = get_ep_rank(comm, src_loc, src_mpi); 212 msg->mpi_status = new ::MPI_Status(status); 213 printf("new %p : in ep_lib::Message_Check, msg->mpi_status = new ::MPI_Status\n", msg->mpi_status);218 msg->mpi_status = new ::MPI_Status(status); 219 memcheck("new "<< msg->mpi_status <<" : in ep_lib::Message_Check, msg->mpi_status = new ::MPI_Status"); 214 220 215 221 #pragma omp critical (_query) … … 217 223 #pragma omp flush 218 224 comm->ep_comm_ptr->comm_list[dest_loc]->ep_comm_ptr->message_queue->push_back(msg); 225 memcheck("comm->ep_comm_ptr->comm_list["<<dest_loc<<"]->ep_comm_ptr->message_queue->size = "<<comm->ep_comm_ptr->comm_list[dest_loc]->ep_comm_ptr->message_queue->size()); 219 226 #pragma omp flush 220 227 }
Note: See TracChangeset
for help on using the changeset viewer.