PIPS: Summary of features

Interprocedural Parallelizer for Scientific Programs

PIPS is an automatic parallelizer for scientific programs. It takes as input Fortran 77 codes and emphasizes interprocedural techniques for program analyses. PIPS specific interprocedural analyses are precondition and array region computations. PIPS is based on linear algebra techniques for analyses, e.g. dependence testing, as well as for code generation, e.g. loop interchange or tiling.

Analyses and transformations are driven by a make system, (pipsmake) which enforces consistency across analyses and modules, and results are stored for future interprocedural use in a database by a resource manager, (pipsdbm). The compiler is made of phases that are called on demand to perform the analyses or transformations required by the user.


PIPS Overall Structure

Three user interfaces are available: a Shell interface (Pips), a line interface (Tpips) and an X-window interface (Wpips) which is the best suited for users. Emacs also can be used to display Fotran code, transformed or not (Epips).

Many interprocedural program analyses are implemented in PIPS. The result of these analyses can be displayed in various forms. For instance:

Also many program transformations are available, such as:

PIPS Compilers:

PIPS is built on top of two tools. The first one is Newgen which manages data structures a la IDL. It provides basic manipulation functions for data structures described in a declaration file. It supports persistent data and type hierarchies.

The second tool is the Linear C3 library which handles vectors, matrices, affine constraints, generating systems and polyhedra and provides basic linear programming facilities. The algorithms used are designed for integer and/or rational coefficients. This library is extensively used for analyses such as dependence test, precondition and region computation, and for transformations, such as tiling. The Linear C3 library is a joint project with IRISA and PRISM laboratories, partially funded by CNRS. IRISA contributed an implementation of Chernikova algorithm and PRISM a C implementation of PIP (Parametric Integer Programming).

Seven years after its inception, PIPS as a workbench is still alive and well. PIPS provides a robust infrastructure for new experiments in compilation, program analysis, optimisation, transformation and parallelization. New code can be developped externally by reading complex data structures in PIPS interprocedural database.

PIPS can also be used as a reverse engineering tool. Region analyses provide useful summaries of procedure effects, while precondition-based partial evaluation and dead code elimination reduce code size.

PIPS is written in (ANSI) C and developped under SUNOS 4.1.4. PIPS can also be used under SOLARIS 2. It is available on request.

URL: http://www.cri.mines-paristech.fr/pips