Ignore:
Timestamp:
08/31/22 17:23:56 (22 months ago)
Author:
ymipsl
Message:
  • Optimize remote connector computation in case of read (reverse way).
  • don't compute anymore clientFromServerConnector (and all intermediate computation) for non reading case.

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS3/trunk/src/distribution/grid_client_server_remote_connector.cpp

    r2304 r2397  
    3838    } 
    3939  } 
     40  
     41  void CGridClientServerRemoteConnector::computeConnectorOut() 
     42  { 
     43    set<int> workflowRankToRemove ; 
     44    vector<bool> workflowIsSrcViewDistributed ; 
     45    { 
     46      auto workflowRemoteConnector=make_shared<CGridRemoteConnector>(srcWorkflowView_,dstView_,localComm_,remoteSize_) ; 
     47      workflowRemoteConnector->computeViewDistribution() ; 
     48      workflowRemoteConnector->computeConnectorMethods(false) ; 
     49      workflowRemoteConnector->computeRedondantRanks(false) ; 
     50      workflowRankToRemove = workflowRemoteConnector->getRankToRemove() ; 
     51      workflowIsSrcViewDistributed = workflowRemoteConnector->getIsSrcViewDistributed() ; 
     52    } 
     53     
     54    computeViewDistribution() ; 
     55     
     56    for(int i=0;i<srcView_.size();i++) isSrcViewDistributed_[i] =  isSrcViewDistributed_[i] || workflowIsSrcViewDistributed[i]  ; 
     57    computeConnectorMethods(false) ; 
     58    computeRedondantRanks(false) ; 
    4059 
     60    for(auto& rank : rankToRemove_) 
     61      if (workflowRankToRemove.count(rank)!=0) 
     62        for(auto& element : elements_) element.erase(rank) ; 
     63  } 
     64 
     65  void CGridClientServerRemoteConnector::computeConnectorIn() 
     66  { 
     67    set<int> workflowRankToRemove ; 
     68    vector<bool> workflowIsSrcViewDistributed ; 
     69    { 
     70      auto workflowRemoteConnector=make_shared<CGridRemoteConnector>(srcWorkflowView_,dstView_,localComm_,remoteSize_) ; 
     71      workflowRemoteConnector->computeViewDistribution() ; 
     72      workflowRemoteConnector->computeConnectorMethods(true) ; 
     73      workflowRemoteConnector->computeRedondantRanks(true) ; 
     74      workflowRankToRemove = workflowRemoteConnector->getRankToRemove() ; 
     75      workflowIsSrcViewDistributed = workflowRemoteConnector->getIsSrcViewDistributed() ; 
     76    } 
     77 
     78    computeViewDistribution() ; 
     79     
     80    for(int i=0;i<srcView_.size();i++) isSrcViewDistributed_[i] =  isSrcViewDistributed_[i] || workflowIsSrcViewDistributed[i]  ; 
     81    computeConnectorMethods(true) ; 
     82    computeRedondantRanks(true) ; 
     83 
     84    for(auto& rank : rankToRemove_) 
     85      if (workflowRankToRemove.count(rank)!=0) 
     86        for(auto& element : elements_) element.erase(rank) ; 
     87  } 
    4188} 
Note: See TracChangeset for help on using the changeset viewer.