No bloquear la comunicación en MPI y MPI Wait Issue. No toda la información se pasa correctamente

Me di cuenta de que no todos mis MPI_Isend / MPI_IRecv se estaban ejecutando. Creo que tal vez sea el orden en que envío y recibo o el hecho de que el código no espera hasta que se ejecuten todos los comandos. He copiado el extracto del código a continuación. ¿Podría sugerirme lo que podría estar haciendo incorrectamente?

¡Gracias

MPI_Status status[8];
MPI_Request request[8];
....
....
if ((my_rank) == 0)
{
      MPI_Isend(eastedge0, Rows, MPI_DOUBLE, my_rank+1, 0, MPI_COMM_WORLD, &request[0]);
      MPI_Irecv(westofwestedge0, Rows, MPI_DOUBLE, my_rank+1, MPI_ANY_TAG, MPI_COMM_WORLD, &request[6]);
      MPI_Wait(&request[6], &status[6]);
}

if ((my_rank) == 1)
{
      MPI_Irecv(eastofeastedge1, Rows, MPI_DOUBLE, my_rank-1, MPI_ANY_TAG, MPI_COMM_WORLD, &request[0]);
      MPI_Wait(&request[0], &status[0]);
      MPI_Isend(westedge1, Rows, MPI_DOUBLE, my_rank-1, 0, MPI_COMM_WORLD, &request[6]);
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta