Raw File
Tip revision: ad58ae426e7e9200530d18bf439d02657503426c authored by fclement on 23 November 2010, 11:33 UTC
Ignore all generated files.
Tip revision: ad58ae4
<!--#include virtual="beforetitle-eng.html"-->
<!--#include virtual="aftertitle-eng.html"-->

<!-- \$Id: eng.html,v 1.8 2010-04-07 15:25:05 fclement Exp $ -->


  <FONT COLOR="#FF0000">This version is obsolete.</FONT><BR>
  <A HREF="">Please use the new version
    CamlP3l 1.0.2</A>

<TABLE WIDTH="100%">
<!-- <TD ALIGN=CENTER><IMG SRC="camlp3llogo.gif"></TD>-->
     <TR><TD><A HREF="fra.htm">Version française</A></TD></TR>
     <TR><TD><A HREF="#features">Description</A></TD></TR>
     <TR><TD><A HREF="#manual">Manual</A></TD></TR>
     <TR><TD><A HREF="#papers">Articles</A></TD></TR>
     <TR><TD><A HREF="#requirements">Requirements for installation</A></TD></TR>
     <TR><TD><A HREF="#download">Download</A></TD></TR>
     <TR><TD><A HREF="#authors">Authors and Copyright</A></TD></TR>
<!--#include virtual="version.html"-->

<H2 ALIGN=LEFT><A name="features">Description of OCamlP3l</A></H2>

<P>OCamlP3l is a <STRONG>compiler for Caml parallel programs</STRONG>.

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

<P>The skeleton programming approach used in OCamlP3l allows three different
operational interpretations of the same source program:
 <LI>the <EM>sequential</EM> interpretation which is deterministic, hence easy
  to understand and debug,
 <LI>the <EM>parallel</EM> interpretation using a network of computing nodes
  run in parallel to speed up the computation,
 <LI>the <EM>graphical</EM> interpretation, which is run to obtain a drawing of
  the parallel computing network deployed at run-time by the parallel
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.

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

<H2 ALIGN=LEFT><A name="manual">User's manual</A></H2>

<P>The OCamlP3l user's manual is available
<A HREF="UserManual.htm">on line</A>.

<P>You can also download the manual as
<A HREF="UserManual.dvi">DVI</A>, <A HREF="">PS</A>, and
<A HREF="UserManual.pdf">PDF</A> files.

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

<H2 ALIGN=LEFT><A name="papers">Articles</A></H2>

<P><A HREF="papers/eng.htm">Research articles</A> on OCamlP3l.

<H2 ALIGN=LEFT>Installation of OCamlP3l</H2>

<H3 ALIGN=LEFT><A name="requirements">Requirements</A></H3>

<P>You need the Objective Caml version $caml_version to compile the sources.

<H2 ALIGN=LEFT><A name="download">Download</A></H2>


<LI>Simple installation.

  <DT><STRONG>The complete and functional set of OCamlP3l's source
    <A HREF="$(full_version).tgz">using the INRIA ftp server</A></DD>
    <A HREF="ocamlp3l-$(full_version).tgz">using this web server</A></DD>

<LI>Advanced installation

      <DT><STRONG>For the impatient programmers only</STRONG></DT>
        <A HREF="">
        The current CVS version of OCamlP3l</A> is also available on the
        <A HREF="">Caml anonymous CVS repository</A>.


<H2 ALIGN=LEFT><A NAME="lists">Bug reports and mailing list</A></H2>

<P>If you find a bug drop a message to <CODE>ocamlp3l-bugs at</CODE>.

<P>If you want to get in touch with the implementors (to contribute
some new ideas or lines of code) write to <CODE>ocamlp3l at</CODE>.

<H2 ALIGN=LEFT><A NAME="authors">Authors</A></H2>

<P>The version $(package_version) of OCamlP3l was developed from 2003 to 2007

<P>Roberto Di Cosmo (roberto at,<BR>
Zheng Li (zli at,<BR>
Pierre Weis (Pierre.Weis at,<BR>
Francois Clement (Francois.Clement at

<H2 ALIGN=LEFT>Acknowledgments</H2>

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

<P>Roberto Di Cosmo (dicosmo at,<BR>
Marco Danelutto (marcod at,<BR>
Xavier Leroy  (Xavier.Leroy at,<BR>
Susanna Pelagatti (susanna at

<P>This development was partly funded by the
<A HREF="">Action de Recherche
Coopérative Moprosco</A>.

<P>OCamlP3l is entirely written in
<A HREF="">Objective Caml</A>.

<H2 ALIGN=LEFT><A NAME="copyright">Copyright</A></H2>

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

<H2 ALIGN=LEFT><A NAME="contact">Contacts</A></H2>

<A HREF="">Pierre Weis</A>,
<A HREF="">François Clément</A>.

<!--#include virtual="endofpage-eng.html"-->
back to top