Changeset 1236 for XIOS/dev/XIOS_DEV_CMIP6/src/node/axis.cpp
- Timestamp:
- 08/04/17 16:03:34 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/XIOS_DEV_CMIP6/src/node/axis.cpp
r1235 r1236 137 137 * \return A map associating the server rank with its minimum buffer size. 138 138 */ 139 std::map<int, StdSize> CAxis::getAttributesBufferSize( )139 std::map<int, StdSize> CAxis::getAttributesBufferSize(CContextClient* client) 140 140 { 141 141 // For now the assumption is that secondary server pools consist of the same number of procs. 142 142 // CHANGE the line below if the assumption changes. 143 CContext* context = CContext::getCurrent();144 CContextClient* client = (0 != context->clientPrimServer.size()) ? context->clientPrimServer[0] : context->client;143 // CContext* context = CContext::getCurrent(); 144 // CContextClient* client = (0 != context->clientPrimServer.size()) ? context->clientPrimServer[0] : context->client; 145 145 146 146 std::map<int, StdSize> attributesSizes = getMinimumBufferSizeForAttributes(); 147 147 148 bool isNonDistributed = (n = = n_glo);148 bool isNonDistributed = (n = n_glo); 149 149 150 150 if (client->isServerLeader()) … … 168 168 { 169 169 // size estimation for sendDistributedValue 170 boost::unordered_map<int, vector<size_t> >::const_iterator it, ite = indSrv_ .end();171 for (it = indSrv_ .begin(); it != ite; ++it)170 boost::unordered_map<int, vector<size_t> >::const_iterator it, ite = indSrv_[client].end(); 171 for (it = indSrv_[client].begin(); it != ite; ++it) 172 172 { 173 173 size_t sizeIndexEvent = CArray<int,1>::size(it->second.size()); 174 if (isCompressible_)175 sizeIndexEvent += CArray<int,1>::size(indWrittenSrv_[it->first].size());174 // if (isCompressible_) 175 // sizeIndexEvent += CArray<int,1>::size(indWrittenSrv_[it->first].size()); 176 176 177 177 size_t sizeValEvent = CArray<double,1>::size(it->second.size()); … … 505 505 506 506 int nbSrvPools = (context->hasServer) ? (context->hasClient ? context->clientPrimServer.size() : 1) : 1; 507 508 connectedServerRank_.clear(); 509 nbSenders.clear(); 510 507 511 for (int p = 0; p < nbSrvPools; ++p) 508 512 { … … 589 593 590 594 591 indSrv_ .swap(globalIndexAxisOnServer);592 CClientServerMapping::GlobalIndexMap::const_iterator it = indSrv_ .begin(),593 ite = indSrv_ .end();594 connectedServerRank_.clear();595 for (it = indSrv_ .begin(); it != ite; ++it) {596 connectedServerRank_ .push_back(it->first);595 indSrv_[client].swap(globalIndexAxisOnServer); 596 CClientServerMapping::GlobalIndexMap::const_iterator it = indSrv_[client].begin(), 597 ite = indSrv_[client].end(); 598 599 for (it = indSrv_[client].begin(); it != ite; ++it) { 600 connectedServerRank_[client].push_back(it->first); 597 601 } 598 602 599 603 for (std::list<int>::const_iterator it = serverZeroIndexLeader.begin(); it != serverZeroIndexLeader.end(); ++it) 600 connectedServerRank_ .push_back(*it);604 connectedServerRank_[client].push_back(*it); 601 605 602 606 // Even if a client has no index, it must connect to at least one server and 603 607 // send an "empty" data to this server 604 if (connectedServerRank_ .empty())605 connectedServerRank_ .push_back(client->clientRank % client->serverSize);606 607 nb ConnectedClients_ = CClientServerMapping::computeConnectedClients(client->serverSize, client->clientSize, client->intraComm, connectedServerRank_);608 if (connectedServerRank_[client].empty()) 609 connectedServerRank_[client].push_back(client->clientRank % client->serverSize); 610 611 nbSenders[client] = CClientServerMapping::computeConnectedClients(client->serverSize, client->clientSize, client->intraComm, connectedServerRank_[client]); 608 612 609 613 delete clientServerMap; … … 1019 1023 1020 1024 boost::unordered_map<int, std::vector<size_t> >::const_iterator it, iteMap; 1021 iteMap = indSrv_ .end();1022 for (int k = 0; k < connectedServerRank_ .size(); ++k)1025 iteMap = indSrv_[client].end(); 1026 for (int k = 0; k < connectedServerRank_[client].size(); ++k) 1023 1027 { 1024 1028 int nbData = 0; 1025 int rank = connectedServerRank_[ k];1026 it = indSrv_ .find(rank);1029 int rank = connectedServerRank_[client][k]; 1030 it = indSrv_[client].find(rank); 1027 1031 if (iteMap != it) 1028 1032 nbData = it->second.size(); … … 1090 1094 listData.back() << list_label.back(); 1091 1095 1092 eventData.push(rank, nb ConnectedClients_[rank], listData.back());1096 eventData.push(rank, nbSenders[client][rank], listData.back()); 1093 1097 } 1094 1098
Note: See TracChangeset
for help on using the changeset viewer.