Version française
Home     About     Download     Resources     Contact us    
Browse thread
CamlMPI: sending marshalled objects
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Thomas Fischbacher <tf@f...>
Subject: Re: [Caml-list] CamlMPI: sending marshalled objects

Olivier,

>>there is an old Caml/MPI interface, written by Xavier himself in 1998.
>
> I've been using this interface some time ago (in 2006). I rewrote it a
> bit to bring it up-to-date with the current conventions.

Good to know. (I'd like to incorporate this into our own code then.)

>>As far as I can see, output_value_to_malloc() actually should be able to
>>serialize virtually any ML object (which does not contain alloc_custom()
>>blocks and similar stuff) to a buffer.
> 
> some custom blocks such as Bigarrays can be serialised too.

Of course.

>>So, (1) what is going on here, and (2) how can I repair it?
>>Is there a quick fix?
> 
> I'm not sure what is going on, I was able to transmit large marshalled
> values IIRC.

What I observe (using some extra debugging code) is that doing a small
problem where this particular send buffer is ~10MB works as expected,
while I reproducibly get a crash in the receiver if I send a ML value
which serializes to a 20 MB buffer. Sending suggests to be okay, though.

> One serious problem in the current code is the treatment of errors.
> Ocamlmpi registers an error handler that raises an OCaml exception.
> However, should an error occur during MPI_Send, the handler is invoked
> with the global mutex released since MPI_Send is between
> enter/leave_blocking_section. Maybe that's what causing the crash.

I do not think this is what gives me trouble. As I said, small problems
work, but large ones (which do the same stuff, only contain a larger
amount of data) do not.

-- 
best regards,
Thomas Fischbacher
t.fischbacher@soton.ac.uk