Ignore:
Timestamp:
06/29/22 18:19:45 (2 years ago)
Author:
ymipsl
Message:
  • Implement new infrastructure for transfert protocol.
  • new purelly one sided protocol is now available, the previous protocol (legacy, mix send/recv and one sided) is still available. Other specific protocol could be implemented more easilly in future.
  • switch can be operate with "transport_protocol" variable in XIOS context :

ex:
<variable id="transport_protocol" type="string">one_sided</variable>

Available protocols are : one_sided, legacy or default. The default protocol is "legacy".

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/node/domain.cpp

    r2339 r2343  
    162162     } 
    163163 
    164      std::unordered_map<int, vector<size_t> >::const_iterator itIndexEnd = indSrv_[client->serverSize].end(); 
     164     std::unordered_map<int, vector<size_t> >::const_iterator itIndexEnd = indSrv_[client->getRemoteSize()].end(); 
    165165     // std::map<int, std::vector<int> >::const_iterator itWrittenIndexEnd = indWrittenSrv_.end(); 
    166      for (size_t k = 0; k < connectedServerRank_[client->serverSize].size(); ++k) 
    167      { 
    168        int rank = connectedServerRank_[client->serverSize][k]; 
    169        std::unordered_map<int, std::vector<size_t> >::const_iterator it = indSrv_[client->serverSize].find(rank); 
     166     for (size_t k = 0; k < connectedServerRank_[client->getRemoteSize()].size(); ++k) 
     167     { 
     168       int rank = connectedServerRank_[client->getRemoteSize()][k]; 
     169       std::unordered_map<int, std::vector<size_t> >::const_iterator it = indSrv_[client->getRemoteSize()].find(rank); 
    170170       size_t idxCount = (it != itIndexEnd) ? it->second.size() : 0; 
    171171 
     
    18831883    if (type==EDistributionType::BANDS) // Bands distribution to send to file server 
    18841884    { 
    1885       int nbServer = client->serverSize; 
     1885      int nbServer = client->getRemoteSize(); 
    18861886      std::vector<int> nGlobDomain(2); 
    18871887      nGlobDomain[0] = this->ni_glo; 
     
    19191919    if (distType==EDistributionType::BANDS) // Bands distribution to send to file server 
    19201920    { 
    1921       int nbServer = client->serverSize; 
    1922       int nbClient = client->clientSize ; 
    1923       int rankClient = client->clientRank ; 
     1921      int nbServer = client->getRemoteSize(); 
     1922      int nbClient = client->getIntraCommSize() ; 
     1923      int rankClient = client->getIntraCommRank() ; 
    19241924      int size = nbServer / nbClient ; 
    19251925      int start ; 
     
    19521952    else if (distType==EDistributionType::COLUMNS) // Bands distribution to send to file server 
    19531953    { 
    1954       int nbServer = client->serverSize; 
    1955       int nbClient = client->clientSize ; 
    1956       int rankClient = client->clientRank ; 
     1954      int nbServer = client->getRemoteSize(); 
     1955      int nbClient = client->getIntraCommSize() ; 
     1956      int rankClient = client->getIntraCommRank() ; 
    19571957      int size = nbServer / nbClient ; 
    19581958      int start ; 
     
    19881988    else if (distType==EDistributionType::NONE) // domain is not distributed ie all servers get the same local domain 
    19891989    { 
    1990       int nbServer = client->serverSize; 
     1990      int nbServer = client->getRemoteSize(); 
    19911991      int nglo=ni_glo*nj_glo ; 
    19921992      CArray<size_t,1> indGlo ; 
Note: See TracChangeset for help on using the changeset viewer.