Ignore:
Timestamp:
06/08/18 19:34:51 (3 years ago)
Author:
yushan
Message:

save dev

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/branch_openmp/extern/src_ep_dev/ep_message.cpp

    r1520 r1533  
    2323     
    2424    if(EP_PendingRequests->size() == 0) return 0; 
     25     
     26    show_EP_PendingRequests(EP_PendingRequests); 
    2527     
    2628    MPI_Status status; 
     
    3032    std::list<MPI_Request* >::iterator it; 
    3133     
     34//    show_EP_PendingRequests(EP_PendingRequests); 
     35     
    3236     
    3337    for(it = EP_PendingRequests->begin(); it!=EP_PendingRequests->end(); it++) 
    3438    {  
     39      if(*(*it) == 0) 
     40      { 
     41        EP_PendingRequests->erase(it); 
     42         
     43        memcheck("EP_PendingRequests["<<ep_rank<<"]->size() = " << EP_PendingRequests->size()); 
     44        it = EP_PendingRequests->begin(); 
     45        continue; 
     46      } 
     47       
     48      if((*(*it))->state == 2) 
     49      { 
     50        EP_PendingRequests->erase(it); 
     51         
     52        memcheck("EP_PendingRequests["<<ep_rank<<"]->size() = " << EP_PendingRequests->size()); 
     53        it = EP_PendingRequests->begin(); 
     54        continue; 
     55      } 
     56       
    3557      Message_Check(((*(*it))->comm)); 
    3658    } 
     59     
     60     
    3761 
    3862 
    3963    for(it = EP_PendingRequests->begin(); it!=EP_PendingRequests->end(); ) 
    4064    { 
     65      if(*(*it) == 0) 
     66      { 
     67        EP_PendingRequests->erase(it); 
     68         
     69        memcheck("EP_PendingRequests["<<ep_rank<<"]->size() = " << EP_PendingRequests->size()); 
     70        it = EP_PendingRequests->begin(); 
     71        continue; 
     72      } 
     73       
     74      if((*(*it))->state == 2) 
     75      { 
     76        EP_PendingRequests->erase(it); 
     77         
     78        memcheck("EP_PendingRequests["<<ep_rank<<"]->size() = " << EP_PendingRequests->size()); 
     79        it = EP_PendingRequests->begin(); 
     80        continue; 
     81      } 
     82       
    4183      if((*(*it))->state == 0) 
    4284      { 
     
    81123      } 
    82124       
    83       if((*(*it))->state == 2) 
    84       { 
    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))"); 
    87          
    88          
    89         int world_rank; 
    90         MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); 
    91         if(world_rank==2)  
    92         { 
    93           printf("ep %d erased one pending request %p\n", world_rank,*(*it)); 
    94         } 
    95          
    96         EP_PendingRequests->erase(it); 
    97          
    98         memcheck("EP_PendingRequests["<<ep_rank<<"]->size() = " << EP_PendingRequests->size()); 
    99         it = EP_PendingRequests->begin(); 
    100         continue; 
    101       } 
    102       else it++; 
    103     } 
     125      it++; 
     126    } 
     127     
     128    show_EP_PendingRequests(EP_PendingRequests); 
    104129  } 
    105130   
     
    178203    return MPI_SUCCESS; 
    179204  } 
    180  
    181  
    182    
    183    
    184    
    185205 
    186206 
     
    249269    return MPI_SUCCESS; 
    250270  } 
     271   
     272   
     273   
     274  void show_EP_PendingRequests(std::list< ep_lib::MPI_Request* > * EP_PendingRequest) 
     275  { 
     276#ifdef _showinfo 
     277    std::list<MPI_Request* >::iterator it; 
     278     
     279    int i=0; 
     280     
     281    for(it = EP_PendingRequests->begin(); it!=EP_PendingRequests->end(); it++) 
     282    {  
     283      if(*(*it) == 0) 
     284      { 
     285        EP_PendingRequests->erase(it); 
     286             
     287        memcheck("EP_PendingRequests["<<ep_rank<<"]->size() = " << EP_PendingRequests->size()); 
     288        it = EP_PendingRequests->begin(); 
     289        continue; 
     290      } 
     291       
     292      if((*(*it))->state == 2) 
     293      { 
     294        EP_PendingRequests->erase(it); 
     295         
     296        memcheck("EP_PendingRequests["<<ep_rank<<"]->size() = " << EP_PendingRequests->size()); 
     297        it = EP_PendingRequests->begin(); 
     298        continue; 
     299      } 
     300           
     301      if((*(*it))->ep_src>6) 
     302        printf("EP_PendingRequests[%d] : ep_src = %d, ep_tag = %d, type = %d, state = %d, comm = %d\n", i, (*(*it))->ep_src, (*(*it))->ep_tag, (*(*it))->type, (*(*it))->state, to_mpi_comm(((*(*it))->comm)->mpi_comm)); 
     303      i++; 
     304    } 
     305#endif 
     306 
     307  } 
    251308 
    252309   
Note: See TracChangeset for help on using the changeset viewer.