Ignore:
Timestamp:
11/21/17 10:05:04 (6 years ago)
Author:
oabramkina
Message:

Avoiding recalculation of domain/axis distributions for server-pools of the same size. This commit is complimentary to r1263.

File:
1 edited

Legend:

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

    r1336 r1337  
    180180     { 
    181181       // size estimation for sendDistributedValue 
    182        boost::unordered_map<int, vector<size_t> >::const_iterator it, ite = indSrv_[client].end(); 
    183        for (it = indSrv_[client].begin(); it != ite; ++it) 
     182       boost::unordered_map<int, vector<size_t> >::const_iterator it, ite = indSrv_[client->serverSize].end(); 
     183       for (it = indSrv_[client->serverSize].begin(); it != ite; ++it) 
    184184       { 
    185185         size_t sizeIndexEvent = CArray<int,1>::size(it->second.size()); 
     
    607607 
    608608 
    609       indSrv_[client].swap(globalIndexAxisOnServer); 
     609      indSrv_[nbServer].swap(globalIndexAxisOnServer); 
    610610 
    611611      if (distType==CServerDistributionDescription::ROOT_DISTRIBUTION) 
    612612      { 
    613         for(int i=1; i<nbServer; ++i) indSrv_[client].insert(pair<int, vector<size_t> >(i,indSrv_[client][0]) ) ; 
     613        for(int i=1; i<nbServer; ++i) indSrv_[nbServer].insert(pair<int, vector<size_t> >(i,indSrv_[nbServer][0]) ) ; 
    614614        serverZeroIndexLeader.clear() ; 
    615615      } 
    616616          
    617       CClientServerMapping::GlobalIndexMap::const_iterator it  = indSrv_[client].begin(), 
    618                                                            ite = indSrv_[client].end(); 
    619  
    620       for (it = indSrv_[client].begin(); it != ite; ++it) connectedServerRank_[client].push_back(it->first); 
     617      CClientServerMapping::GlobalIndexMap::const_iterator it  = indSrv_[nbServer].begin(), 
     618                                                           ite = indSrv_[nbServer].end(); 
     619 
     620      for (it = indSrv_[nbServer].begin(); it != ite; ++it) connectedServerRank_[nbServer].push_back(it->first); 
    621621 
    622622      for (std::list<int>::const_iterator it = serverZeroIndexLeader.begin(); it != serverZeroIndexLeader.end(); ++it) 
    623         connectedServerRank_[client].push_back(*it); 
     623        connectedServerRank_[nbServer].push_back(*it); 
    624624 
    625625       // Even if a client has no index, it must connect to at least one server and  
    626626       // send an "empty" data to this server 
    627        if (connectedServerRank_[client].empty()) 
    628         connectedServerRank_[client].push_back(client->clientRank % client->serverSize); 
    629  
    630       nbSenders[client] = CClientServerMapping::computeConnectedClients(client->serverSize, client->clientSize, client->intraComm, connectedServerRank_[client]); 
     627       if (connectedServerRank_[nbServer].empty()) 
     628        connectedServerRank_[nbServer].push_back(client->clientRank % client->serverSize); 
     629 
     630//       nbSenders[client] = CClientServerMapping::computeConnectedClients(client->serverSize, client->clientSize, client->intraComm, connectedServerRank_[client]); 
     631       nbSenders[nbServer] = CClientServerMapping::computeConnectedClients(client->serverSize, client->clientSize, client->intraComm, connectedServerRank_[nbServer]); 
    631632 
    632633      delete clientServerMap; 
     
    10911092    { 
    10921093      CContextClient* client = (0 != context->clientPrimServer.size()) ? context->clientPrimServer[p] : context->client; 
     1094      int nbServer = client->serverSize; 
    10931095 
    10941096      CEventClient eventData(getType(), EVENT_ID_DISTRIBUTED_ATTRIBUTES); 
     
    11111113 
    11121114      boost::unordered_map<int, std::vector<size_t> >::const_iterator it, iteMap; 
    1113       iteMap = indSrv_[client].end(); 
    1114       for (int k = 0; k < connectedServerRank_[client].size(); ++k) 
     1115      iteMap = indSrv_[nbServer].end(); 
     1116      for (int k = 0; k < connectedServerRank_[nbServer].size(); ++k) 
    11151117      { 
    11161118        int nbData = 0; 
    1117         int rank = connectedServerRank_[client][k];         
    1118         it = indSrv_[client].find(rank); 
     1119        int rank = connectedServerRank_[nbServer][k]; 
     1120        it = indSrv_[nbServer].find(rank); 
    11191121        if (iteMap != it) 
    11201122          nbData = it->second.size(); 
     
    11821184          listData.back() << list_label.back(); 
    11831185 
    1184         eventData.push(rank, nbSenders[client][rank], listData.back()); 
     1186        eventData.push(rank, nbSenders[nbServer][rank], listData.back()); 
    11851187      } 
    11861188 
Note: See TracChangeset for help on using the changeset viewer.