Ordenamiento de envío y recepción no bloqueante de MPI.
En un sistema de 2 núcleos, para el siguiente código:
if (rank == 0)
{
MPI_Isend(A) // a rango 1
// Haz algo más.
MPI_Isend(B) // a rango 1
// Haz algo más.
MPI_Wait(B se ha enviado)
MPI_Wait(A se ha enviado)
}
else
{
MPI_Irecv(buffer1) // Escucha a rango 0
// Haz algo más.
MPI_Irecv(buffer2) // Escucha a rango 0
// Haz algo más.
MPI_Wait(buffer2 ha terminado de recibir)
MPI_Wait(buffer1 ha terminado de recibir)
}
¿Es garantía que el rango 1 recibirá A en el buffer 1, y B en el buffer 2?
¡Gracias!
davy.ai
Sí, se garantizaría que la clasificación 1 recibiera A en el búfer 1 y B en el búfer 2. Esto se debe a que las llamadas
MPI_Wait
aseguran que los mensajes se envíen y reciban en el orden en que se enviaron.