Changeset 27383
- Timestamp:
- 11/10/22 17:25:21 (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Vertices.cpp
r27102 r27383 235 235 236 236 /* Share pids of masters and update pids of clones*/ 237 int* truepids = xNew<int>(this->Size()); //only one alloc 237 int **send_truepids = xNewZeroInit<int*>(num_procs); 238 int *recv_truepids = xNewZeroInit<int>(this->Size()); 239 ISSM_MPI_Request* send_requests = xNew<ISSM_MPI_Request>(num_procs); 240 for(int rank=0;rank<num_procs;rank++) send_requests[rank] = MPI_REQUEST_NULL; 238 241 for(int rank=0;rank<num_procs;rank++){ 239 242 if(this->common_send[rank]){ 240 243 int numids = this->common_send[rank]; 244 send_truepids[rank] = xNew<int>(numids); 241 245 for(int i=0;i<numids;i++){ 242 246 Vertex* vertex=xDynamicCast<Vertex*>(this->GetObjectByOffset(this->common_send_ids[rank][i])); 243 truepids[i] = vertex->pid;247 send_truepids[rank][i] = vertex->pid; 244 248 } 245 ISSM_MPI_ Send(truepids,numids,ISSM_MPI_INT,rank,0,IssmComm::GetComm());249 ISSM_MPI_Isend(send_truepids[rank],numids,ISSM_MPI_INT,rank,0,IssmComm::GetComm(),&send_requests[rank]); 246 250 } 247 251 } … … 249 253 if(this->common_recv[rank]){ 250 254 int numids = this->common_recv[rank]; 251 ISSM_MPI_Recv( truepids,numids,ISSM_MPI_INT,rank,0,IssmComm::GetComm(),&status);255 ISSM_MPI_Recv(recv_truepids,numids,ISSM_MPI_INT,rank,0,IssmComm::GetComm(),&status); 252 256 for(int i=0;i<numids;i++){ 253 257 Vertex* vertex=xDynamicCast<Vertex*>(this->GetObjectByOffset(this->common_recv_ids[rank][i])); 254 vertex->pid = truepids[i];258 vertex->pid = recv_truepids[i]; 255 259 } 256 260 } 257 261 } 258 xDelete<int>(truepids); 262 xDelete<int>(recv_truepids); 263 for(int rank=0;rank<num_procs;rank++){ 264 if(rank!=my_rank) ISSM_MPI_Wait(&send_requests[rank],&status); 265 xDelete<int>(send_truepids[rank]); 266 } 267 xDelete<int*>(send_truepids); 268 xDelete<ISSM_MPI_Request>(send_requests); 259 269 }/*}}}*/ 260 270 int Vertices::NumberOfVertices(){/*{{{*/
Note:
See TracChangeset
for help on using the changeset viewer.