Index: /issm/trunk-jpl/src/c/classes/Vertices.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Vertices.cpp	(revision 27382)
+++ /issm/trunk-jpl/src/c/classes/Vertices.cpp	(revision 27383)
@@ -235,13 +235,17 @@
 
 	/* Share pids of masters and update pids of clones*/
-	int* truepids = xNew<int>(this->Size()); //only one alloc
+	int **send_truepids = xNewZeroInit<int*>(num_procs);
+	int  *recv_truepids = xNewZeroInit<int>(this->Size());
+	ISSM_MPI_Request* send_requests = xNew<ISSM_MPI_Request>(num_procs);
+	for(int rank=0;rank<num_procs;rank++) send_requests[rank] = MPI_REQUEST_NULL;
 	for(int rank=0;rank<num_procs;rank++){
 		if(this->common_send[rank]){
 			int  numids = this->common_send[rank];
+			send_truepids[rank] = xNew<int>(numids);
 			for(int i=0;i<numids;i++){
 				Vertex* vertex=xDynamicCast<Vertex*>(this->GetObjectByOffset(this->common_send_ids[rank][i]));
-				truepids[i] = vertex->pid;
+				send_truepids[rank][i] = vertex->pid;
 			}
-			ISSM_MPI_Send(truepids,numids,ISSM_MPI_INT,rank,0,IssmComm::GetComm());
+			ISSM_MPI_Isend(send_truepids[rank],numids,ISSM_MPI_INT,rank,0,IssmComm::GetComm(),&send_requests[rank]);
 		}
 	}
@@ -249,12 +253,18 @@
 		if(this->common_recv[rank]){
 			int  numids = this->common_recv[rank];
-			ISSM_MPI_Recv(truepids,numids,ISSM_MPI_INT,rank,0,IssmComm::GetComm(),&status);
+			ISSM_MPI_Recv(recv_truepids,numids,ISSM_MPI_INT,rank,0,IssmComm::GetComm(),&status);
 			for(int i=0;i<numids;i++){
 				Vertex* vertex=xDynamicCast<Vertex*>(this->GetObjectByOffset(this->common_recv_ids[rank][i]));
-				vertex->pid = truepids[i];
+				vertex->pid = recv_truepids[i];
 			}
 		}
 	}
-	xDelete<int>(truepids);
+	xDelete<int>(recv_truepids);
+	for(int rank=0;rank<num_procs;rank++){
+		if(rank!=my_rank) ISSM_MPI_Wait(&send_requests[rank],&status);
+		xDelete<int>(send_truepids[rank]);
+	}
+	xDelete<int*>(send_truepids);
+	xDelete<ISSM_MPI_Request>(send_requests);
 }/*}}}*/
 int Vertices::NumberOfVertices(){/*{{{*/
