Cristobal Navarro wrote:
> i made some progress while we were mailing
between us.
>
>
> first of all, im trying to see if my
object can be serialized /
> deserialized in the common way without going
into MPI yet.
good idea - one thing at a time.
> objects are Lattices, they have Nodes and Edges. nothing
more.
> it compiles and links ok, and when i test serialization
/
> deserialization with the following code..:
>
>
printf("serializing to
binlat.x...\n");
>
//!file
mode
>
/*
>
std::ofstream ofs("binlat.x",
ios::binary);
>
boost::archive::binary_oarchive
oa(ofs);
>
*/
>
oa <<
*(this->lat);
>
ofs.close();
>
lat->print(); //check what lattice im
serializing
>
//!Deserialization - read file binlat.x and
> reconstruct
>
printf("reconstructing serialized
binlat.x...\n");
>
Lattice
nl;
>
std::ifstream ifs("binlat.x",
ios::binary);
>
boost::archive::binary_iarchive
ia(ifs);
>
//!deserialize
object
>
ia >>
nl;
>
ifs.close();
>
nl.print();
>
Hmmm- what surrounds this?
>
oa << *(this->lat);
doesn't look right to me. coincidentally,
this same construct is used on another thread
anyay
try
{
const class Lattice lat ...
...
ar << lat
}
that might work better.
Robert Ramey
>
>
> i get bad errors
when deserializing, complaining about a bool and
> char.
>
serializing to binlat.x...
> Lattice::print().....START
>
Nodes=2 Edges= 1
> Node[0] sp=1 ext=1
> Linked to edge 2
(Node 3 or 0 )
> Node[3] sp=1 ext=2
> Linked to edge 2 (Node 3 or 0
)
> Lattice::print().....END
> [enter]
> reconstructing
swerialized binlat.x...
> [enter]
> plattice:
>
/usr/local/include/boost/archive/basic_binary_iprimitive.hpp:98: void
>
boost::archive::basic_binary_iprimitive<Archive, Elem,
>
Tr>::load(bool&) [with Archive = boost::archive::binary_iarchive,
>
Elem = char, Tr = std::char_traits<char>]: Assertion `0 == i || 1
==
> i' failed.
> [lenovo00:29384] ***
Process received signal ***
> [lenovo00:29384] Signal: Aborted (6)
>
[lenovo00:29384] Signal code: (-6)
> [lenovo00:29384] [ 0]
[0xfea410]
> [lenovo00:29384] [ 1]
/lib/tls/i686/cmov/libc.so.6(abort+0x182)
> [0xd41a82]
>
[lenovo00:29384] [ 2]
> /lib/tls/i686/cmov/libc.so.6(__assert_fail+0xf8)
[0xd37718]
> [lenovo00:29384] [ 3]
> ..
> ..
> *** End
of error message ***
>
>
> i started debugging, and realized
that the problem is completely gone
> when i remove "edges" from the
serialization members of "Lattice"
> object.
> its weird,
because "edge" is a map of <int, Edge> and much simplier
> than
"nodes" which does work. obviously i cannot continue without
> edges, so i
need to fix it somehow, but i dont understand the error
> related to
edges, maybe is something im not seeing.
>
>
>
dont get distracted by the messy code, i had to edit it a little to
>
focus on the case.
> regards
> Cristobal
>
>
>
>
>
>
> On Thu, Aug 26, 2010 at 4:35 PM, Robert
Ramey <ramey@rrsd.com> wrote:
>
>> Change the "would" into
"is": it is possible to mix Boost.MPI with
>> Boost.Serialization. Any
objext that can be serialized can be sent by
>> Boost.MPI. This was
actually the basic idea behind Boost.MPI, to use
>> Boost.Serialization
to pack and unpack MPI buffers, or to create
>> custom MPI
datatypes.
>
> On thing that I never understood is why you need MPI
data types at
> all.
> If one is serializing (packing) to a binary
array, and sending that,
> what
> hae MPI data types have to do
with it.
>
> If one were using heterogenious machines, I could
understand the
> usage of MPI types. But as I understand it, the MPI
serialization
> presumes
> that the machines are binary
compatible. So I'm just not seeing this.
>
> Robert
Ramey
>
>
>
>
_______________________________________________
> Boost-users mailing
list
> Boost-users@lists.boost.org
>
http://lists.boost.org/mailman/listinfo.cgi/boost-users
>
>
>
>
>
>
>
_______________________________________________
> Boost-users mailing
list
> Boost-users@lists.boost.org
>
http://lists.boost.org/mailman/listinfo.cgi/boost-users