Changeset 1601 for XIOS/dev/dev_trunk_omp/src/filter
- Timestamp:
- 11/19/18 15:52:54 (6 years ago)
- Location:
- XIOS/dev/dev_trunk_omp/src/filter
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_trunk_omp/src/filter/spatial_transform_filter.cpp
r1542 r1601 1 #include "mpi.hpp" 1 2 #include "spatial_transform_filter.hpp" 2 3 #include "grid_transformation.hpp" … … 4 5 #include "context_client.hpp" 5 6 #include "timer.hpp" 7 using namespace ep_lib; 6 8 7 9 namespace xios … … 140 142 } 141 143 142 std::map<CGridTransformation*, std::shared_ptr<CSpatialTransformFilterEngine> > CSpatialTransformFilterEngine::engines;144 std::map<CGridTransformation*, std::shared_ptr<CSpatialTransformFilterEngine> > *CSpatialTransformFilterEngine::engines_ptr = 0; 143 145 144 146 CSpatialTransformFilterEngine* CSpatialTransformFilterEngine::get(CGridTransformation* gridTransformation) … … 147 149 ERROR("CSpatialTransformFilterEngine& CSpatialTransformFilterEngine::get(CGridTransformation* gridTransformation)", 148 150 "Impossible to get the requested engine, the grid transformation is invalid."); 149 150 std::map<CGridTransformation*, std::shared_ptr<CSpatialTransformFilterEngine> >::iterator it = engines.find(gridTransformation); 151 if (it == engines.end()) 151 152 if(engines_ptr == NULL) engines_ptr = new std::map<CGridTransformation*, std::shared_ptr<CSpatialTransformFilterEngine> >; 153 154 155 std::map<CGridTransformation*, std::shared_ptr<CSpatialTransformFilterEngine> >::iterator it = engines_ptr->find(gridTransformation); 156 if (it == engines_ptr->end()) 152 157 { 153 158 std::shared_ptr<CSpatialTransformFilterEngine> engine(new CSpatialTransformFilterEngine(gridTransformation)); 154 it = engines .insert(std::make_pair(gridTransformation, engine)).first;159 it = engines_ptr->insert(std::make_pair(gridTransformation, engine)).first; 155 160 } 156 161 … … 230 235 231 236 idxSendBuff = 0; 232 std::vector<MPI_Request> sendRecvRequest; 237 std::vector<MPI_Request> sendRecvRequest(localIndexToSend.size() + itListRecv->size()); 238 int position = 0; 233 239 for (itSend = itbSend; itSend != iteSend; ++itSend, ++idxSendBuff) 234 240 { … … 240 246 sendBuff[idxSendBuff][idx] = dataCurrentSrc(localIndex_p(idx)); 241 247 } 242 sendRecvRequest.push_back(MPI_Request()); 243 MPI_Isend(sendBuff[idxSendBuff], countSize, MPI_DOUBLE, destRank, 12, client->intraComm, &sendRecvRequest.back()); 248 MPI_Isend(sendBuff[idxSendBuff], countSize, MPI_DOUBLE, destRank, 12, client->intraComm, &sendRecvRequest[position++]); 244 249 } 245 250 … … 258 263 int srcRank = itRecv->first; 259 264 int countSize = itRecv->second.size(); 260 sendRecvRequest.push_back(MPI_Request()); 261 MPI_Irecv(recvBuff + currentBuff, countSize, MPI_DOUBLE, srcRank, 12, client->intraComm, &sendRecvRequest.back()); 265 MPI_Irecv(recvBuff + currentBuff, countSize, MPI_DOUBLE, srcRank, 12, client->intraComm, &sendRecvRequest[position++]); 262 266 currentBuff += countSize; 263 267 } -
XIOS/dev/dev_trunk_omp/src/filter/spatial_transform_filter.hpp
r1542 r1601 141 141 142 142 //! The allocated engines 143 static std::map<CGridTransformation*, std::shared_ptr<CSpatialTransformFilterEngine> > engines; 143 144 static std::map<CGridTransformation*, std::shared_ptr<CSpatialTransformFilterEngine> > *engines_ptr; 145 #pragma omp threadprivate(engines_ptr) 144 146 }; // class CSpatialTransformFilterEngine 145 147 } // namespace xios -
XIOS/dev/dev_trunk_omp/src/filter/temporal_filter.cpp
r1523 r1601 22 22 this->samplingOffset.second, this->samplingOffset.timestep) 23 23 , initDate(initDate) 24 // , nextSamplingDate(initDate + (this->samplingOffset + initDate.getRelCalendar().getTimeStep()))25 24 , nextSamplingDate(initDate + offsetMonth + ( offsetAllButMonth + initDate.getRelCalendar().getTimeStep())) 26 25 , nbOperationDates(1)
Note: See TracChangeset
for help on using the changeset viewer.