Changeset 553 for XIOS/trunk/src/node/grid.cpp
- Timestamp:
- 02/11/15 16:23:12 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/node/grid.cpp
r552 r553 23 23 , storeIndex(1), out_i_index(1), out_j_index(1), out_l_index(1), isDomConServerComputed_(false) 24 24 , vDomainGroup_(), vAxisGroup_(), axisList_(), isAxisListSet(false), isDomListSet(false), clientDistribution_(0), isIndexSent(false) 25 , serverDistribution_(0) 25 , serverDistribution_(0), serverDistributionDescription_(0), clientServerMap_() 26 26 { 27 27 setVirtualDomainGroup(); … … 34 34 , storeIndex(1), out_i_index(1), out_j_index(1), out_l_index(1), isDomConServerComputed_(false) 35 35 , vDomainGroup_(), vAxisGroup_(), axisList_(), isAxisListSet(false), isDomListSet(false), clientDistribution_(0), isIndexSent(false) 36 , serverDistribution_(0) 36 , serverDistribution_(0), serverDistributionDescription_(0), clientServerMap_() 37 37 { 38 38 setVirtualDomainGroup(); … … 59 59 if (0 != clientDistribution_) delete clientDistribution_; 60 60 if (0 != serverDistribution_) delete serverDistribution_; 61 if (0 != serverDistributionDescription_) delete serverDistributionDescription_; 61 62 62 63 } … … 187 188 StdSize retVal; 188 189 std::map<int, StdSize> ret; 189 const std::map<int, std::vector<int> >& distribution = client Distribution_->getLocalIndexSendToServer();190 const std::map<int, std::vector<int> >& distribution = clientServerMap_.getLocalIndexSendToServer(); 190 191 std::map<int, std::vector<int> >::const_iterator it = distribution.begin(), itE = distribution.end(); 191 192 for (; it != itE; ++it) … … 405 406 CContext* context = CContext::getCurrent() ; 406 407 CContextClient* client=context->client ; 408 409 // First of all, compute distribution on client side 407 410 clientDistribution_ = new CDistributionClient(client->clientRank, this); 408 clientDistribution_->computeServerIndexMapping(client->serverSize); 409 nbSenders = clientDistribution_->computeConnectedClients(client->serverSize, client->clientSize, client->intraComm); 410 411 412 // Then compute distribution on server side 413 serverDistributionDescription_ = new CServerDistributionDescription(clientDistribution_->getNGlob()); 414 serverDistributionDescription_->computeServerDistribution(client->serverSize, true); 415 416 // Finally, compute index mapping between client(s) and server(s) 417 clientServerMap_.computeServerIndexMapping(clientDistribution_->getGlobalIndex(),serverDistributionDescription_->getGlobalIndex()); 418 const std::map<int, std::vector<size_t> >& globalIndexOnServer = clientServerMap_.getGlobalIndexOnServer(); 419 std::vector<int> connectedServerRank; 420 for (std::map<int, std::vector<size_t> >::const_iterator it = globalIndexOnServer.begin(); it != globalIndexOnServer.end(); ++it) { 421 connectedServerRank.push_back(it->first); 422 } 423 nbSenders = clientServerMap_.computeConnectedClients(client->serverSize, client->clientSize, client->intraComm, connectedServerRank); 424 425 // Get local data index on client 411 426 storeIndex_client.resize(clientDistribution_->getLocalDataIndexOnClient().numElements()); 412 427 storeIndex_client = (clientDistribution_->getLocalDataIndexOnClient()); … … 715 730 list<shared_ptr<CMessage> > list_msg ; 716 731 list< CArray<size_t,1>* > listOutIndex; 717 718 const std::map<int, std::vector<size_t> >& globalIndexOnServer = clientDistribution_->getGlobalIndexOnServer(); 719 const std::map<int, std::vector<int> >& localIndexSendToServer = clientDistribution_->getLocalIndexSendToServer(); 732 const std::map<int, std::vector<size_t> >& globalIndexOnServer = clientServerMap_.getGlobalIndexOnServer(); 733 const std::map<int, std::vector<int> >& localIndexSendToServer = clientServerMap_.getLocalIndexSendToServer(); 720 734 721 735 std::map<int, std::vector<size_t> >::const_iterator iteMap, itbMap, itGlobal; … … 724 738 iteMap = globalIndexOnServer.end(); 725 739 itLocal = localIndexSendToServer.begin(); 726 727 740 728 741 for (int ns = 0; itGlobal != iteMap; ++itGlobal, ++itLocal, ++ns)
Note: See TracChangeset
for help on using the changeset viewer.