
On 26 Aug 2010, at 20:56, Robert Ramey wrote:
Cristobal Navarro wrote:
the other question is on the tutorials i only found examples of serializing objects to archive and saving to file, but i didnt find any example where they serialize it to a binary form and send them through mpi, is there any example of this type on the documentation?
no
Actually the answer is yes. This is exactly what is done by Boost.MPI! When you send an object using Boost.MPI, it is serialized into an MPI buffer by the packed_oarchive. Then that buffer's content is sent via MPI and it is unpacked at the other end. All this is transparently done by the send and recv calls of Boost.MPI.
Feel free to contribute one.
No need since it already exists.
If I had nothing else to do, I would
a) make a stream_buf which uses MPI
b) use binary_iarchive and binary_oarchive with this new stream_buf
we avoid streambufs by directly packing using detail::mpi_[io]primitive. This allows us to make use of conversion facilities in MPI, rather than packing as native binary.
c) open one program with binary_oarchive and the other with binary_iarchive
we call them packed_oarchive and packed_iarchive
d) do ar << on one end and ar >> at the other
That is what the send and recv functions do, but in addition we have the MPI_Send and MPI_Recv calls that transfer the buffer. Matthias