Hi Didier,
On Thu, 10 Jun 2010 22:53 +0200, "Didier Devaurs"
Hello,
I'm having troubles trying to pass a uuid with MPI routines. Since a uuid is serialized as a primitive type, I was expecting it could be declared as an MPI datatype using: BOOST_IS_MPI_DATATYPE(boost::uuids::uuid) and sent via MPI routines.
This makes sense to me from reading the docs: http://www.boost.org/doc/libs/1_43_0/doc/html/mpi/tutorial.html#mpi.user_dat...
I've written a short program to illustrate the problem. It compiles but produces a "segmentation fault" error when I'm trying to run it:
In the same section, I also read that if one uses this optimization (BOOST_IS_MPI_DATATYPE) but shouldn't be, a result could be a segmentation fault.
#include <iostream> #include
#include #include #include #include BOOST_IS_MPI_DATATYPE(boost::uuids::uuid)
int main() { boost::mpi::environment env; boost::mpi::communicator world;
if (world.rank() == 0) { boost::uuids::uuid u; u = boost::uuids::random_generator()(); std::cout << "u = " << u << std::endl; world.send(1, 0, u); } else { boost::uuids::uuid v; world.recv(0, 0, v); std::cout << "v = " << v << std::endl; } return 0; }
Does anybody have an idea whether passing uuids would be possible, and if yes what is wrong in my code?
Thank you, Didier Devaurs
I do not know much about Boost.MPI. I will continue learning about it to try to solve the problem. Regards, Andy.