MPI
- same program by multiple processes w/message passing
- message sending and receiving
communication can be:
- buffered ⟶ the sending operation is always locally blocking (it will return as soon as the message is copied to a buffer), and the buffer is user-provided
- synchronous ⟶ the sending operation will return only after the destination process has initiated and started the retrieval of the message (globally blocking - the sender can be sure of the point the receiver is at without any further explicit communication)
- ready ⟶ the send operation will only succeed if a matching receive operation has already been initialised (otherwise, it returns an error code); used to reduce the overhead of handshaking operation
+can be blocking or non-blocking