Changeset 1023 for XIOS/dev/dev_olga/src
- Timestamp:
- 01/11/17 12:23:22 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_olga/src/node/grid.cpp
r1021 r1023 273 273 { 274 274 CContext* context = CContext::getCurrent(); 275 CContextClient* client ;275 CContextClient* client= context->hasServer ? context->clientPrimServer : context->client; 276 276 277 277 int nbSrvPools = (context->hasServer) ? context->clientPrimServer.size() : 1; 278 278 for (int i = 0; i < nbSrvPools; ++i) 279 279 { 280 if (context->hasClient) 281 { 282 if (context->hasServer) 283 client = context->clientPrimServer[i]; 284 else 285 client = context->client; 286 } 287 288 if (isScalarGrid()) 289 { 290 if (context->hasClient && !context->hasServer) 291 // if (context->hasClient) 292 if (this->isChecked && doSendingIndex && !isIndexSent) { sendIndexScalarGrid(); this->isIndexSent = true; } 293 294 if (this->isChecked) return; 295 if (context->hasClient && !context->hasServer) 296 // if (context->hasClient) 297 { 298 this->computeIndexScalarGrid(); 299 } 280 if (isScalarGrid()) 281 { 282 // if (context->hasClient && !context->hasServer) 283 if (context->hasClient) 284 if (this->isChecked && doSendingIndex && !isIndexSent) { sendIndexScalarGrid(); this->isIndexSent = true; } 285 286 if (this->isChecked) return; 287 // if (context->hasClient && !context->hasServer) 288 if (context->hasClient) 289 { 290 this->computeIndexScalarGrid(); 291 } 300 292 301 293 // this->isChecked = true; 302 294 if (!(this->hasTransform() && !this->isTransformed())) 303 295 this->isChecked = true; 304 return; 305 } 306 307 if (context->hasClient && !context->hasServer) 308 // if (context->hasClient) 309 if (this->isChecked && doSendingIndex && !isIndexSent) { sendIndex(); this->isIndexSent = true; } 310 311 if (this->isChecked) return; 312 313 if (context->hasClient && !context->hasServer) 314 // if (context->hasClient) 315 { 316 this->checkAttributesAfterTransformation(); 317 this->checkMask(); 318 this->computeIndex(); 319 } 320 // this->isChecked = true; 321 if (!(this->hasTransform() && !this->isTransformed())) 322 this->isChecked = true; 323 324 if (!(this->hasTransform() && (!this->isGenerated()))) 325 this->isChecked = true; 296 return; 297 } 298 299 // if (context->hasClient && !context->hasServer) 300 // if (context->hasClient) 301 // if (doSendingIndex && !isIndexSent) 302 { 303 if (context->hasClient) 304 { 305 if (this->isChecked && doSendingIndex && !isIndexSent) 306 {sendIndex(); this->isIndexSent = true;} 307 } 308 309 if (this->isChecked) return; 310 this->checkAttributesAfterTransformation(); 311 this->checkMask(); 312 this->computeIndex(); 313 // this->isChecked = true; 314 if (!(this->hasTransform() && !this->isTransformed())) 315 this->isChecked = true; 316 317 if (!(this->hasTransform() && (!this->isGenerated()))) 318 this->isChecked = true; 319 320 321 } 322 323 // if (this->isChecked) return; 324 325 // // if (context->hasClient && !context->hasServer) 326 // // if (context->hasClient) 327 // { 328 // this->checkAttributesAfterTransformation(); 329 // this->checkMask(); 330 // this->computeIndex(); 331 // } 332 // this->isChecked = true; 326 333 } 327 334 } … … 423 430 break; 424 431 case 4: 425 modifyGridMask(mask_ 1d, indexToModify);432 modifyGridMask(mask_4d, indexToModify); 426 433 break; 427 434 case 5: 428 modifyGridMask(mask_ 2d, indexToModify);435 modifyGridMask(mask_5d, indexToModify); 429 436 break; 430 437 case 6: 431 modifyGridMask(mask_ 3d, indexToModify);438 modifyGridMask(mask_6d, indexToModify); 432 439 break; 433 440 case 7: 434 modifyGridMask(mask_ 3d, indexToModify);441 modifyGridMask(mask_7d, indexToModify); 435 442 break; 436 443 default: … … 509 516 510 517 //--------------------------------------------------------------- 518 519 void CGrid::computeClientIndex() 520 { 521 CContext* context = CContext::getCurrent(); 522 523 CContextClient* client = (context->hasServer) ? context->clientPrimServer : context->client; 524 CContextServer* server = (context->hasServer) ? context->server : 0 ; 525 int rank = (server && !client) ? server->intraCommRank : client->clientRank; 526 527 // First of all, compute distribution on client side 528 if (0 != serverDistribution_) 529 clientDistribution_ = new CDistributionClient(rank, this, serverDistribution_->getGlobalLocalIndex()); 530 else 531 clientDistribution_ = new CDistributionClient(rank, this); 532 533 // Get local data index on client 534 storeIndex_client.resize(clientDistribution_->getLocalDataIndexOnClient().size()); 535 int nbStoreIndex = storeIndex_client.numElements(); 536 for (int idx = 0; idx < nbStoreIndex; ++idx) storeIndex_client(idx) = (clientDistribution_->getLocalDataIndexOnClient())[idx]; 537 isDataDistributed_= clientDistribution_->isDataDistributed(); 538 } 539 540 void CGrid::computeConnectedClients() 541 { 542 CContext* context = CContext::getCurrent(); 543 CContextClient* client = (context->hasServer) ? context->clientPrimServer : context->client; 544 545 connectedServerRank_.clear(); 546 547 if (!doGridHaveDataDistributed()) 548 { 549 if (client->isServerLeader()) 550 { 551 size_t ssize = clientDistribution_->getLocalDataIndexOnClient().size(); 552 const std::list<int>& ranks = client->getRanksServerLeader(); 553 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 554 { 555 connectedServerRank_.push_back(*itRank); 556 connectedDataSize_[*itRank] = ssize; 557 } 558 } 559 return; 560 } 561 562 // Compute mapping between client and server 563 std::vector<boost::unordered_map<size_t,std::vector<int> > > indexServerOnElement; 564 CServerDistributionDescription serverDistributionDescription(globalDim_, client->serverSize); 565 serverDistributionDescription.computeServerGlobalByElement(indexServerOnElement, 566 client->clientRank, 567 client->clientSize, 568 axis_domain_order, 569 positionDimensionDistributed_); 570 computeIndexByElement(indexServerOnElement, globalIndexOnServer_); 571 572 const CDistributionClient::GlobalLocalDataMap& globalLocalIndexSendToServer = clientDistribution_->getGlobalLocalDataSendToServer(); 573 CDistributionClient::GlobalLocalDataMap::const_iterator iteGlobalLocalIndexMap = globalLocalIndexSendToServer.end(), itGlobalLocalIndexMap; 574 CClientServerMapping::GlobalIndexMap::const_iterator iteGlobalMap, itbGlobalMap, itGlobalMap; 575 itGlobalMap = itbGlobalMap = globalIndexOnServer_.begin(); 576 iteGlobalMap = globalIndexOnServer_.end(); 577 578 for (; itGlobalMap != iteGlobalMap; ++itGlobalMap) 579 { 580 int serverRank = itGlobalMap->first; 581 int indexSize = itGlobalMap->second.size(); 582 const std::vector<size_t>& indexVec = itGlobalMap->second; 583 for (int idx = 0; idx < indexSize; ++idx) 584 { 585 itGlobalLocalIndexMap = globalLocalIndexSendToServer.find(indexVec[idx]); 586 if (iteGlobalLocalIndexMap != itGlobalLocalIndexMap) 587 { 588 if (connectedDataSize_.end() == connectedDataSize_.find(serverRank)) 589 connectedDataSize_[serverRank] = 1; 590 else 591 ++connectedDataSize_[serverRank]; 592 } 593 } 594 } 595 596 for (itGlobalMap = itbGlobalMap; itGlobalMap != iteGlobalMap; ++itGlobalMap) { 597 connectedServerRank_.push_back(itGlobalMap->first); 598 } 599 600 nbSenders = clientServerMap_->computeConnectedClients(client->serverSize, client->clientSize, client->intraComm, connectedServerRank_); 601 } 511 602 512 603 /*! … … 521 612 CContext* context = CContext::getCurrent(); 522 613 // CContextClient* client = context->client; 614 // CContextClient* client = (context->hasServer) ? context->clientPrimServer : context->client; 615 616 617 // // First of all, compute distribution on client side 618 // if (0 != serverDistribution_) 619 // clientDistribution_ = new CDistributionClient(client->clientRank, this, serverDistribution_->getGlobalLocalIndex()); 620 // else 621 // clientDistribution_ = new CDistributionClient(client->clientRank, this); 622 623 // // Get local data index on client 624 // int tmp = clientDistribution_->getLocalDataIndexOnClient().size(); 625 // storeIndex_client.resize(clientDistribution_->getLocalDataIndexOnClient().size()); 626 // int nbStoreIndex = storeIndex_client.numElements(); 627 // for (int idx = 0; idx < nbStoreIndex; ++idx) storeIndex_client(idx) = (clientDistribution_->getLocalDataIndexOnClient())[idx]; 628 // isDataDistributed_= clientDistribution_->isDataDistributed(); 629 523 630 int nbSrvPools = (context->hasServer) ? context->clientPrimServer.size() : 1; 524 631 for (int i = 0; i < nbSrvPools; ++i) 525 632 { 526 633 CContextClient* client = (context->hasServer) ? context->clientPrimServer[i] : context->client; 527 528 529 // First of all, compute distribution on client side 530 if (0 != serverDistribution_) 531 clientDistribution_ = new CDistributionClient(client->clientRank, serverDistribution_->getGlobalLocalIndex()); 532 else 533 clientDistribution_ = new CDistributionClient(client->clientRank, this); 534 535 // Get local data index on client 536 int tmp = clientDistribution_->getLocalDataIndexOnClient().size(); 537 storeIndex_client.resize(clientDistribution_->getLocalDataIndexOnClient().size()); 538 int nbStoreIndex = storeIndex_client.numElements(); 539 for (int idx = 0; idx < nbStoreIndex; ++idx) storeIndex_client(idx) = (clientDistribution_->getLocalDataIndexOnClient())[idx]; 540 isDataDistributed_= clientDistribution_->isDataDistributed(); 541 542 connectedServerRank_.clear(); 543 544 if (!doGridHaveDataDistributed()) 545 { 546 if (client->isServerLeader()) 547 { 548 size_t ssize = clientDistribution_->getLocalDataIndexOnClient().size(); 549 const std::list<int>& ranks = client->getRanksServerLeader(); 550 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 551 { 552 connectedServerRank_.push_back(*itRank); 553 connectedDataSize_[*itRank] = ssize; 554 } 555 } 556 return; 557 } 558 559 // Compute mapping between client and server 560 std::vector<boost::unordered_map<size_t,std::vector<int> > > indexServerOnElement; 561 CServerDistributionDescription serverDistributionDescription(globalDim_, client->serverSize); 562 serverDistributionDescription.computeServerGlobalByElement(indexServerOnElement, 563 client->clientRank, 564 client->clientSize, 565 axis_domain_order, 566 positionDimensionDistributed_); 567 computeIndexByElement(indexServerOnElement, globalIndexOnServer_); 568 569 const CDistributionClient::GlobalLocalDataMap& globalLocalIndexSendToServer = clientDistribution_->getGlobalLocalDataSendToServer(); 570 CDistributionClient::GlobalLocalDataMap::const_iterator iteGlobalLocalIndexMap = globalLocalIndexSendToServer.end(), itGlobalLocalIndexMap; 571 CClientServerMapping::GlobalIndexMap::const_iterator iteGlobalMap, itbGlobalMap, itGlobalMap; 572 itGlobalMap = itbGlobalMap = globalIndexOnServer_.begin(); 573 iteGlobalMap = globalIndexOnServer_.end(); 574 575 for (; itGlobalMap != iteGlobalMap; ++itGlobalMap) 576 { 577 int serverRank = itGlobalMap->first; 578 int indexSize = itGlobalMap->second.size(); 579 const std::vector<size_t>& indexVec = itGlobalMap->second; 580 for (int idx = 0; idx < indexSize; ++idx) 581 { 582 itGlobalLocalIndexMap = globalLocalIndexSendToServer.find(indexVec[idx]); 583 if (iteGlobalLocalIndexMap != itGlobalLocalIndexMap) 584 { 585 if (connectedDataSize_.end() == connectedDataSize_.find(serverRank)) 586 connectedDataSize_[serverRank] = 1; 587 else 588 ++connectedDataSize_[serverRank]; 589 } 590 } 591 } 592 593 for (itGlobalMap = itbGlobalMap; itGlobalMap != iteGlobalMap; ++itGlobalMap) { 594 connectedServerRank_.push_back(itGlobalMap->first); 595 } 596 597 nbSenders = clientServerMap_->computeConnectedClients(client->serverSize, client->clientSize, client->intraComm, connectedServerRank_); 598 } 634 computeClientIndex(); 635 if (context->hasClient) 636 computeConnectedClients(); 637 } 638 639 // connectedServerRank_.clear(); 640 641 // if (!doGridHaveDataDistributed()) 642 // { 643 // if (client->isServerLeader()) 644 // { 645 // size_t ssize = clientDistribution_->getLocalDataIndexOnClient().size(); 646 // const std::list<int>& ranks = client->getRanksServerLeader(); 647 // for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 648 // { 649 // connectedServerRank_.push_back(*itRank); 650 // connectedDataSize_[*itRank] = ssize; 651 // } 652 // } 653 // return; 654 // } 655 656 // // Compute mapping between client and server 657 // std::vector<boost::unordered_map<size_t,std::vector<int> > > indexServerOnElement; 658 // CServerDistributionDescription serverDistributionDescription(globalDim_, client->serverSize); 659 // serverDistributionDescription.computeServerGlobalByElement(indexServerOnElement, 660 // client->clientRank, 661 // client->clientSize, 662 // axis_domain_order, 663 // positionDimensionDistributed_); 664 // computeIndexByElement(indexServerOnElement, globalIndexOnServer_); 665 666 // const CDistributionClient::GlobalLocalDataMap& globalLocalIndexSendToServer = clientDistribution_->getGlobalLocalDataSendToServer(); 667 // CDistributionClient::GlobalLocalDataMap::const_iterator iteGlobalLocalIndexMap = globalLocalIndexSendToServer.end(), itGlobalLocalIndexMap; 668 // CClientServerMapping::GlobalIndexMap::const_iterator iteGlobalMap, itbGlobalMap, itGlobalMap; 669 // itGlobalMap = itbGlobalMap = globalIndexOnServer_.begin(); 670 // iteGlobalMap = globalIndexOnServer_.end(); 671 672 // for (; itGlobalMap != iteGlobalMap; ++itGlobalMap) 673 // { 674 // int serverRank = itGlobalMap->first; 675 // int indexSize = itGlobalMap->second.size(); 676 // const std::vector<size_t>& indexVec = itGlobalMap->second; 677 // for (int idx = 0; idx < indexSize; ++idx) 678 // { 679 // itGlobalLocalIndexMap = globalLocalIndexSendToServer.find(indexVec[idx]); 680 // if (iteGlobalLocalIndexMap != itGlobalLocalIndexMap) 681 // { 682 // if (connectedDataSize_.end() == connectedDataSize_.find(serverRank)) 683 // connectedDataSize_[serverRank] = 1; 684 // else 685 // ++connectedDataSize_[serverRank]; 686 // } 687 // } 688 // } 689 690 // for (itGlobalMap = itbGlobalMap; itGlobalMap != iteGlobalMap; ++itGlobalMap) { 691 // connectedServerRank_.push_back(itGlobalMap->first); 692 // } 693 694 // nbSenders = clientServerMap_->computeConnectedClients(client->serverSize, client->clientSize, client->intraComm, connectedServerRank_); 599 695 } 600 696 … … 1005 1101 void CGrid::restoreField_arr(const CArray<double, 1>& stored, double* const data) const 1006 1102 { 1007 const StdSize size = storeIndex_client.numElements(); 1008 1009 for(StdSize i = 0; i < size; i++) data[storeIndex_client(i)] = stored(i); 1103 // const StdSize size = storeIndex_client.numElements(); 1104 1105 // for(StdSize i = 0; i < size; i++) data[storeIndex_client(i)] = stored(i); 1106 1107 const StdSize size = indexFromClients.numElements(); 1108 1109 for(StdSize i = 0; i < size; i++) data[indexFromClients(i)] = stored(i); 1110 1010 1111 } 1011 1112 … … 1214 1315 1215 1316 for (int ns = 0; ns < connectedServerRank_.size(); ++ns) 1216 // for (int ns = 0; ns < client->serverSize; ++ns)1217 1317 { 1218 1318 rank = connectedServerRank_[ns]; … … 1260 1360 } 1261 1361 get(gridId)->recvIndex(ranks, buffers); 1262 1362 } 1363 1364 void CGrid::recvIndex(vector<int> ranks, vector<CBufferIn*> buffers) 1365 { 1263 1366 CContext* context = CContext::getCurrent(); 1264 if (context->hasClient && context->hasServer) 1265 { 1266 get(gridId)->computeIndex(); 1267 get(gridId)->sendIndex(); 1268 } 1269 } 1270 1271 void CGrid::recvIndex(vector<int> ranks, vector<CBufferIn*> buffers) 1272 { 1273 CContext* context = CContext::getCurrent(); 1274 // CContextServer* server = (context->hasServer) ? context->server : context->serverPrimServer; 1275 // CContextClient* client = (context->hasServer) ? context->client : context->clientPrimServer; 1276 CContextServer* server = context->server; 1277 CContextClient* client = context->client; 1367 CContextServer* server = (context->hasServer) ? context->server : context->serverPrimServer; 1368 CContextClient* client = (context->hasServer) ? context->client : context->clientPrimServer; 1278 1369 numberWrittenIndexes_ = totalNumberWrittenIndexes_ = offsetWrittenIndexes_ = 0; 1279 1370 connectedServerRank_ = ranks; … … 1304 1395 } 1305 1396 1306 int axisId = 0, domainId = 0, scalarId = 0 ;1397 int axisId = 0, domainId = 0, scalarId = 0, globalSize = 1; 1307 1398 std::vector<CDomain*> domainList = getDomains(); 1308 1399 std::vector<CAxis*> axisList = getAxis(); 1309 std::vector<int> nZoomBegin(ssize), nZoomSize(ssize), nGlob(ssize), nZoomBeginGlobal(ssize); 1400 std::vector<int> nZoomBegin(ssize), nZoomSize(ssize), nGlob(ssize), nZoomBeginGlobal(ssize), nGlobElement(numElement); 1401 std::vector<CArray<int,1> > zoomIndex; 1310 1402 for (int i = 0; i < numElement; ++i) 1311 1403 { 1404 nGlobElement[i] = globalSize; 1312 1405 if (2 == axis_domain_order(i)) //domain 1313 1406 { 1314 nZoomBegin[indexMap[i]] = domainList[domainId]->zoom_ibegin_srv; 1315 nZoomSize[indexMap[i]] = domainList[domainId]->zoom_ni_srv; 1316 nZoomBeginGlobal[indexMap[i]] = domainList[domainId]->global_zoom_ibegin; 1317 nGlob[indexMap[i]] = domainList[domainId]->ni_glo; 1318 1319 nZoomBegin[indexMap[i] + 1] = domainList[domainId]->zoom_jbegin_srv; 1320 nZoomSize[indexMap[i] + 1] = domainList[domainId]->zoom_nj_srv; 1321 nZoomBeginGlobal[indexMap[i] + 1] = domainList[domainId]->global_zoom_jbegin; 1322 nGlob[indexMap[i] + 1] = domainList[domainId]->nj_glo; 1407 // nZoomBegin[indexMap[i]] = domainList[domainId]->zoom_ibegin_srv; 1408 // nZoomSize[indexMap[i]] = domainList[domainId]->zoom_ni_srv; 1409 // nZoomBeginGlobal[indexMap[i]] = domainList[domainId]->global_zoom_ibegin; 1410 // zoomIndex.push_back(domainList[domainId]->zoom_i_index); 1411 // nGlob[indexMap[i]] = domainList[domainId]->ni_glo; 1412 1413 // nZoomBegin[indexMap[i] + 1] = domainList[domainId]->zoom_jbegin_srv; 1414 // nZoomSize[indexMap[i] + 1] = domainList[domainId]->zoom_nj_srv; 1415 // nZoomBeginGlobal[indexMap[i] + 1] = domainList[domainId]->global_zoom_jbegin; 1416 // zoomIndex.push_back(domainList[domainId]->zoom_j_index); 1417 // nGlob[indexMap[i] + 1] = domainList[domainId]->nj_glo; 1418 1419 int nbZoom = domainList[domainId]->zoom_i_index.numElements(); 1420 zoomIndex.push_back(CArray<int,1>(nbZoom)); 1421 CArray<int,1>& zoomDomain = zoomIndex.back(); 1422 for (int ind = 0; ind < nbZoom; ++ind) 1423 { 1424 zoomDomain(ind) = domainList[domainId]->zoom_i_index(ind) + domainList[domainId]->zoom_j_index(ind) * domainList[domainId]->ni_glo; 1425 } 1426 1427 globalSize *= domainList[domainId]->ni_glo * domainList[domainId]->nj_glo; 1323 1428 ++domainId; 1324 1429 } 1325 1430 else if (1 == axis_domain_order(i)) // axis 1326 1431 { 1327 nZoomBegin[indexMap[i]] = axisList[axisId]->zoom_begin_srv; 1328 nZoomSize[indexMap[i]] = axisList[axisId]->zoom_size_srv; 1329 nZoomBeginGlobal[indexMap[i]] = axisList[axisId]->global_zoom_begin; 1330 nGlob[indexMap[i]] = axisList[axisId]->n_glo; 1432 // nZoomBegin[indexMap[i]] = axisList[axisId]->zoom_begin_srv; 1433 // nZoomSize[indexMap[i]] = axisList[axisId]->zoom_size_srv; 1434 // nZoomBeginGlobal[indexMap[i]] = axisList[axisId]->global_zoom_begin; 1435 zoomIndex.push_back(axisList[axisId]->zoom_index); 1436 // nGlob[indexMap[i]] = axisList[axisId]->n_glo; 1437 globalSize *= axisList[axisId]->n_glo; 1331 1438 ++axisId; 1332 1439 } 1333 1440 else // scalar 1334 1441 { 1335 nZoomBegin[indexMap[i]] = 0; 1336 nZoomSize[indexMap[i]] = 1; 1337 nZoomBeginGlobal[indexMap[i]] = 0; 1338 nGlob[indexMap[i]] = 1; 1442 CArray<int,1> zoomScalar(1); 1443 zoomScalar(0) = 0; 1444 // nZoomBegin[indexMap[i]] = 0; 1445 // nZoomSize[indexMap[i]] = 1; 1446 // nZoomBeginGlobal[indexMap[i]] = 0; 1447 zoomIndex.push_back(zoomScalar); 1448 // nGlob[indexMap[i]] = 1; 1339 1449 ++scalarId; 1340 1450 } 1341 1451 } 1342 1452 dataSize = 1; 1343 for (int i = 0; i < nZoomSize.size(); ++i) 1344 dataSize *= nZoomSize[i]; 1345 1346 serverDistribution_ = new CDistributionServer(server->intraCommRank, nZoomBegin, nZoomSize, 1347 nZoomBeginGlobal, nGlob); 1453 1454 // for (int i = 0; i < nZoomSize.size(); ++i) 1455 // dataSize *= nZoomSize[i]; 1456 // serverDistribution_ = new CDistributionServer(server->intraCommRank, nZoomBegin, nZoomSize, 1457 // nZoomBeginGlobal, nGlob); 1458 for (int i = 0; i < zoomIndex.size(); ++i) 1459 { 1460 dataSize *= zoomIndex[i].numElements(); 1461 } 1462 serverDistribution_ = new CDistributionServer(server->intraCommRank, zoomIndex, nGlobElement); 1348 1463 } 1349 1464 … … 1362 1477 connectedDataSize_[rank] = outIndex.numElements(); 1363 1478 numberWrittenIndexes_ += outIndex.numElements(); 1479 } 1480 1481 int sizeData = 0; 1482 for (map<int, CArray<size_t, 1> >::iterator it = outIndexFromClient.begin(); it != outIndexFromClient.end(); ++it) 1483 { 1484 sizeData += it->second.numElements(); 1485 } 1486 indexFromClients.resize(sizeData); 1487 sizeData = 0; 1488 for (map<int, CArray<size_t, 1> >::iterator it = outIndexFromClient.begin(); it != outIndexFromClient.end(); ++it) 1489 { 1490 CArray<size_t, 1>& tmp0 = it->second; 1491 CArray<size_t, 1> tmp1 = indexFromClients(Range(sizeData, sizeData + tmp0.numElements() - 1)); 1492 tmp1 = tmp0; 1493 sizeData += tmp0.numElements(); 1364 1494 } 1365 1495 … … 1752 1882 { 1753 1883 CDomain* pDom = CDomain::get(*it); 1754 if (context->hasClient && !context->hasServer)1755 //if (context->hasClient)1884 // if (context->hasClient && !context->hasServer) 1885 if (context->hasClient) 1756 1886 { 1757 1887 pDom->solveRefInheritance(apply); … … 1765 1895 { 1766 1896 CAxis* pAxis = CAxis::get(*it); 1767 if (context->hasClient && !context->hasServer)1768 //if (context->hasClient)1897 // if (context->hasClient && !context->hasServer) 1898 if (context->hasClient) 1769 1899 { 1770 1900 pAxis->solveRefInheritance(apply); … … 1778 1908 { 1779 1909 CScalar* pScalar = CScalar::get(*it); 1780 if (context->hasClient && !context->hasServer)1781 //if (context->hasClient)1910 // if (context->hasClient && !context->hasServer) 1911 if (context->hasClient) 1782 1912 { 1783 1913 pScalar->solveRefInheritance(apply);
Note: See TracChangeset
for help on using the changeset viewer.