hello again

i wrote my code for sending one object from rank 0 to rank 1 process sing boost.mpi because it is very simple.
it worked when sending a string just like in the documentation,

however when i sent the object i showed earlier i am getting errors.

terminate called after throwing an instance of
'boost::archive::archive_
exception'
 what():  class version St8multimapIiiSt4lessIiESaISt4pairIKiiEEE
[lenovo00:06116] *** Process received signal ***
[lenovo00:06116] Signal: Aborted (6)
[lenovo00:06116] Signal code:  (-6)
[lenovo00:06116] [ 0] [0x71f410]
[lenovo00:06116] [ 1] /lib/tls/i686/cmov/libc.so.6(abort+0x182) [0x74da82]
[lenovo00:06116] [ 2]
/usr/lib/libstdc++.so.6(_ZN9__gnu_cxx27__verbose_terminate_handlerEv+0x14f)
[0x4da52f]
[lenovo00:06116] [ 3] /usr/lib/libstdc++.so.6(+0xbd465) [0x4d8465]
[lenovo00:06116] [ 4] /usr/lib/libstdc++.so.6(+0xbd4a2) [0x4d84a2]
[lenovo00:06116] [ 5] /usr/lib/libstdc++.so.6(+0xbd5e1) [0x4d85e1]
[lenovo00:06116] [ 6]
bin/release/plattice(_ZN5boost13serialization15throw_exceptionINS_7archive17archive_exceptionEEEvRKT_+0x3e)
[0x80ee491]
...
...
...
  says something about multimap type error and other
things. if i remove the multimap attribute from the serialization method i get another
error, and if i comment almost everything and only keep 2 integers
(numNodes numEdges) for testing... the receiving object has different values on
those integers.

this can be a problem of the internal serializing which uses
packed_oarchive/iarchive  instead of the binary_oarchive/iarchive i was testing earlier when it worked??
any indication is welcome if you need more debugging information i can provide


Cristobal


On Sat, Aug 28, 2010 at 3:11 PM, Matthias Troyer <troyer@phys.ethz.ch> wrote:

On 28 Aug 2010, at 18:36, Jeff Flinn wrote:

> Dave Abrahams wrote:
>> BoostPro Computing, http://boostpro.com
>> Sent from coveted but awkward mobile device
>> --
>> On Aug 28, 2010, at 6:15 AM, Jeff Flinn <TriumphSprint2000@hotmail.com> wrote:
>>> So what happens if the some data member that is a base class pointer gets modified to point to some other instance of a derived class? Doesn't that change the 'structure'?
>> Yes of course. However, many MPI applications never need to do that.
>
> No doubt many don't. I'm just trying to gain a better understanding of boost.mpi and provide some of that feedback you asked for else thread. :-)
>
> Does MPI detect those changes automatically resending the skeleton information as required? Or does the user code need to explicitly manage such situations? Or does this disallow usage of the skeleton approach altogether in these situations.

The user code needs to explicitly manage this, and if your code typically changes the structure, then  I recommend to just use the normal send and recv mechanism which sends the whole object.

Matthias

_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users