[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[mpi-21] Proposal: Dynamically-Sized Messages in MPI-3



As MPI matures, we expect to see more and more libraries building on top of MPI to provide additional functionality and bindings for different languages, particularly higher-level, object-oriented languages like Java, C++, C#, and Python. In these object-oriented languages, users expect to be able to transmit objects via MPI. Existing libraries already implement this behavior, serializing and de- serializing objects as needed.

Unfortunately, MPI makes the receipt of the serialized representations of objects unnecessarily hard. The problem is that, in general, the receiver cannot know the length of the serialized data before it posts the receive. Obvious approaches to solving this problemâe.g., probing for the message before receiving itâwork well within a single-thread environment but fail within a multi-threaded
environment.


We propose to extend MPI to support receiving messages of arbitrary length. In this scheme, the MPI implementation will allocate a buïer of the appropriate size and return that buïer to the user containing the received data. With this extension, it becomes signiïcantly easier for users and library developers to transmit data of arbitrary size in a thread-safe manner. Additionally, since the thread-safe workarounds for this problem involve the transmission of multiple messages (one with a synchronous send), these exten-
sions may improve application performance in languages that require object serialization, such as C#, Java, and Python.


The full proposal, intended for MPI 3.0, is attached. Comments always welcome!

	- Doug

Attachment: any_size.pdf
Description: Adobe PDF document