1

I am wondering what the benefits are for the skelton & content implementation of MPI functionalities such as provided in Boost.MPI. As far as I understood is the skeleton&content approach ONLY beneficial if a message has a fixed size of arbitrary type and this message needs to be sent several times with different content.

So skeleton&content does not work in the following case:

std::list<int> l;

// Exchange Skeleton mpi::skeleton(l)

// Send Content mpi::content(l) (but modify the size of the list, so sending once 10 element and in the next time 2 elements, for example)

Boost sends the content by serializing the data, and deserializing it on the other end. ( I assume it will send the data with type MPI_BYTE and handling the endianess with flags somehow ?)

Two questions:

  1. Why the need for sending the skeleton for any serializable type (can also be a serialization wrapper object): Can Boost not just deserialize (given the same serialization wrapper which provides deserialization) the received data without the need of the skeleton?

So the skelton&content approach is beneficial in the sense that dynamic sizes of lists etc.. do NOT need to be serialized again in subsequent calls. So the real benefit is that the serialized message (sending content) is smaller with the skeleton&content approach. And if the message is sent several times this is beneficial.

So to conclude, if the message is highly dynamic (shape changes) and only one message is sent skeleton&content should not be applied.

Is that correct?

Gabriel
  • 8,990
  • 6
  • 57
  • 101

0 Answers0