Changeset 1642 for XIOS/dev/branch_openmp/extern/src_ep_dev/ep_probe.cpp
- Timestamp:
- 01/23/19 10:31:44 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/branch_openmp/extern/src_ep_dev/ep_probe.cpp
r1539 r1642 68 68 *flag = false; 69 69 70 Message_Check(comm);71 72 #pragma omp flush73 74 70 #pragma omp critical (_query) 75 71 for(Message_list::iterator it = comm->ep_comm_ptr->message_queue->begin(); it!= comm->ep_comm_ptr->message_queue->end(); ++it) … … 98 94 } 99 95 } 96 if(*flag) return 0; 97 98 Message_Check(comm); 99 100 #pragma omp flush 101 102 #pragma omp critical (_query) 103 for(Message_list::iterator it = comm->ep_comm_ptr->message_queue->begin(); it!= comm->ep_comm_ptr->message_queue->end(); ++it) 104 { 105 bool src_matched = src<0? true: (*it)->ep_src == src; 106 bool tag_matched = tag<0? true: (*it)->ep_tag == tag; 107 108 if(src_matched && tag_matched) 109 { 110 Debug("find message\n"); 111 112 status->mpi_status = new ::MPI_Status(*static_cast< ::MPI_Status*>((*it)->mpi_status)); 113 status->ep_src = (*it)->ep_src; 114 status->ep_tag = (*it)->ep_tag; 115 116 if(comm->is_intercomm) 117 { 118 for(INTER_RANK_MAP::iterator iter = comm->inter_rank_map->begin(); iter != comm->inter_rank_map->end(); iter++) 119 { 120 if(iter->second == (*it)->ep_src) status->ep_src=iter->first; 121 } 122 } 123 124 *flag = true; 125 break; 126 } 127 } 128 if(*flag) return 0; 100 129 } 101 130 … … 129 158 *flag = false; 130 159 131 Message_Check(comm);132 133 #pragma omp flush134 135 160 #pragma omp critical (_query) 136 161 if(! comm->ep_comm_ptr->message_queue->empty()) … … 179 204 } 180 205 } 206 207 if(*flag) return 0; 208 209 Message_Check(comm); 210 211 #pragma omp flush 212 213 #pragma omp critical (_query) 214 if(! comm->ep_comm_ptr->message_queue->empty()) 215 { 216 for(Message_list::iterator it = comm->ep_comm_ptr->message_queue->begin(); it!= comm->ep_comm_ptr->message_queue->end(); ++it) 217 { 218 219 bool src_matched = src<0? true: (*it)->ep_src == src; 220 bool tag_matched = tag<0? true: (*it)->ep_tag == tag; 221 222 if(src_matched && tag_matched) 223 { 224 *flag = true; 225 226 status->mpi_status = new ::MPI_Status(*static_cast< ::MPI_Status*>((*it)->mpi_status)); 227 memcheck("new "<< status->mpi_status << " : in ep_lib::MPI_Improbe, status->mpi_status = new ::MPI_Status"); 228 status->ep_src = (*it)->ep_src; 229 status->ep_tag = (*it)->ep_tag; 230 231 (*message)->mpi_message = new ::MPI_Message(*static_cast< ::MPI_Message*>((*it)->mpi_message)); 232 memcheck("new "<< (*message)->mpi_message <<" : in ep_lib::MPI_Improbe, (*message)->mpi_message = new ::MPI_Message"); 233 (*message)->ep_src = (*it)->ep_src; 234 (*message)->ep_tag = (*it)->ep_tag; 235 236 237 #pragma omp critical (_query2) 238 { 239 memcheck("delete "<< (*it)->mpi_message <<" : in ep_lib::Message_Check, delete (*it)->mpi_message"); 240 memcheck("delete "<< (*it)->mpi_status <<" : in ep_lib::Message_Check, delete (*it)->mpi_status"); 241 memcheck("delete "<< (*it) <<" : in ep_lib::Message_Check, delete (*it)"); 242 243 244 delete (*it)->mpi_message; 245 delete (*it)->mpi_status; 246 delete *it; 247 248 249 comm->ep_comm_ptr->message_queue->erase(it); 250 memcheck("message_queue["<<mpi_rank<<","<<ep_rank_loc<<"]->size = "<<comm->ep_comm_ptr->message_queue->size()); 251 #pragma omp flush 252 } 253 254 break; 255 } 256 257 } 258 } 259 260 if(*flag) return 0; 261 181 262 } 182 263
Note: See TracChangeset
for help on using the changeset viewer.