This version is obsolete.
Please either use the new GIT repository
or try the new Sklml implementation.

Version française
Requirements for installation
Authors and Copyright

Version 1.0

Description of CamlP3l

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:

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

User's manual

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.

Installation of CamlP3l


You need the Objective Caml version 3.11 or higher to compile the sources.


Bug reports and mailing list

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

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


The version 1.0 of CamlP3l was developed from 2006 to 2009 by

Roberto Di Cosmo (roberto at,
Zheng Li (zli at,
Pierre Weis (Pierre.Weis at,
Francois Clement (Francois.Clement at


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,
Marco Danelutto (marcod at,
Xavier Leroy (Xavier.Leroy at,
Susanna Pelagatti (susanna at

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.

Last modification date: Friday, March 15th, 2013 on lafleche by fclement.
Copyright © 2006 - 2013 INRIA, all rights reserved.