Ignore:
Timestamp:
01/25/23 16:59:46 (17 months ago)
Author:
ymipsl
Message:

Merge XIOS_FILE_SERVICE dev branch into trunk

YM

Location:
XIOS3/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • XIOS3/trunk

  • XIOS3/trunk/src/server.cpp

    r2437 r2458  
    2121#include "servers_ressource.hpp" 
    2222#include "services.hpp" 
     23#include "pool_node.hpp" 
    2324#include <cstdio> 
    2425#include "workflow_graph.hpp" 
     
    188189      if (serversRessource->isServerLeader()) 
    189190      { 
    190         int nbRessources = ressourcesManager->getRessourcesSize() ; 
    191         if (!CXios::usingServer2) 
     191        // creating pool 
     192        CPoolNodeGroup::get("xios","pool_definition")->solveDescInheritance(true) ; 
     193        vector<CPoolNode*> pools = CPoolNodeGroup::get("xios","pool_definition")->getAllChildren(); 
     194        for(auto& pool : pools) pool->allocateRessources() ; 
     195         
     196        int nbRessources = ressourcesManager->getFreeRessourcesSize() ; 
     197        if (nbRessources>0) 
    192198        { 
    193           ressourcesManager->createPool(CXios::defaultPoolId, nbRessources) ; 
    194           servicesManager->createServices(CXios::defaultPoolId, CXios::defaultWriterId, CServicesManager::WRITER,nbRessources,1) ; 
    195           servicesManager->createServicesOnto(CXios::defaultPoolId, CXios::defaultReaderId, CServicesManager::READER, CXios::defaultWriterId) ; 
    196         } 
    197         else 
    198         { 
    199           int nprocsServer = nbRessources*CXios::ratioServer2/100.; 
    200           int nprocsGatherer = nbRessources - nprocsServer ; 
     199          if (!CXios::usingServer2) 
     200          { 
     201            ressourcesManager->createPool(CXios::defaultPoolId, nbRessources) ; 
     202            ressourcesManager->waitPoolRegistration(CXios::defaultPoolId) ; 
     203            servicesManager->createServices(CXios::defaultPoolId, CXios::defaultWriterId, CServicesManager::WRITER,nbRessources,1) ; 
     204            servicesManager->createServicesOnto(CXios::defaultPoolId, CXios::defaultReaderId, CServicesManager::READER, CXios::defaultWriterId) ; 
     205          } 
     206          else 
     207          { 
     208            int nprocsServer = nbRessources*CXios::ratioServer2/100.; 
     209            int nprocsGatherer = nbRessources - nprocsServer ; 
    201210           
    202           int nbPoolsServer2 = CXios::nbPoolsServer2 ; 
    203           if (nbPoolsServer2 == 0) nbPoolsServer2 = nprocsServer; 
    204           ressourcesManager->createPool(CXios::defaultPoolId, nbRessources) ; 
    205           servicesManager->createServices(CXios::defaultPoolId,  CXios::defaultGathererId, CServicesManager::GATHERER, nprocsGatherer, 1) ; 
    206           servicesManager->createServicesOnto(CXios::defaultPoolId, CXios::defaultReaderId, CServicesManager::READER, CXios::defaultGathererId) ; 
    207           servicesManager->createServices(CXios::defaultPoolId,  CXios::defaultWriterId, CServicesManager::WRITER, nprocsServer, nbPoolsServer2) ; 
    208  
    209  
     211            int nbPoolsServer2 = CXios::nbPoolsServer2 ; 
     212            if (nbPoolsServer2 == 0) nbPoolsServer2 = nprocsServer; 
     213            ressourcesManager->createPool(CXios::defaultPoolId, nbRessources) ; 
     214            ressourcesManager->waitPoolRegistration(CXios::defaultPoolId) ; 
     215            servicesManager->createServices(CXios::defaultPoolId,  CXios::defaultGathererId, CServicesManager::GATHERER, nprocsGatherer, 1) ; 
     216            servicesManager->createServicesOnto(CXios::defaultPoolId, CXios::defaultReaderId, CServicesManager::READER, CXios::defaultGathererId) ; 
     217            servicesManager->createServices(CXios::defaultPoolId,  CXios::defaultWriterId, CServicesManager::WRITER, nprocsServer, nbPoolsServer2) ; 
     218          } 
    210219        } 
    211220//        servicesManager->createServices(CXios::defaultPoolId,  CXios::defaultServicesId, CServicesManager::ALL_SERVICES, nbRessources, 1) ; 
    212221      } 
     222/* 
     223      MPI_Request req ; 
     224      MPI_Status status ; 
     225      MPI_Ibarrier(xiosGlobalComm,&req) ; // be sure that all services are created now, could be remove later if more asynchronisity 
     226      int ok=false ; 
     227      while (!ok) 
     228      { 
     229        daemonsManager->eventLoop() ; 
     230        MPI_Test(&req,&ok,&status) ; 
     231      } 
     232*/ 
    213233      CTimer::get("XIOS initialize").suspend() ; 
    214234 
Note: See TracChangeset for help on using the changeset viewer.