- Timestamp:
- 07/10/17 15:18:16 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/branch_yushan_merged/src/filter/spatial_transform_filter.cpp
r1134 r1203 153 153 sendBuff[idxSendBuff] = new double[itSend->second.numElements()]; 154 154 } 155 156 const CGridTransformation::RecvIndexGridDestinationMap& localIndexToReceive = *itListRecv; 157 CGridTransformation::RecvIndexGridDestinationMap::const_iterator itbRecv = localIndexToReceive.begin(), itRecv, 158 iteRecv = localIndexToReceive.end(); 155 159 156 160 idxSendBuff = 0; 157 std::vector<ep_lib::MPI_Request> sendRecvRequest; 161 std::vector<ep_lib::MPI_Request> sendRecvRequest(localIndexToSend.size()+localIndexToReceive.size()); 162 int position = 0; 158 163 for (itSend = itbSend; itSend != iteSend; ++itSend, ++idxSendBuff) 159 164 { … … 165 170 sendBuff[idxSendBuff][idx] = dataCurrentSrc(localIndex_p(idx)); 166 171 } 167 sendRecvRequest.push_back(ep_lib::MPI_Request());168 MPI_Isend(sendBuff[idxSendBuff], countSize, MPI_DOUBLE, destRank, 12, client->intraComm, &sendRecvRequest.back());172 MPI_Isend(sendBuff[idxSendBuff], countSize, MPI_DOUBLE, destRank, 12, client->intraComm, &sendRecvRequest[position]); 173 position++; 169 174 } 170 175 171 176 // Receiving data on destination fields 172 const CGridTransformation::RecvIndexGridDestinationMap& localIndexToReceive = *itListRecv; 173 CGridTransformation::RecvIndexGridDestinationMap::const_iterator itbRecv = localIndexToReceive.begin(), itRecv, 174 iteRecv = localIndexToReceive.end(); 177 175 178 int recvBuffSize = 0; 176 179 for (itRecv = itbRecv; itRecv != iteRecv; ++itRecv) recvBuffSize += itRecv->second.size(); //(recvBuffSize < itRecv->second.size()) … … 183 186 int srcRank = itRecv->first; 184 187 int countSize = itRecv->second.size(); 185 sendRecvRequest.push_back(ep_lib::MPI_Request()); 186 MPI_Irecv(recvBuff + currentBuff, countSize, MPI_DOUBLE, srcRank, 12, client->intraComm, &sendRecvRequest.back()); 188 189 MPI_Irecv(recvBuff + currentBuff, countSize, MPI_DOUBLE, srcRank, 12, client->intraComm, &sendRecvRequest[position]); 190 position++; 187 191 currentBuff += countSize; 188 192 }
Note: See TracChangeset
for help on using the changeset viewer.