Changeset 1136 for XIOS/dev/dev_olga/src/node/grid.cpp
- Timestamp:
- 05/17/17 18:30:38 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_olga/src/node/grid.cpp
r1132 r1136 409 409 using namespace std; 410 410 std::vector<CDomain*> domainP = this->getDomains(); 411 std::vector<CAxis*> axisP = this->getAxis(); 411 std::vector<CAxis*> axisP = this->getAxis(); 412 412 int dim = domainP.size() * 2 + axisP.size(); 413 413 … … 442 442 { 443 443 std::vector<CDomain*> domainP = this->getDomains(); 444 std::vector<CAxis*> axisP = this->getAxis(); 444 std::vector<CAxis*> axisP = this->getAxis(); 445 445 int dim = domainP.size() * 2 + axisP.size(); 446 446 … … 591 591 { 592 592 CContextClient* client = (context->hasServer) ? (context->hasClient ? context->clientPrimServer[p] : context->client) : context->client; 593 // CContextClient* client = (context->hasServer) ? context->clientPrimServer[i] : context->client;594 // CContextServer* server = (context->hasServer) ? context->server : 0 ;595 // int rank = (server && !client) ? server->intraCommRank : client->clientRank;596 593 int rank = client->clientRank; 597 594 598 // First of all, compute distribution on client side599 // if (0 != serverDistribution_)600 // {601 // // clientDistribution_ = new CDistributionClient(rank, this, serverDistribution_->getGlobalLocalIndex());602 // clientDistribution_ = new CDistributionClient(rank, this);603 // storeIndex_client.resize(clientDistribution_->getLocalDataIndexOnClient().size());604 // // storeIndex_client.resize(serverDistribution_->getGridSize());605 // int nbStoreIndex = storeIndex_client.numElements();606 // for (int idx = 0; idx < nbStoreIndex; ++idx) storeIndex_client(idx) = idx;607 // }608 // else609 // {610 595 clientDistribution_ = new CDistributionClient(rank, this); 611 596 // Get local data index on client … … 665 650 } 666 651 652 /*! 653 Compute the connected clients and index to send to these clients. 654 Each client can connect to a pool of other clients, each of which can have a piece of information of a grid 655 656 */ 667 657 void CGrid::computeConnectedClients() 668 658 { 669 659 CContext* context = CContext::getCurrent(); 670 // int nbSrvPools = (context->hasServer) ? context->clientPrimServer.size() : 1;671 660 int nbSrvPools = (context->hasServer) ? (context->hasClient ? context->clientPrimServer.size() : 1) : 1; 672 661 connectedServerRank_.resize(nbSrvPools); … … 747 736 { 748 737 CContext* context = CContext::getCurrent(); 749 // CContextClient* client = context->client;750 // CContextClient* client = (context->hasServer) ? context->clientPrimServer : context->client;751 752 753 // // First of all, compute distribution on client side754 // if (0 != serverDistribution_)755 // clientDistribution_ = new CDistributionClient(client->clientRank, this, serverDistribution_->getGlobalLocalIndex());756 // else757 // clientDistribution_ = new CDistributionClient(client->clientRank, this);758 759 // // Get local data index on client760 // int tmp = clientDistribution_->getLocalDataIndexOnClient().size();761 // storeIndex_client.resize(clientDistribution_->getLocalDataIndexOnClient().size());762 // int nbStoreIndex = storeIndex_client.numElements();763 // for (int idx = 0; idx < nbStoreIndex; ++idx) storeIndex_client(idx) = (clientDistribution_->getLocalDataIndexOnClient())[idx];764 // isDataDistributed_= clientDistribution_->isDataDistributed();765 766 767 // int nbSrvPools = (context->hasServer) ? context->clientPrimServer.size() : 1;768 769 738 computeClientIndex(); 770 739 if (context->hasClient) … … 772 741 computeConnectedClients(); 773 742 } 774 775 // connectedServerRank_.clear();776 777 // if (!doGridHaveDataDistributed())778 // {779 // if (client->isServerLeader())780 // {781 // size_t ssize = clientDistribution_->getLocalDataIndexOnClient().size();782 // const std::list<int>& ranks = client->getRanksServerLeader();783 // for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank)784 // {785 // connectedServerRank_.push_back(*itRank);786 // connectedDataSize_[*itRank] = ssize;787 // }788 // }789 // return;790 // }791 792 // // Compute mapping between client and server793 // std::vector<boost::unordered_map<size_t,std::vector<int> > > indexServerOnElement;794 // CServerDistributionDescription serverDistributionDescription(globalDim_, client->serverSize);795 // serverDistributionDescription.computeServerGlobalByElement(indexServerOnElement,796 // client->clientRank,797 // client->clientSize,798 // axis_domain_order,799 // positionDimensionDistributed_);800 // computeIndexByElement(indexServerOnElement, globalIndexOnServer_);801 802 // const CDistributionClient::GlobalLocalDataMap& globalLocalIndexSendToServer = clientDistribution_->getGlobalLocalDataSendToServer();803 // CDistributionClient::GlobalLocalDataMap::const_iterator iteGlobalLocalIndexMap = globalLocalIndexSendToServer.end(), itGlobalLocalIndexMap;804 // CClientServerMapping::GlobalIndexMap::const_iterator iteGlobalMap, itbGlobalMap, itGlobalMap;805 // itGlobalMap = itbGlobalMap = globalIndexOnServer_.begin();806 // iteGlobalMap = globalIndexOnServer_.end();807 808 // for (; itGlobalMap != iteGlobalMap; ++itGlobalMap)809 // {810 // int serverRank = itGlobalMap->first;811 // int indexSize = itGlobalMap->second.size();812 // const std::vector<size_t>& indexVec = itGlobalMap->second;813 // for (int idx = 0; idx < indexSize; ++idx)814 // {815 // itGlobalLocalIndexMap = globalLocalIndexSendToServer.find(indexVec[idx]);816 // if (iteGlobalLocalIndexMap != itGlobalLocalIndexMap)817 // {818 // if (connectedDataSize_.end() == connectedDataSize_.find(serverRank))819 // connectedDataSize_[serverRank] = 1;820 // else821 // ++connectedDataSize_[serverRank];822 // }823 // }824 // }825 826 // for (itGlobalMap = itbGlobalMap; itGlobalMap != iteGlobalMap; ++itGlobalMap) {827 // connectedServerRank_.push_back(itGlobalMap->first);828 // }829 830 // nbSenders = clientServerMap_->computeConnectedClients(client->serverSize, client->clientSize, client->intraComm, connectedServerRank_);831 743 } 832 744 … … 950 862 951 863 nbIndexOnServer = 0; 952 // for (it = itb; it != ite; ++it)953 864 for (size_t j = 0; j < globalIndexElementOnServerMap.size(); ++j) 954 865 { … … 1585 1496 nbSrvPools = 1; 1586 1497 // connectedServerRank_.resize(nbSrvPools); 1587 // nbSenders.resize(nbSrvPools);1498 nbReadSenders.resize(nbSrvPools); 1588 1499 for (int p = 0; p < nbSrvPools; ++p) 1589 1500 { 1590 1501 CContextServer* server = (!context->hasClient) ? context->server : context->serverPrimServer[p]; 1591 1502 CContextClient* client = (!context->hasClient) ? context->client : context->clientPrimServer[p]; 1503 1592 1504 // CContextServer* server = (context->hasServer) ? context->server : context->serverPrimServer[p]; 1593 1505 // CContextClient* client = (context->hasServer) ? context->client : context->clientPrimServer[p]; … … 1699 1611 std::vector<CDomain*> domainList = getDomains(); 1700 1612 std::vector<CAxis*> axisList = getAxis(); 1701 std::vector<int> nBegin(ssize), nSize(ssize), nGlob(ssize), nBeginGlobal(ssize); 1613 int dimSize = 2 * domainList.size() + axisList.size(); 1614 std::vector<int> nBegin(dimSize), nSize(dimSize), nGlob(dimSize), nBeginGlobal(dimSize); 1702 1615 for (int i = 0; i < numElement; ++i) 1703 1616 { … … 1726 1639 else // scalar 1727 1640 { 1728 nBegin[indexMap[i]] = 0;1729 nSize[indexMap[i]] = 1;1730 nBeginGlobal[indexMap[i]] = 0;1731 nGlob[indexMap[i]] = 1;1732 1733 ++scalarId;1734 1641 } 1735 1642 } … … 1782 1689 totalNumberWrittenIndexes_ = numberWrittenIndexes_; 1783 1690 1784 // nbSenders[p] = CClientServerMappingDistributed::computeConnectedClients(client->serverSize, client->clientSize,client->intraComm, ranks);1691 nbReadSenders[p] = CClientServerMappingDistributed::computeConnectedClients(context->client->serverSize, context->client->clientSize, context->client->intraComm, ranks); 1785 1692 } 1786 1693 }
Note: See TracChangeset
for help on using the changeset viewer.