guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

object serialization


From: Mario Storti
Subject: object serialization
Date: Sat, 5 Feb 2005 11:40:36 -0600 (CST)

Hi all,

I´m writing a parallel Finite Element
(http://www.cimec.org.ar/petscfem) program and I´m making some
experiments with extending it with Guile. 

The program runs in parallel using Message Passing with the MPI Library
(http://www-unix.mcs.anl.gov/mpi/). I have wrapped some basic MPI
functions (MPI_Comm_rank,MPI_Comm_size,MPI_Recv and MPI_Wend), and it
seems to work fine, but I ask you people if someone knows of a port of
MPI to Guile. 

When running in parallel I had to compile myself the Guile interpreter
since I need that all processes read and interpret the script. This
prevents me to using the interpreter in interactive form (when running
in parallel) because MPI does not broadcast the standard input to the
other processes. I think that this can be fixed by modifiying the REPL,
i.e. when running in interactive mode, in parallel, the REPL in the
master node should be in charge of broadcasting the standard input to
the nodes. Any ideas?

Also, i´m not very happy with the way I do the MPI initialization. I
had to write my own guile interpreter because MPI needs to have accesss
to the argc, argv arguments of main(), so that MPI initialization is
done _always_. I would like rather to have a Scheme `mpi-init' function
called by the user. But, on the other hand I can´t do the finalization
in the `inner_main()´ because I receive a lot of `net_recv' errors
_before_ reaching the MPI_Finalize(). I solved this by writing a Scheme
`mpi-finalize' function and forcing the user to end always her script
with (mpi-finalize). It works but is ugly to me and lacks symmetry
between initialization and finalization of MPI. Any ideas?

//---:---<*>---:---<*>---:---<*>---:---<*>---:---<*>---:---<*>---: 
static void
inner_main (void *closure, int argc, char **argv) {
  MPI_Init(&argc,&argv);
  init_mpi(); // load wrapped MPI functions
  scm_shell(argc, argv);
  MPI_Finalize();
}

//---:---<*>---:---<*>---:---<*>---:---<*>---:---<*>---:---<*>---: 
int main (int argc, char **argv) {
  scm_boot_guile (argc, argv, inner_main, 0);
  return 0; // never reached
}

Third question: I wish to be able to send and receive any Scheme
object. I know that there is some standard form of objetct
serialization (SRFI-10, hash-comma reader extension), but I wish to
hear opinions about this. Any pointers to object serialization in
Guile?

TIA for your help. 

Regards, Mario

=====
-------------------------
Mario Alberto Storti
Centro Internacional de Metodos Computacionales
  en Ingenieria - CIMEC (INTEC/CONICET-UNL)
INTEC, Guemes 3450 - 3000 Santa Fe, Argentina
Tel/Fax: +54-342-4511594, cel: +54-342-156144983
e-mail: address@hidden
http://www.cimec.org.ar/mstorti, http://www.cimec.org.ar
-------------------------

_________________________________________________________
Do You Yahoo!?
Información de Estados Unidos y América Latina, en Yahoo! Noticias.
Visítanos en http://noticias.espanol.yahoo.com




reply via email to

[Prev in Thread] Current Thread [Next in Thread]