Changeset 2526 for XIOS3/trunk/src


Ignore:
Timestamp:
06/29/23 11:17:44 (12 months ago)
Author:
jderouillat
Message:

Backport intracommunicator probing and a nonblocking communication fix for the one_sided protocol (2524-2525) in trunk

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

Legend:

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

    r2399 r2526  
    88  extern CLogType logProtocol; 
    99 
    10   COneSidedClientBuffer::COneSidedClientBuffer(MPI_Comm& interComm, int serverRank, MPI_Comm& commSelf, MPI_Comm& interCommMerged, int intraServerRank) : interComm_(interComm), serverRank_(serverRank) 
     10  COneSidedClientBuffer::COneSidedClientBuffer(MPI_Comm& interComm, int serverRank, MPI_Comm& commSelf, MPI_Comm& interCommMerged, int intraServerRank) : interComm_(interComm), serverRank_(serverRank), interCommMerged_(interCommMerged), intraServerRank_(intraServerRank) 
    1111  { 
    1212     
     
    261261    } 
    262262    if (info.isActive(logProtocol)) CTimer::get("sendTimelineEvent : MPI_Isend").resume() ; 
    263     MPI_Isend(request.buffer->start(),request.buffer->count(), MPI_CHAR, serverRank_, 20, interComm_, &request.mpiRequest ) ; 
     263    MPI_Isend(request.buffer->start(),request.buffer->count(), MPI_CHAR, intraServerRank_, 20, interCommMerged_, &request.mpiRequest ) ; 
    264264    if (info.isActive(logProtocol)) CTimer::get("sendTimelineEvent : MPI_Isend").suspend() ; 
    265265    info(logProtocol)<<outStr.str()<<endl ; 
     
    272272    request.buffer = new CBufferOut(sizeof(EVENT_BUFFER_RESIZE)+sizeof(timeline)+sizeof(size)) ;  
    273273    *(request.buffer)<<EVENT_BUFFER_RESIZE<<timeline<<size ; 
    274     MPI_Isend(request.buffer->start(),request.buffer->count(), MPI_CHAR, serverRank_, 20, interComm_, &request.mpiRequest ) ; 
     274    MPI_Isend(request.buffer->start(),request.buffer->count(), MPI_CHAR, intraServerRank_, 20, interCommMerged_, &request.mpiRequest ) ; 
    275275    requests_.push_back(request) ; 
    276276  } 
     
    280280    MPI_Aint controlAddr ; 
    281281    MPI_Get_address(control_, &controlAddr) ; 
    282     MPI_Send(&controlAddr, 1, MPI_AINT, serverRank_, 20, interComm_) ; 
     282    MPI_Send(&controlAddr, 1, MPI_AINT, intraServerRank_, 20, interCommMerged_) ; 
    283283  } 
    284284 
  • XIOS3/trunk/src/transport/one_sided_client_buffer.hpp

    r2399 r2526  
    182182      int serverRank_ ; 
    183183 
     184      MPI_Comm interCommMerged_;  
     185      int intraServerRank_ ; 
     186 
    184187      std::list<CBuffer*> buffers_ ; 
    185188      std::list<SBloc> blocs_ ; 
  • XIOS3/trunk/src/transport/one_sided_context_server.cpp

    r2407 r2526  
    9898    { 
    9999      traceOff(); 
    100       MPI_Iprobe(MPI_ANY_SOURCE, 20,interComm, &flag, &status); 
     100      MPI_Iprobe(MPI_ANY_SOURCE, 20,interCommMerged_, &flag, &status); 
    101101      traceOn(); 
    102102      if (flag==true) 
    103103      { 
    104         requests_.push_back(CRequest(interComm, status)) ; 
    105         if (requests_.back().test())  
     104        requests_.push_back(new CRequest(interCommMerged_, status)) ; 
     105        if (requests_.back()->test())  
    106106        { 
    107           processRequest(requests_.back()) ; 
     107          processRequest(*(requests_.back())) ; 
     108          delete requests_.back(); 
    108109          requests_.pop_back() ; 
    109110        } 
     
    117118    while (it != requests_.end()) 
    118119    { 
    119       if (it->test()) 
    120       { 
    121         processRequest(*it) ; 
     120      if ((*it)->test()) 
     121      { 
     122        processRequest(*(*it)) ; 
     123        delete (*it); 
    122124        auto it2=it ; 
    123125        ++it ; 
  • XIOS3/trunk/src/transport/one_sided_context_server.hpp

    r2343 r2526  
    106106      MPI_Request processEventRequest_ ; 
    107107 
    108       std::list<CRequest> requests_ ; 
     108      std::list<CRequest*> requests_ ; 
    109109 
    110110      std::map<size_t, SPendingEvent> pendingEvents_   ; 
Note: See TracChangeset for help on using the changeset viewer.