Ignore:
Timestamp:
05/29/17 16:15:38 (7 years ago)
Author:
yushan
Message:

bug fixed in MPI_Gather(v)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/branch_yushan_merged/extern/remap/src/mapper.cpp

    r1146 r1147  
    2121void cptOffsetsFromLengths(const int *lengths, int *offsets, int sz) 
    2222{ 
    23         offsets[0] = 0; 
    24         for (int i = 1; i < sz; i++) 
    25                 offsets[i] = offsets[i-1] + lengths[i-1]; 
     23  offsets[0] = 0; 
     24  for (int i = 1; i < sz; i++) 
     25    offsets[i] = offsets[i-1] + lengths[i-1]; 
    2626} 
    2727 
     
    3131  srcGrid.pole = Coord(pole[0], pole[1], pole[2]); 
    3232 
    33         int mpiRank, mpiSize; 
    34         MPI_Comm_rank(communicator, &mpiRank); 
    35         MPI_Comm_size(communicator, &mpiSize); 
    36  
    37         sourceElements.reserve(nbCells); 
    38         sourceMesh.reserve(nbCells); 
     33  int mpiRank, mpiSize; 
     34  MPI_Comm_rank(communicator, &mpiRank); 
     35  MPI_Comm_size(communicator, &mpiSize); 
     36 
     37  sourceElements.reserve(nbCells); 
     38  sourceMesh.reserve(nbCells); 
    3939  sourceGlobalId.resize(nbCells) ; 
    4040 
     
    4949  else sourceGlobalId.assign(globalId,globalId+nbCells); 
    5050 
    51         for (int i = 0; i < nbCells; i++) 
    52         { 
    53                 int offs = i*nVertex; 
    54                 Elt elt(boundsLon + offs, boundsLat + offs, nVertex); 
    55                 elt.src_id.rank = mpiRank; 
    56                 elt.src_id.ind = i; 
     51  for (int i = 0; i < nbCells; i++) 
     52  { 
     53    int offs = i*nVertex; 
     54    Elt elt(boundsLon + offs, boundsLat + offs, nVertex); 
     55    elt.src_id.rank = mpiRank; 
     56    elt.src_id.ind = i; 
    5757    elt.src_id.globalId = sourceGlobalId[i]; 
    58                 sourceElements.push_back(elt); 
    59                 sourceMesh.push_back(Node(elt.x, cptRadius(elt), &sourceElements.back())); 
    60                 cptEltGeom(sourceElements[i], Coord(pole[0], pole[1], pole[2])); 
    61         } 
     58    sourceElements.push_back(elt); 
     59    sourceMesh.push_back(Node(elt.x, cptRadius(elt), &sourceElements.back())); 
     60    cptEltGeom(sourceElements[i], Coord(pole[0], pole[1], pole[2])); 
     61  } 
    6262 
    6363} 
     
    485485    mpiRoute.init(routes); 
    486486    int nRecv = mpiRoute.getTotalSourceElement(); 
    487     // cout << mpiRank << " NRECV " << nRecv << "(" << routes.size() << ")"<< endl; 
    488487 
    489488    int *nbSendNode = new int[mpiSize]; 
     
    879878        { 
    880879            MPI_Issend(sendBuffer2[rank], sentMessageSize[rank], MPI_CHAR, rank, 0, communicator, &sendRequest[nbSendRequest]); 
     880            printf("proc %d send %d elements to proc %d\n", mpiRank, sentMessageSize[rank], rank); 
    881881            nbSendRequest++; 
    882882        } 
     
    884884        { 
    885885            MPI_Irecv(recvBuffer2[rank], recvMessageSize[rank], MPI_CHAR, rank, 0, communicator, &recvRequest[nbRecvRequest]); 
     886            printf("proc %d recv %d elements from proc %d\n", mpiRank, recvMessageSize[rank], rank); 
    886887            nbRecvRequest++; 
    887888        } 
Note: See TracChangeset for help on using the changeset viewer.