Changeset 1353 for XIOS


Ignore:
Timestamp:
12/04/17 15:53:53 (6 years ago)
Author:
ymipsl
Message:

Bug fix : Assigned context client to grid/axis/domain was not in same order for each process, causing synchronisation problems.

YM

Location:
XIOS/dev/XIOS_DEV_CMIP6/src/node
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/XIOS_DEV_CMIP6/src/node/axis.cpp

    r1351 r1353  
    842842                                        CServerDistributionDescription::ServerDistributionType distType) 
    843843  { 
    844     std::set<CContextClient*>::iterator it; 
     844    std::list<CContextClient*>::iterator it; 
    845845    for (it=clients.begin(); it!=clients.end(); ++it) 
    846846    { 
     
    960960  void CAxis::sendNonDistributedAttributes() 
    961961  { 
    962     std::set<CContextClient*>::iterator it; 
     962    std::list<CContextClient*>::iterator it; 
    963963    for (it=clients.begin(); it!=clients.end(); ++it) 
    964964        { 
     
    10841084  { 
    10851085    int ns, n, i, j, ind, nv, idx; 
    1086     std::set<CContextClient*>::iterator it; 
     1086    std::list<CContextClient*>::iterator it; 
    10871087 
    10881088    for (it=clients.begin(); it!=clients.end(); ++it) 
     
    14411441  void CAxis::setContextClient(CContextClient* contextClient) 
    14421442  { 
    1443     clients.insert(contextClient); 
    1444   } 
     1443    if (clientsSet.find(contextClient)==clientsSet.end()) 
     1444    { 
     1445      clients.push_back(contextClient) ; 
     1446      clientsSet.insert(contextClient); 
     1447    } 
     1448} 
    14451449 
    14461450  void CAxis::parse(xml::CXMLNode & node) 
  • XIOS/dev/XIOS_DEV_CMIP6/src/node/axis.hpp

    r1345 r1353  
    154154 
    155155/** Clients that have to send a domain. There can be multiple clients in case of secondary server, otherwise only one client. */ 
    156          std::set<CContextClient*> clients; 
     156         std::list<CContextClient*> clients; 
     157         std::set<CContextClient*> clientsSet; 
    157158 
    158159         bool isChecked; 
  • XIOS/dev/XIOS_DEV_CMIP6/src/node/domain.cpp

    r1346 r1353  
    20602060  { 
    20612061    int ns, n, i, j, ind, nv, idx; 
    2062     std::set<CContextClient*>::iterator it; 
     2062    std::list<CContextClient*>::iterator it; 
    20632063    for (it=clients.begin(); it!=clients.end(); ++it) 
    20642064    { 
     
    21082108  void CDomain::sendDistributionAttributes(void) 
    21092109  { 
    2110     std::set<CContextClient*>::iterator it; 
     2110    std::list<CContextClient*>::iterator it; 
    21112111    for (it=clients.begin(); it!=clients.end(); ++it) 
    21122112    { 
     
    21592159  { 
    21602160    int ns, n, i, j, ind, nv, idx; 
    2161     std::set<CContextClient*>::iterator it; 
     2161    std::list<CContextClient*>::iterator it; 
    21622162    for (it=clients.begin(); it!=clients.end(); ++it) 
    21632163    { 
     
    22052205 
    22062206    int ns, n, i, j, ind, nv, idx; 
    2207     std::set<CContextClient*>::iterator it; 
     2207    std::list<CContextClient*>::iterator it; 
    22082208 
    22092209    for (it=clients.begin(); it!=clients.end(); ++it) 
     
    22552255 
    22562256    int ns, n, i, j, ind, nv, idx; 
    2257     std::set<CContextClient*>::iterator it; 
     2257    std::list<CContextClient*>::iterator it; 
    22582258    for (it=clients.begin(); it!=clients.end(); ++it) 
    22592259    { 
     
    23492349  { 
    23502350    int ns, n, i, j, ind, nv, idx; 
    2351     std::set<CContextClient*>::iterator it; 
     2351    std::list<CContextClient*>::iterator it; 
    23522352    for (it=clients.begin(); it!=clients.end(); ++it) 
    23532353    { 
     
    31093109  void CDomain::setContextClient(CContextClient* contextClient) 
    31103110  { 
    3111     clients.insert(contextClient); 
     3111    if (clientsSet.find(contextClient)==clientsSet.end()) 
     3112    { 
     3113      clients.push_back(contextClient) ; 
     3114      clientsSet.insert(contextClient); 
     3115    } 
    31123116  } 
    31133117 
  • XIOS/dev/XIOS_DEV_CMIP6/src/node/domain.hpp

    r1345 r1353  
    203203 
    204204/** Clients that have to send a domain. There can be multiple clients in case of secondary server, otherwise only one client. */ 
    205          std::set<CContextClient*> clients; 
     205         std::list<CContextClient*> clients; 
     206         std::set<CContextClient*> clientsSet; 
    206207 
    207208         bool doZoomByIndex_; 
  • XIOS/dev/XIOS_DEV_CMIP6/src/node/grid.cpp

    r1345 r1353  
    13481348    CContext* context = CContext::getCurrent(); 
    13491349    storeIndex_toSrv.clear(); 
    1350     std::set<CContextClient*>::iterator it; 
     1350    std::list<CContextClient*>::iterator it; 
    13511351 
    13521352    for (it=clients.begin(); it!=clients.end(); ++it) 
     
    14131413    CContext* context = CContext::getCurrent(); 
    14141414    storeIndex_toSrv.clear(); 
    1415     std::set<CContextClient*>::iterator it; 
     1415    std::list<CContextClient*>::iterator it; 
    14161416 
    14171417    for (it=clients.begin(); it!=clients.end(); ++it) 
     
    25082508  void CGrid::setContextClient(CContextClient* contextClient) 
    25092509  { 
    2510     clients.insert(contextClient); 
     2510    if (clientsSet.find(contextClient)==clientsSet.end()) 
     2511    { 
     2512      clients.push_back(contextClient) ; 
     2513      clientsSet.insert(contextClient); 
     2514    } 
    25112515    for (int i=0; i<this->getDomains().size(); i++) 
    25122516        this->getDomains()[i]->setContextClient(contextClient); 
  • XIOS/dev/XIOS_DEV_CMIP6/src/node/grid.hpp

    r1343 r1353  
    304304 
    305305/** Clients that have to send a grid. There can be multiple clients in case of secondary server, otherwise only one client. */ 
    306         std::set<CContextClient*> clients; 
     306        std::list<CContextClient*> clients; 
     307        std::set<CContextClient*> clientsSet; 
    307308 
    308309        bool isChecked; 
Note: See TracChangeset for help on using the changeset viewer.