- Timestamp:
- 07/05/17 14:14:09 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/branch_yushan_merged/extern/src_ep_dev/ep_message.cpp
r1187 r1196 11 11 12 12 using namespace std; 13 14 extern std::list< ep_lib::MPI_Request* > * EP_PendingRequests; 15 #pragma omp threadprivate(EP_PendingRequests) 13 16 14 17 namespace ep_lib … … 248 251 #pragma omp flush 249 252 ptr_comm_target->ep_comm_ptr->message_queue->push_back(*msg_block); 250 printf("probed one message, ep_src = %d, tag = %d, mpi_status = %p (%p), message = %d\n", msg_block->ep_src, msg_block->ep_tag, msg_block->mpi_status, &status, msg_block->mpi_message);253 //printf("probed one message, ep_src = %d, tag = %d, mpi_status = %p (%p), message = %d\n", msg_block->ep_src, msg_block->ep_tag, msg_block->mpi_status, &status, msg_block->mpi_message); 251 254 #pragma omp flush 252 255 } … … 261 264 } 262 265 266 int Request_Check() 267 { 268 MPI_Status status; 269 MPI_Message message; 270 int probed = false; 271 int recv_count = 0; 272 std::list<MPI_Request* >::iterator it; 273 274 for(it = EP_PendingRequests->begin(); it!=EP_PendingRequests->end(); it++) 275 { 276 Message_Check((*it)->comm); 277 } 278 279 280 for(it = EP_PendingRequests->begin(); it!=EP_PendingRequests->end(); ) 281 { 282 MPI_Improbe((*it)->ep_src, (*it)->ep_tag, (*it)->comm, &probed, &message, &status); 283 if(probed) 284 { 285 MPI_Get_count(&status, (*it)->ep_datatype, &recv_count); 286 MPI_Imrecv((*it)->buf, recv_count, (*it)->ep_datatype, &message, *it); 287 (*it)->type = 3; 288 //printf("request add = %p, mpi_request=%d\n", *it, (*it)->mpi_request); 289 EP_PendingRequests->erase(it); 290 it = EP_PendingRequests->begin(); 291 continue; 292 } 293 it++; 294 } 295 } 296 263 297 }
Note: See TracChangeset
for help on using the changeset viewer.