SYNCHRONIZATION
- BLOCK SEND
A blocking send can be used with a non-blocking
receive, and vice-versa,
e.g.,
MPI_Isend
MPI_Recv
MPI_Isend
MPI_Recv
- NONBLOCKING SEND
Non-blocking sends can use any mode -
synchronous, buffered, standard or ready.
synchronous, buffered, standard or ready.
Separate communication into three phases:
1. Initiate non-blocking communication (“post” a
send or receive)
send or receive)
2. Do some other work not involving the data in
transfer
– Overlap calculation and communication
– Latency hiding
3. Wait for non-blocking communication to complete
- BLOCKING RECEIVE
A blocking receive returns as soon as the data is ready in the receive buffer.
- NONBLOCKING RECEIVE
A non-blocking send returns as soon as possible, that is, as soon as it has posted the send. The buffer might not be free for reuse.
C:
int MPI_Irecv(void *buf, int count, MPI_Datatype datatype,
int source, int tag, MPI_Comm comm, MPI_Request
*request)
Fortran:
CALL
MPI_IRECV(BUF,COUNT,DATATYPE,SOURCE,TAG,COMM,REQUEST,IER
ROR)
INTEGER COUNT,DATATYPE,SOURCE,TAG,COMM
INTEGER REQUEST,IERROR
No comments:
Post a Comment