Understanding the differences in sending MPI

Ok, let's get started, I have a little confusion in my head.

SEND : it blocks. The sender waits until the receiver places the appropriate RECV.

SSEND : it is blocked, and the sender DOES NOT ONLY wait until the receiver outputs the corresponding RECV, but it will wait for RECV confirmation. This means that RECV is working properly.

BSEND : it is not blocking. A process can execute its part of the code. Data is stored in a buffer that has been correctly allocated previously.

ISEND : it is not blocked. A process can execute its part of the code. The data is NOT stored in the buffer: you should not overwrite the data you send until you are sure that ISEND is working properly (WAIT / TEST).

So, ISEND and BSEND differ only for the buffer?

+4
source share
1 answer

Yes - the difference between ISEND and BSEND is the buffer.

ISEND is a non-blocking transmission performed on site.

BSEND is a non-blocking transmission that can be buffered in the memory segment indicated MPI_Buffer_Attach.

The BSEND function was created , allowing the programmer to specify exactly where the data is buffered.

It is important to note that, as with ISEND , you should also check the status of all sendings with the BSEND buffer so that the buffer does not overflow or overwrite the waiting BSEND .

+1

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


All Articles