Buffered MPI send / receive order

I use MPI (with fortran, but the question is more specific to the MPI standard than any given language), and in particular, the use of the send / receive isend and irecv buffered functions. Now, if we imagine the following scenario:

Process 0:

isend(stuff1, ...)
isend(stuff2, ...)

Process 1:

wait 10 seconds
irecv(in1, ...)
irecv(in2, ...)

Are messages sent to Process 1 in the order in which they were sent, that is, I can be sure that in1 == stuff1 and in2 == stuff2 if the tag used is the same in all cases ?

+3
source share
2 answers

, , . . MPI Standard , :

: , , , . , , , . . , , , MPI_ANY_SOURCE . ( , MPI_CANCEL MPI_WAITANY, .)

+6

.

, in1 == stuff1 in2 == stuff2, ?

. 1:1 send recv, recv. MPI.

. - ... RDMA (, InfiniBand).

(, , ), MPI_Test MPI_Wait, , ( ).

in1 = stuff1, in2 = stuff2 , , MPI_Issend (, ) . recv , - revc (, MPI_Recv, MPI_Barrier, MPI_Wait ..).

+2

Source: https://habr.com/ru/post/1727695/


All Articles