Changeset 2559


Ignore:
Timestamp:
09/11/23 10:44:17 (8 months ago)
Author:
jderouillat
Message:

Forced the request processing, on servers, to start with the buffer creation in P2P

Location:
XIOS3/trunk/src/transport
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • XIOS3/trunk/src/transport/p2p_context_server.cpp

    r2556 r2559  
    104104        if (requests_.back()->test())  
    105105        { 
    106           processRequest(*(requests_.back())) ; 
    107           delete requests_.back(); 
    108           requests_.pop_back() ; 
     106          if ( processRequest( *(requests_.back()) ) ) 
     107          { 
     108            delete requests_.back(); 
     109            requests_.pop_back() ; 
     110          } 
    109111        } 
    110112      } 
     
    119121      if ((*it)->test()) 
    120122      { 
    121         processRequest(*(*it)) ; 
    122         delete (*it); 
    123         auto it2=it ; 
    124         ++it ; 
    125         requests_.erase(it2) ; 
     123        if (processRequest(*(*it))) 
     124        { 
     125          delete (*it); 
     126          auto it2=it ; 
     127          ++it ; 
     128          requests_.erase(it2) ; 
     129        } 
    126130      } 
    127131      else ++it ; 
     
    129133  } 
    130134 
    131   void CP2pContextServer::processRequest(CRequest& request) 
     135  bool CP2pContextServer::processRequest(CRequest& request) 
    132136  { 
    133137    int rank = request.getRank() ; 
    134138    auto it=buffers_.find(rank); 
    135     if (it==buffers_.end()) 
     139    // getCount(new CP2pServerBuffer) = sizeof(MPI_AINT) 
     140    // getCount(RESIZE) : size_t timeline, size_t size + size_t EVENT_BUFFER_RESIZE = 24 
     141    // getCount(HEADER) : size_t timeline, int nbSenders, int nbBlocs 
     142    //                     + nbBlocs * (sizeof(MPI_Aint) addr + int count + int window) = 16 + nbBlocs * 16 
     143    if ((it==buffers_.end())&&(request.getCount() < 3*sizeof(size_t))) 
    136144    { 
    137145      buffers_[rank] = new CP2pServerBuffer(rank, commSelf_, interCommMerged_, pendingEvents_, completedEvents_, request.getBuffer()) ; 
    138     } 
    139     else it->second->receivedRequest(request.getBuffer()) ; 
     146      return true; 
     147    } 
     148    else if (it!=buffers_.end()) { 
     149      it->second->receivedRequest(request.getBuffer()) ; 
     150      return true; 
     151    } 
     152    else 
     153      return false; 
    140154  } 
    141155 
  • XIOS3/trunk/src/transport/p2p_context_server.hpp

    r2556 r2559  
    6363    void listen(void) ; 
    6464    void listenPendingRequest(void) ; 
    65     void processRequest(CRequest& request) ; 
     65    bool processRequest(CRequest& request) ; 
    6666    void checkBuffers(void) ; 
    6767    void processEvents(bool enableEventsProcessing) ; 
Note: See TracChangeset for help on using the changeset viewer.