Boost logo

Boost Users :

Subject: Re: [Boost-users] [mpi/serialization] Potential bug or just library misunderstanding?
From: Júlio Hoffimann (julio.hoffimann_at_[hidden])
Date: 2011-09-30 13:41:29

Hi Tim,

This is not a bug, the MPI_ERR_TRUNCATE is related to the underlying MPI
implementation and occurs when the receive buffer is lesser than the message
size. For to use the Boost.MPI skeleton and content approach you must
guarantee a fixed "shape" object. So, for example, you should not use this
approach with boost::optional<> unless you know it's state beforehand
because it's "shape" depends on it. (as a discriminated union, it could be
seen as a one element or a empty container)

In other words, Boost.MPI can deal with all Boost.Serialization types, but
not all of them are adequate to do "skeleton and content" in common tasks.


2011/9/30 Tim Jacobs <tjacobs2_at_[hidden]>

> I'm not sure why the following test-class produces this error: "MPI_Recv:
> MPI_ERR_TRUNCATE: message truncated"
> If the std::map has only a single element (ie I remove one of the
> test[].push_back() lines) the error does not occur. Can someone verify that
> this is indeed a bug and not just novice misuse of the library?
> Thanks,
> Tim
> #include <boost/mpi.hpp>
> #include <boost/serialization/string.hpp>
> #include <boost/serialization/vector.hpp>
> #include <boost/serialization/map.hpp>
> int
> main( int argc, char * argv [] )
> {
> boost::mpi::environment env(argc, argv);
> boost::mpi::communicator world;
> if(world.rank()==0){
> std::map<int, std::vector<std::string> > test;
> test[1].push_back("FOO");
> test[50].push_back("BAR");
> world.send(1, 1, boost::mpi::skeleton(test));
> world.send(1, 1, boost::mpi::get_content(test));
> std::cout << "sent" << std::endl;
> }
> else{
> std::map<int, std::vector<std::string> > test;
> world.recv(0,1,boost::mpi::skeleton(test));
> world.recv(0,1,boost::mpi::get_content(test));
> }
> }
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]

Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at