OCamlP3l

This version is obsolete.

Please use the new version CamlP3l 1.0.2

OCamlP3l is a compiler for Caml parallel programs.

The OCamlP3l programming paradigm is skeleton programming. The skeletons encapsulate basic parallel programming patterns in a well understood and structured approach. Based on P3L, the Pisa Parallel Programming Language, OCamlP3l skeleton algebra is embedded in a full-fledged functional programming language, namely Objective Caml.

The skeleton programming approach used in OCamlP3l allows three different operational interpretations of the same source program:

the sequential interpretation which is deterministic, hence easy to understand and debug,

the parallel interpretation using a network of computing nodes run in parallel to speed up the computation,

the graphical interpretation, which is run to obtain a drawing of the parallel computing network deployed at run-time by the parallel interpretation.

Writing parallel programs is not easy, and debugging them is usually a nightmare. To cope with these difficulties, a structured approach to parallel programming using skeletons and templates based compilation techniques has been developed over the past years by several researchers, including the P3L group in Pisa. The OCamlP3l system combines the OCaml functional programming language together with the P3l skeletons, yielding a powerful parallel programming methodology: OCamlP3l allows the programmer to write and debug a sequential version of the program (which, if not easy, could be considered as routine), and then the parallel version is automatically inferred by recompilation of the source program. The invaluable advantage of this approach is staging: the programmer has just to concentrate on the easy part, the sequential programming, relying upon the OCamlP3l system to obtain the hard part, the parallel version. As an additional benefit, the semantics adequacy between the sequential and parallel versions of the program is no more the programmer's concern: it is now the entire responsibility of the OCamlP3l compiler.

The OCamlP3l user's manual is available on line.

You can also download the manual as DVI, PS, and PDF files.

The manual only exists in the English version, volunteers to translate it are warmly welcomed...

Research articles on OCamlP3l.

Installation of OCamlP3l

You need the Objective Caml version 3.09 to compile the sources.

If you find a bug drop a message to ocamlp3l-bugs at inria.fr .

If you want to get in touch with the implementors (to contribute some new ideas or lines of code) write to ocamlp3l at inria.fr .

The version 2.03 of OCamlP3l was developed from 2003 to 2007 by

Roberto Di Cosmo (roberto at dicosmo.org),

Zheng Li (zli at pps.jussieu.fr),

Pierre Weis (Pierre.Weis at inria.fr),

Francois Clement (Francois.Clement at inria.fr).

Acknowledgments

This version of OCamlP3l is based on the first experimental implementation of the P3L language developed in 1997 by

Roberto Di Cosmo (dicosmo at ens.fr),

Marco Danelutto (marcod at di.unipi.it),

Xavier Leroy (Xavier.Leroy at inria.fr),

Susanna Pelagatti (susanna at di.unipi.it).

This development was partly funded by the Action de Recherche Coopérative Moprosco.

OCamlP3l is entirely written in Objective Caml.

This program is free software distributed under the GNU LGPL. See the file COPYING enclosed in the distribution.

Pierre Weis, François Clément.