Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
Marshalling problem?
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2008-02-28 (20:35)
From: Thomas Fischbacher <tf@f...>
Subject: Marshalling problem?

I encounter a rather weird problem when marshalling a complicated highly
networked data structure to send it over the net (yes, it's brute, but
that allows me to get an issue solved very quickly which I will refine
later on in the future).

Basically, the actual sending of a large chunk of data over the net
(using MPI_Send/MPI_Recv and serialization) works fine. But the
deserialisation seems to get in trouble (on x86-32) when the data
is more than 16 MB. Strange enough, If I do not rely on CamlMPI's
internal serialization of ML values, but do this of my own and
serialize to a bigarray beforehand, the process that just has
serialized the data can deserialize it again. If I load that data
into some other process - either via the net or by intermediately
writing to a file, I get either a segfault or an internal failure
exception from the deserializer.

Seems as if some initialization may have been omitted somewhere which
gets done by first using the serializer...

I put an image file (large) as well as some code to demonstrate the
deserialization problem on the web at:

The ba.master data array just contains that data that were sent across
the network by my master MPI process, and received in the same form by
my slave MPI process.

Now I am not 100% sure yet I identified the problem correctly  --
but I am about 90% confident by now.

Oh, by the way, this is using 3.09.2.

best regards,
Thomas Fischbacher