Ignore:
Timestamp:
06/23/23 14:46:51 (12 months ago)
Author:
ymipsl
Message:

Adaptation to new hyper event scheduler.
YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS3/trunk/src/server.cpp

    r2458 r2523  
    202202            ressourcesManager->waitPoolRegistration(CXios::defaultPoolId) ; 
    203203            servicesManager->createServices(CXios::defaultPoolId, CXios::defaultWriterId, CServicesManager::WRITER,nbRessources,1) ; 
     204            servicesManager->waitServiceRegistration(CXios::defaultPoolId, CXios::defaultWriterId) ; 
    204205            servicesManager->createServicesOnto(CXios::defaultPoolId, CXios::defaultReaderId, CServicesManager::READER, CXios::defaultWriterId) ; 
     206            servicesManager->waitServiceRegistration(CXios::defaultPoolId, CXios::defaultReaderId) ; 
    205207          } 
    206208          else 
     
    214216            ressourcesManager->waitPoolRegistration(CXios::defaultPoolId) ; 
    215217            servicesManager->createServices(CXios::defaultPoolId,  CXios::defaultGathererId, CServicesManager::GATHERER, nprocsGatherer, 1) ; 
     218            servicesManager->waitServiceRegistration(CXios::defaultPoolId, CXios::defaultGathererId) ; 
    216219            servicesManager->createServicesOnto(CXios::defaultPoolId, CXios::defaultReaderId, CServicesManager::READER, CXios::defaultGathererId) ; 
     220            servicesManager->waitServiceRegistration(CXios::defaultPoolId, CXios::defaultReaderId) ; 
    217221            servicesManager->createServices(CXios::defaultPoolId,  CXios::defaultWriterId, CServicesManager::WRITER, nprocsServer, nbPoolsServer2) ; 
     222            servicesManager->waitServiceRegistration(CXios::defaultPoolId, CXios::defaultWriterId) ; 
    218223          } 
    219224        } 
    220225//        servicesManager->createServices(CXios::defaultPoolId,  CXios::defaultServicesId, CServicesManager::ALL_SERVICES, nbRessources, 1) ; 
    221226      } 
     227 
     228      MPI_Request req ; 
     229      MPI_Status status ; 
     230      MPI_Ibarrier(getServersRessource()->getCommunicator(),&req) ; // be sure that all services are created now, could be remove later if more asynchronisity 
     231      int ok=false ; 
     232      while (!ok) 
     233      { 
     234        daemonsManager->eventLoop() ; 
     235        MPI_Test(&req,&ok,&status) ; 
     236      } 
     237 
     238 
     239      testingEventScheduler() ; 
    222240/* 
    223241      MPI_Request req ; 
    224242      MPI_Status status ; 
    225       MPI_Ibarrier(xiosGlobalComm,&req) ; // be sure that all services are created now, could be remove later if more asynchronisity 
     243      MPI_Ibarrier(CXios::getXiosComm(),&req) ; // be sure that all services are created now, could be remove later if more asynchronisity 
    226244      int ok=false ; 
    227245      while (!ok) 
     
    252270 
    253271 
    254  
     272    void CServer::testingEventScheduler(void) 
     273    { 
     274      CXios::getPoolRessource()->getEventScheduler()->registerEvent(1,10) ; 
     275      CXios::getPoolRessource()->getEventScheduler()->registerEvent(2,10) ; 
     276      if (CXios::getPoolRessource()->hasService(CXios::defaultGathererId,0)) 
     277      { 
     278        CXios::getPoolRessource()->getService(CXios::defaultGathererId,0)-> getEventScheduler()->registerEvent(1,100) ; 
     279        CXios::getPoolRessource()->getService(CXios::defaultGathererId,0)-> getEventScheduler()->registerEvent(2,100) ; 
     280        CXios::getPoolRessource()->getService(CXios::defaultGathererId,0)-> getEventScheduler()->registerEvent(3,100) ; 
     281      } 
     282      if (CXios::getPoolRessource()->hasService(CXios::defaultWriterId,0)) 
     283      { 
     284        CXios::getPoolRessource()->getService(CXios::defaultWriterId,0)-> getEventScheduler()->registerEvent(1,1000) ; 
     285        CXios::getPoolRessource()->getService(CXios::defaultWriterId,0)-> getEventScheduler()->registerEvent(2,1000) ; 
     286      } 
     287      CXios::getPoolRessource()->getEventScheduler()->registerEvent(3,10) ; 
     288      CXios::getPoolRessource()->getEventScheduler()->registerEvent(4,10) ; 
     289       
     290      if (CXios::getPoolRessource()->hasService(CXios::defaultGathererId,0)) 
     291      { 
     292        CXios::getPoolRessource()->getService(CXios::defaultGathererId,0)-> getEventScheduler()->registerEvent(4,100) ; 
     293        CXios::getPoolRessource()->getService(CXios::defaultGathererId,0)-> getEventScheduler()->registerEvent(5,100) ; 
     294      } 
     295      if (CXios::getPoolRessource()->hasService(CXios::defaultWriterId,0)) 
     296      { 
     297        CXios::getPoolRessource()->getService(CXios::defaultWriterId,0)-> getEventScheduler()->registerEvent(3,1000) ; 
     298        CXios::getPoolRessource()->getService(CXios::defaultWriterId,0)-> getEventScheduler()->registerEvent(4,1000) ; 
     299        CXios::getPoolRessource()->getService(CXios::defaultWriterId,0)-> getEventScheduler()->registerEvent(5,1000) ; 
     300      } 
     301      CXios::getPoolRessource()->getEventScheduler()->registerEvent(5,10) ; 
     302      CXios::getPoolRessource()->getEventScheduler()->registerEvent(6,10) ; 
     303       
     304      int numEvents=0 ; 
     305      int poolEvent=1 ; 
     306      int gatherEvent=1 ; 
     307      int writerEvent=1 ; 
     308      do 
     309      { 
     310        if (CXios::getPoolRessource()->getEventScheduler()->queryEvent(poolEvent,10)) 
     311        { 
     312          CXios::getPoolRessource()->getEventScheduler()->popEvent() ; 
     313          MPI_Barrier(CXios::getPoolRessource()->getCommunicator()); 
     314          poolEvent++ ; 
     315          numEvents++; 
     316        } 
     317         
     318        if (CXios::getPoolRessource()->getEventScheduler()->queryEvent(gatherEvent,100)) 
     319        { 
     320          CXios::getPoolRessource()->getEventScheduler()->popEvent() ; 
     321          MPI_Barrier(CXios::getPoolRessource()->getService(CXios::defaultGathererId,0)->getCommunicator()); 
     322          gatherEvent++ ; 
     323          numEvents++; 
     324        } 
     325 
     326        if (CXios::getPoolRessource()->getEventScheduler()->queryEvent(writerEvent,1000)) 
     327        { 
     328          CXios::getPoolRessource()->getEventScheduler()->popEvent() ; 
     329          MPI_Barrier(CXios::getPoolRessource()->getService(CXios::defaultWriterId,0)->getCommunicator()); 
     330          writerEvent++ ; 
     331          numEvents++; 
     332        } 
     333 
     334         
     335      } while (numEvents!=11) ; 
     336 
     337    } 
    255338 
    256339 
     
    410493         boost::hash<string> hashString; 
    411494         size_t hashId = hashString("oasis_enddef"); 
    412          if (CXios::getPoolRessource()->getService(CXios::defaultServicesId,0)->getEventScheduler()->queryEvent(0,hashId)) 
     495 
     496         if (CXios::getPoolRessource()->getEventScheduler()->queryEvent(0,hashId)) 
    413497         { 
    414            CXios::getPoolRessource()->getService(CXios::defaultServicesId,0)->getEventScheduler()->popEvent() ; 
     498           CXios::getPoolRessource()->getEventScheduler()->popEvent() ; 
    415499           driver_->endSynchronizedDefinition() ; 
    416500           eventSent=false ; 
     
    426510           boost::hash<string> hashString; 
    427511           size_t hashId = hashString("oasis_enddef"); 
    428            CXios::getPoolRessource()->getService(CXios::defaultServicesId,0)->getEventScheduler()->registerEvent(0,hashId); 
     512           CXios::getPoolRessource()->getEventScheduler()->registerEvent(0,hashId); 
    429513           eventSent=true ; 
    430514       } 
Note: See TracChangeset for help on using the changeset viewer.