Boost logo

Boost Users :

Subject: Re: [Boost-users] boost.MPI dynamic data structure error
From: Jack Bryan (dtustudy68_at_[hidden])
Date: 2010-10-19 20:39:19


thanks
I have two problems so that I cannot use boost.MPI.
I need to transfer data very frequently, and calling boost Serialization will increase overhead by system call. Because every time I call mpi_send, the Serialization() needs to be called.
   This will reduce bandwith on MPI systems.
Does boost.MPI support dynamic-size vector Serialization ?
For example,
I declare a
class myDataS {
double data1;vector<double> dataVec;
} myData;
This class is visible to all processors.
In processor 1, I initialize dataVec(mysize); // mysize is not visible to other processors except processor 1.

I use world.send() to send myData to processor 2 by Serialization() in the class myDataS .
Does the processor2 knows that how large the dataVec is ? and in processor2, in world.recv(), if I use myData to receive the data from processor 1, how to make sure that all elements in the vector have been received ?

Any help is appreciated.
Jack
Oct. 19 2010

From: troyer_at_[hidden]
Date: Tue, 19 Oct 2010 17:12:33 -0700
To: boost-users_at_[hidden]
Subject: Re: [Boost-users] boost.MPI dynamic data structure error

On 19 Oct 2010, at 13:39, Jack Bryan wrote:Hi ,
I need to design a data structure to transfer data between nodes by boost.MPI.
Some elements of the the structure has dynamic size.
For example,
typedef struct{
double data1;vector<double> dataVec;
} myDataType;
The size of the dataVec depends on some intermidiate computing results.
If I only declear it as the above myDataType, I think, only a pointer is transfered.
When the data receiver try to access the elements of vector<double> dataVec, it got segentation fault error.
But, I also need to use the myDataType to declear other data structures.
such as vector<myDataType> newDataVec;
Hi Jack,
All you need to do is to define a serialize() function for your data structure, so that it can be serialized by Boost.Serialization. Then you can transfer the datastructure with Boost.MPI
Matthias

_______________________________________________
Boost-users mailing list
Boost-users_at_[hidden]
http://lists.boost.org/mailman/listinfo.cgi/boost-users



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net