Changeset 2343
- Timestamp:
- 06/29/22 18:19:45 (11 months ago)
- Location:
- XIOS/dev/dev_ym/XIOS_COUPLING/src
- Files:
-
- 19 added
- 4 deleted
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_ym/XIOS_COUPLING/src/event_client.cpp
r1377 r2343 56 56 } 57 57 } 58 59 void CEventClient::send(size_t timeLine, int size, CBufferOut* buffer) { *buffer << size << timeLine << *itNbSenders << classId << typeId << **itMessages;} 60 58 61 } -
XIOS/dev/dev_ym/XIOS_COUPLING/src/event_client.hpp
r1377 r2343 17 17 void push(int rank, int nbSender, CMessage& msg); 18 18 void send(size_t timeLine, const std::list<int>& sizes, std::list<CBufferOut*>&); 19 20 19 bool isEmpty(void); 21 20 std::list<int> getRanks(void); … … 24 23 int getTypeId(void) { return typeId; } 25 24 25 void setFirst(void) 26 { 27 itRanks=ranks.begin() ; 28 itNbSenders=nbSenders.begin() ; 29 itMessages=messages.begin() ; 30 } 31 32 bool isFirst(void) 33 { 34 return itRanks==ranks.begin() ; 35 } 36 37 void next(void) 38 { 39 itRanks++ ; 40 if (itRanks==ranks.end()) itRanks=ranks.begin() ; 41 itNbSenders++ ; 42 if (itNbSenders==nbSenders.end()) itNbSenders=nbSenders.begin() ; 43 itMessages++ ; 44 if (itMessages==messages.end()) itMessages=messages.begin() ; 45 } 46 47 void remove(void) 48 { 49 auto removedRank = itRanks; 50 itRanks++ ; 51 ranks.erase(removedRank) ; 52 if (itRanks==ranks.end()) itRanks=ranks.begin() ; 53 54 auto removedNbSender = itNbSenders ; 55 itNbSenders++ ; 56 nbSenders.erase(removedNbSender) ; 57 if (itNbSenders==nbSenders.end()) itNbSenders=nbSenders.begin() ; 58 59 auto removedMessage = itMessages ; 60 itMessages++ ; 61 messages.erase(removedMessage) ; 62 if (itMessages==messages.end()) itMessages=messages.begin() ; 63 } 64 65 int getRank(void) { return *itRanks ;} 66 int getNbSender(void) { return *itNbSenders ;} 67 int getSize(void) { return (*itMessages)->size() + headerSize;} 68 void send(size_t timeLine, int size, CBufferOut* buffer) ; 26 69 private: 27 70 int classId; … … 30 73 std::list<int> nbSenders; 31 74 std::list<CMessage*> messages; 75 76 std::list<int>::iterator itRanks; 77 std::list<int>::iterator itNbSenders; 78 std::list<CMessage*>::iterator itMessages; 32 79 }; 33 80 } -
XIOS/dev/dev_ym/XIOS_COUPLING/src/event_server.cpp
r716 r2343 35 35 ev.buffer = new CBufferIn(buffer.ptr(), buffer.remain()); 36 36 ev.size = size; 37 ev.startBuffer = startBuffer ; // for one sided, take ownership of buffer for now 37 38 subEvents.push_back(ev); 38 39 … … 44 45 } 45 46 } 47 46 48 47 49 bool CEventServer::isFull(void) … … 55 57 for (it = subEvents.begin(); it != subEvents.end(); it++) 56 58 { 57 it->serverBuffer->freeBuffer(it->size); 58 delete it->buffer; 59 if (it->serverBuffer==nullptr) // one_sided case 60 { 61 delete [] it->startBuffer ; 62 delete it->buffer; 63 } 64 else // legacy case 65 { 66 it->serverBuffer->freeBuffer(it->size); 67 delete it->buffer; 68 } 59 69 } 60 70 } -
XIOS/dev/dev_ym/XIOS_COUPLING/src/event_server.hpp
r1853 r2343 21 21 22 22 void push(int rank,CServerBuffer* serverBuffer ,char* startBuffer,int size) ; 23 int getNbSender(void) {return nbSender ;} 24 23 25 CContextServer* getContextServer(void) { return contextServer_ ;} 24 26 … … 26 28 { 27 29 int rank ; 30 char* startBuffer ; 28 31 CServerBuffer* serverBuffer ; 29 32 CBufferIn* buffer ; -
XIOS/dev/dev_ym/XIOS_COUPLING/src/node/axis.cpp
r2339 r2343 190 190 { 191 191 // size estimation for sendDistributedValue 192 std::unordered_map<int, vector<size_t> >::const_iterator it, ite = indSrv_[client-> serverSize].end();193 for (it = indSrv_[client-> serverSize].begin(); it != ite; ++it)192 std::unordered_map<int, vector<size_t> >::const_iterator it, ite = indSrv_[client->getRemoteSize()].end(); 193 for (it = indSrv_[client->getRemoteSize()].begin(); it != ite; ++it) 194 194 { 195 195 size_t size = 6 * sizeof(size_t); … … 890 890 if (type==EDistributionType::BANDS) // Bands distribution to send to file server 891 891 { 892 int nbServer = client-> serverSize;893 int nbClient = client-> clientSize;894 int rankClient = client-> clientRank;892 int nbServer = client->getRemoteSize(); 893 int nbClient = client->getIntraCommSize() ; 894 int rankClient = client->getIntraCommRank() ; 895 895 int size = nbServer / nbClient ; 896 896 int start ; … … 921 921 else if (type==EDistributionType::NONE) // domain is not distributed ie all servers get the same local domain 922 922 { 923 int nbServer = client-> serverSize;923 int nbServer = client->getRemoteSize(); 924 924 size_t nglo=n_glo ; 925 925 CArray<size_t,1> indGlo(nglo) ; -
XIOS/dev/dev_ym/XIOS_COUPLING/src/node/context.cpp
r2337 r2343 7 7 #include "duration.hpp" 8 8 9 #include "context_client.hpp" 10 #include "context_server.hpp" 9 #include "legacy_context_client.hpp" 10 #include "legacy_context_server.hpp" 11 #include "one_sided_context_client.hpp" 12 #include "one_sided_context_server.hpp" 11 13 #include "nc4_data_output.hpp" 12 14 #include "node_type.hpp" … … 532 534 comms.push_back(intraCommClient); 533 535 // attached_mode=parentServerContext_->isAttachedMode() ; //ym probably inherited from source context 534 server = new CContextServer(this,intraComm_, interCommServer); // check if we need to dupl. intraComm_ ?535 client = new CContextClient(this,intraCommClient,interCommClient);536 server = CContextServer::getNew(this,intraComm_, interCommServer); // check if we need to dupl. intraComm_ ? 537 client = CContextClient::getNew(this,intraCommClient,interCommClient); 536 538 client->setAssociatedServer(server) ; 537 539 server->setAssociatedClient(client) ; … … 594 596 intraCommClient=intraComm_ ; 595 597 MPI_Comm_dup(intraComm_, &intraCommServer) ; 596 client = new CContextClient(this, intraCommClient, interCommClient);597 server = new CContextServer(this, intraCommServer, interCommServer);598 client = CContextClient::getNew(this, intraCommClient, interCommClient); 599 server = CContextServer::getNew(this, intraCommServer, interCommServer); 598 600 client->setAssociatedServer(server) ; 599 601 server->setAssociatedClient(client) ; … … 631 633 MPI_Comm_dup(intraComm_, &intraCommServer) ; 632 634 633 CContextClient* client = new CContextClient(this, intraCommClient, interCommClient) ;634 CContextServer* server = new CContextServer(this, intraCommServer, interCommServer) ;635 CContextClient* client = CContextClient::getNew(this, intraCommClient, interCommClient) ; 636 CContextServer* server = CContextServer::getNew(this, intraCommServer, interCommServer) ; 635 637 client->setAssociatedServer(server) ; 636 638 server->setAssociatedClient(client) ; … … 728 730 MPI_Comm_dup(interComm, &interCommClient) ; 729 731 MPI_Comm_dup(interComm, &interCommServer) ; 730 CContextClient* client = new CContextClient(this, intraCommClient, interCommClient);731 CContextServer* server = new CContextServer(this, intraCommServer, interCommServer);732 CContextClient* client = CContextClient::getNew(this, intraCommClient, interCommClient); 733 CContextServer* server = CContextServer::getNew(this, intraCommServer, interCommServer); 732 734 client->setAssociatedServer(server) ; 733 735 server->setAssociatedClient(client) ; … … 750 752 MPI_Comm_dup(interComm, &interCommServer) ; 751 753 MPI_Comm_dup(interComm, &interCommClient) ; 752 CContextServer* server = new CContextServer(this, intraCommServer, interCommServer);753 CContextClient* client = new CContextClient(this, intraCommClient, interCommClient);754 CContextServer* server = CContextServer::getNew(this, intraCommServer, interCommServer); 755 CContextClient* client = CContextClient::getNew(this, intraCommClient, interCommClient); 754 756 client->setAssociatedServer(server) ; 755 757 server->setAssociatedClient(client) ; … … 765 767 { 766 768 registryOut->hierarchicalGatherRegistry() ; 767 if (server-> intraCommRank==0) CXios::getRegistryManager()->merge(*registryOut) ;769 if (server->getIntraCommRank()==0) CXios::getRegistryManager()->merge(*registryOut) ; 768 770 769 771 if (serviceType_==CServicesManager::CLIENT) -
XIOS/dev/dev_ym/XIOS_COUPLING/src/node/domain.cpp
r2339 r2343 162 162 } 163 163 164 std::unordered_map<int, vector<size_t> >::const_iterator itIndexEnd = indSrv_[client-> serverSize].end();164 std::unordered_map<int, vector<size_t> >::const_iterator itIndexEnd = indSrv_[client->getRemoteSize()].end(); 165 165 // std::map<int, std::vector<int> >::const_iterator itWrittenIndexEnd = indWrittenSrv_.end(); 166 for (size_t k = 0; k < connectedServerRank_[client-> serverSize].size(); ++k)167 { 168 int rank = connectedServerRank_[client-> serverSize][k];169 std::unordered_map<int, std::vector<size_t> >::const_iterator it = indSrv_[client-> serverSize].find(rank);166 for (size_t k = 0; k < connectedServerRank_[client->getRemoteSize()].size(); ++k) 167 { 168 int rank = connectedServerRank_[client->getRemoteSize()][k]; 169 std::unordered_map<int, std::vector<size_t> >::const_iterator it = indSrv_[client->getRemoteSize()].find(rank); 170 170 size_t idxCount = (it != itIndexEnd) ? it->second.size() : 0; 171 171 … … 1883 1883 if (type==EDistributionType::BANDS) // Bands distribution to send to file server 1884 1884 { 1885 int nbServer = client-> serverSize;1885 int nbServer = client->getRemoteSize(); 1886 1886 std::vector<int> nGlobDomain(2); 1887 1887 nGlobDomain[0] = this->ni_glo; … … 1919 1919 if (distType==EDistributionType::BANDS) // Bands distribution to send to file server 1920 1920 { 1921 int nbServer = client-> serverSize;1922 int nbClient = client-> clientSize;1923 int rankClient = client-> clientRank;1921 int nbServer = client->getRemoteSize(); 1922 int nbClient = client->getIntraCommSize() ; 1923 int rankClient = client->getIntraCommRank() ; 1924 1924 int size = nbServer / nbClient ; 1925 1925 int start ; … … 1952 1952 else if (distType==EDistributionType::COLUMNS) // Bands distribution to send to file server 1953 1953 { 1954 int nbServer = client-> serverSize;1955 int nbClient = client-> clientSize;1956 int rankClient = client-> clientRank;1954 int nbServer = client->getRemoteSize(); 1955 int nbClient = client->getIntraCommSize() ; 1956 int rankClient = client->getIntraCommRank() ; 1957 1957 int size = nbServer / nbClient ; 1958 1958 int start ; … … 1988 1988 else if (distType==EDistributionType::NONE) // domain is not distributed ie all servers get the same local domain 1989 1989 { 1990 int nbServer = client-> serverSize;1990 int nbServer = client->getRemoteSize(); 1991 1991 int nglo=ni_glo*nj_glo ; 1992 1992 CArray<size_t,1> indGlo ; -
XIOS/dev/dev_ym/XIOS_COUPLING/src/node/grid.cpp
r2316 r2343 944 944 945 945 std::map<int, StdSize> dataSizes; 946 int receiverSize = client-> serverSize;946 int receiverSize = client->getRemoteSize(); 947 947 std::map<int,size_t>& dataSizeMap = bufferForWriting ? connectedDataSize_[receiverSize]: connectedDataSizeRead_; 948 948 std::vector<int>& connectedServerRanks = bufferForWriting ? connectedServerRank_[receiverSize] : connectedServerRankRead_; … … 1395 1395 else if (0 != client) 1396 1396 { 1397 return (isDataDistributed() || (1 != client-> clientSize) || (1 != client->serverSize));1397 return (isDataDistributed() || (1 != client->getRemoteSize()) || (1 != client->getRemoteSize())); 1398 1398 } 1399 1399 else -
XIOS/dev/dev_ym/XIOS_COUPLING/src/node/scalar.cpp
r2304 r2343 411 411 else if (type==EDistributionType::NONE) // domain is not distributed ie all servers get the same local domain 412 412 { 413 int nbServer = client-> serverSize;413 int nbServer = client->getRemoteSize(); 414 414 CArray<size_t,1> indGlo(nglo) ; 415 415 for(size_t i=0;i<nglo;i++) indGlo(i) = i ;
Note: See TracChangeset
for help on using the changeset viewer.