
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