From: Douglas Gregor (dgregor_at_[hidden])
Date: 2006-09-17 15:17:08


Matthias is far more qualified than I to provide adequate responses to
your questions, but this much I can answer...

> Note that you've used packed_archive - I would use mpi_archive instead. I
> think this is a better description of what it is.
> Really its only a name change - and "packed archive" is already inside an
> mpi namespace so its not a huge issue. BUT I'm wondering if the idea of
> rendering C++ data structures as MPI primitives should be more orthogonal
> to
> MPI prototcol itself. That is, might it not be sometimes convenient to
> save
> such serializations to disk? Wouldn' this provide a portable binary
> format
> for free?

Unfortunately, the MPI packed archives do not give us a portable binary
format, because there is no published MPI protocol. The MPI packed
archivers use the MPI calls MPI_Pack and MPI_Unpack to pack a buffer. The
only guarantee they give is that if you MPI_Pack something, you can
transmit it via MPI and then MPI_Unpack it later. The protocol used varies
from one MPI implementation to another, and could conceivably vary from
one invocation to another. For instance, in a homogeneous environment,
MPI_Pack and MPI_Unpack could be implemented as a memcpy(); in a
heterogeneous environment, they might use some XDR representation. A
really smart MPI might make the decision at run-time, after determining
what kind of environment we're running in.

So we can't really separate the MPI archivers from MPI. They're really
very, very specialized.

  Doug