Ignore:
Timestamp:
07/10/17 15:18:16 (7 years ago)
Author:
yushan
Message:

prep to merge with trunk @1200

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/branch_yushan_merged/src/filter/spatial_transform_filter.cpp

    r1134 r1203  
    153153          sendBuff[idxSendBuff] = new double[itSend->second.numElements()]; 
    154154      } 
     155       
     156      const CGridTransformation::RecvIndexGridDestinationMap& localIndexToReceive = *itListRecv; 
     157      CGridTransformation::RecvIndexGridDestinationMap::const_iterator itbRecv = localIndexToReceive.begin(), itRecv, 
     158                                                                       iteRecv = localIndexToReceive.end(); 
    155159 
    156160      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; 
    158163      for (itSend = itbSend; itSend != iteSend; ++itSend, ++idxSendBuff) 
    159164      { 
     
    165170          sendBuff[idxSendBuff][idx] = dataCurrentSrc(localIndex_p(idx)); 
    166171        } 
    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++; 
    169174      } 
    170175 
    171176      // 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       
    175178      int recvBuffSize = 0; 
    176179      for (itRecv = itbRecv; itRecv != iteRecv; ++itRecv) recvBuffSize += itRecv->second.size(); //(recvBuffSize < itRecv->second.size()) 
     
    183186        int srcRank = itRecv->first; 
    184187        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++; 
    187191        currentBuff += countSize; 
    188192      } 
Note: See TracChangeset for help on using the changeset viewer.