CamlP3l is a compiler for Caml parallel programs.
The CamlP3l 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, CamlP3l skeleton algebra is embedded in a full-fledged functional programming language, namely Objective Caml.
The skeleton programming approach used in CamlP3l allows three different operational interpretations of the same source program:
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 CamlP3l system combines the OCaml functional programming language together with the P3l skeletons, yielding a powerful parallel programming methodology: CamlP3l 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 CamlP3l 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 CamlP3l compiler.
The CamlP3l 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 CamlP3l.
You need the Objective Caml version 3.11 or higher 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 1.0 of CamlP3l was developed from 2006 to 2009 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).
CamlP3l is based on OCamlP3l 2.03, an evolution of 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.
CamlP3l 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.