Changeset 1943 for XIOS/dev/dev_ym/XIOS_COUPLING/src/distribution
- Timestamp:
- 09/25/20 16:09:35 (4 years ago)
- Location:
- XIOS/dev/dev_ym/XIOS_COUPLING/src/distribution
- Files:
-
- 2 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_ym/XIOS_COUPLING/src/distribution/grid_gatherer_connector.hpp
r1918 r1943 41 41 } 42 42 43 template<typename T> 44 void transfer(const map<int, CArray<T,1>>& input, CArray<T,1>& output, T missingValue) 45 { 46 int n = elementsConnector_.size()-1 ; 47 CGathererConnector** connector = elementsConnector_.data() + n ; 48 output.resize(dstSize_) ; 49 output = missingValue ; 50 for(auto& rankDataIn : input) 51 { 52 elementsConnector_[n]->transfer(rankDataIn.first, connector, n, rankDataIn.second.dataFirst(), output.dataFirst()) ; 53 } 54 } 55 43 56 template<typename T> 44 57 void transfer(CEventServer& event, CArray<T,1>& dataOut) … … 52 65 transfer(dataIn, dataOut) ; 53 66 } 54 67 68 template<typename T> 69 void transfer(CEventServer& event, CArray<T,1>& dataOut, T missingValue) 70 { 71 map<int, CArray<T,1>> dataIn ; 72 for (auto& subEvent : event.subEvents) 73 { 74 auto& data = dataIn[subEvent.rank]; 75 (*subEvent.buffer) >> data ; 76 } 77 transfer(dataIn, dataOut, missingValue) ; 78 } 79 55 80 }; 56 81 } -
XIOS/dev/dev_ym/XIOS_COUPLING/src/distribution/scatterer_connector.cpp
r1918 r1943 51 51 52 52 // compute the number of senders for a remote destination view 53 int commSize ; 54 MPI_Comm_size(localComm_, &commSize) ; 55 vector<int> ranks(commSize,0) ; 53 vector<int> ranks(remoteCommSize_,0) ; 56 54 for(auto& rank : connector_) ranks[rank.first] = 1 ; 57 MPI_Allreduce(MPI_IN_PLACE,ranks.data(), commSize,MPI_INT,MPI_SUM,localComm_) ;55 MPI_Allreduce(MPI_IN_PLACE,ranks.data(),remoteCommSize_,MPI_INT,MPI_SUM,localComm_) ; 58 56 for(auto& rank : connector_) nbSenders_[rank.first] = ranks[rank.first] ; 59 57 -
XIOS/dev/dev_ym/XIOS_COUPLING/src/distribution/scatterer_connector.hpp
r1930 r1943 21 21 map<int, vector<bool>> mask_ ; // mask is on dst view 22 22 MPI_Comm localComm_ ; 23 int remoteCommSize_ ; 23 24 24 25 CLocalView* srcView_ ; … … 30 31 public: 31 32 32 CScattererConnector(CLocalView* srcView, CDistributedView* dstView, MPI_Comm localComm )33 : srcView_(srcView), dstView_(dstView), localComm_(localComm) {}33 CScattererConnector(CLocalView* srcView, CDistributedView* dstView, MPI_Comm localComm, int remoteCommSize) 34 : srcView_(srcView), dstView_(dstView), localComm_(localComm), remoteCommSize_(remoteCommSize) {} 34 35 void computeConnector(void) ; 35 36
Note: See TracChangeset
for help on using the changeset viewer.