This version is obsolete.
Please use the new version CamlP3l 1.0.2

Version française
Requirements for installation
Authors and Copyright

Version 2.03

Description of OCamlP3l

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:

These three operational semantics are obtained by recompilation of the source program using three different compile-time options of the compiler. The corner stone of this extremely fruitful approach is the adequacy property between the sequential and parallel operational interpretations: they always lead to the same result.

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.

User's manual

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.


Bug reports and mailing list

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).


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.

Last modification date: Wednesday, April 7, 2010 on lamerluche by fclement.
Copyright © 2006 - 2010 INRIA, all rights reserved.