The only idea I had was potentially to use MPI_Hindexed and
MPI_Address to create the full memory layout, and then go through the
data calling placement new, etc...
Given the lack of documentation around how to actually do this with
MPI, I can't really think of anything better than what is currently
happening inside boost::mpi. If I need the better performance, I will
have to uglify my code :)
Thanks,
Brian
On Thu, Sep 6, 2012 at 10:49 AM, Júlio Hoffimann
Hi Brian,
I don't remember the details, but what you said is completely right, when we pass an object to any of the Boost.MPI methods, it can be either of MPI type, in what case it's properly forwarded to the C implementation, or it can be of a serializable type when the magic happens.
At the other end of the wire, Boost.MPI will magically deserialize the object and you have no additional work. You keep working on high-level C++.
The main bottleneck here is the act of serialize/deserialize repeatedly. As you already know, Boost.MPI solved this problem for some cases (with fixed layout): the skeleton and content approach.
When the approach is not applicable, you have to live with C raw buffers doing the &vec[0] trick. I'll take a better look to see if specializing the template with that trick is safe and covered by the C++ standard.
You're also free to investigate and produce patches. :-)
Regards, Júlio.
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users