Ignore:
Timestamp:
08/29/23 17:24:04 (10 months ago)
Author:
ymipsl
Message:

Major update :

  • New method to lock and unlock one-sided windows (window_dynamic) to avoid network overhead
  • Introducing multithreading on server sided to manage more efficiently dead-lock occuring (similar to co-routine which will be available and implemented in futur c++ standard), based on c++ threads
  • Suprression of old "attached mode" which is replaced by online writer and reder filters

YM

File:
1 edited

Legend:

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

    r2526 r2547  
    4242    finished=false; 
    4343 
    44     if (!isAttachedModeEnabled()) MPI_Intercomm_merge(interComm_,true,&interCommMerged_) ; 
     44    MPI_Intercomm_merge(interComm_,true,&interCommMerged_) ; 
    4545    MPI_Comm_split(intraComm_, intraCommRank, intraCommRank, &commSelf_) ; // for windows 
    4646     
     
    4848 
    4949    pureOneSided=CXios::getin<bool>("pure_one_sided",false); // pure one sided communication (for test) 
    50     if (isAttachedModeEnabled()) pureOneSided=false ; // no one sided in attach mode 
    5150       
    5251  } 
     
    165164   
    166165    if (isProcessingEvent_) return ; 
    167     if (isAttachedModeEnabled()) 
    168       if (!CXios::getDaemonsManager()->isScheduledContext(remoteHashId_)) return ; 
    169166 
    170167    auto it=completedEvents_.find(currentTimeLine); 
     
    174171      if (it->second.nbSenders == it->second.currentNbSenders) 
    175172      { 
    176         if (!scheduled && !isAttachedModeEnabled()) // Skip event scheduling for attached mode and reception on client side 
     173        if (!scheduled)  
    177174        { 
    178175          eventScheduler_->registerEvent(currentTimeLine,hashId); 
    179176          scheduled=true; 
    180177        } 
    181         else if (isAttachedModeEnabled() || eventScheduler_->queryEvent(currentTimeLine,hashId) ) 
     178        else if (eventScheduler_->queryEvent(currentTimeLine,hashId) ) 
    182179        { 
    183180          //if (!enableEventsProcessing && isCollectiveEvent(event)) return ; 
     
    198195          } 
    199196 
    200           if (!isAttachedModeEnabled()) eventScheduler_->popEvent() ; 
     197          eventScheduler_->popEvent() ; 
    201198 
    202199          isProcessingEvent_=true ; 
     
    214211          currentTimeLine++; 
    215212          scheduled = false; 
    216           if (isAttachedModeEnabled()) CXios::getDaemonsManager()->unscheduleContext() ; 
    217213        } 
    218214      } 
     
    235231  void COneSidedContextServer::freeWindows() 
    236232  { 
    237     //if (!isAttachedModeEnabled()) 
    238     //{ 
    239233    //  for(auto& it : winComm_) 
    240234    //  { 
     
    244238    //    MPI_Comm_free(&winComm_[rank]) ; 
    245239    //  } 
    246     //} 
    247240  } 
    248241 
Note: See TracChangeset for help on using the changeset viewer.