In reply to anon.

The Message Passing Library (MPL) is based on MPI. All message passing is realized by MPI. MPL is basically a lightweight convenience wrapper for MPI. At the moment it is not intended to provide new message passing functionalities, which go beyond the capabilities of the MPI standard. I think one has to be very careful not to introduce possible sources of unwanted side effects, when combining MPI functions to more advanced massage passing patterns, in particular when it comes to non-blocking operations.

Composing non-blocking MPI operations sounds interesting. However, I doubt that this would give significant advantages in terms of performance as long as nonblocking MPI communication gets progress only when MPI_Test* or MPI_Wait* are called. In my opinion such fancy stuff as you have it in mind becomes only interesting, when MPI implementations allow threading on the level of MPI_THREAD_MULTIPLE.