Tutorial PIPS : An Interprocedural, Extensible, Source-to-Source Compiler Infrastructure for Code Transformations and Instrumentations - Mines Paris Accéder directement au contenu
Communication Dans Un Congrès Année : 2011

Tutorial PIPS : An Interprocedural, Extensible, Source-to-Source Compiler Infrastructure for Code Transformations and Instrumentations


A description of the tutorial: The design of hardware platforms has to meet several constraints such as execution time, energy consumption and system cost. In the recent years, Moore's Law has made many innovative architectural designs a reality, resulting in increasingly complex and heterogeneous target systems, and soaring programming costs. To keep up with this situation, today's compilers must handle whole applications, redefine functional boundaries regardless of the APIs used, and target different processors simultaneously, yet their development cost must remain under control. The PIPS compiler framework was designed in 1988 at MINES ParisTech to research interprocedural parallelization. It was based on core ideas that are still relevant today. The PIPS framework: * has been used to generate automatic code distribution, OpenMP-to-MPI code translation, HPF Compiler, automatic C and Fortran to CUDA translation, code modelization for graphic IDEs, genetic algorithm-based optimizations, SIMD (SSE, AVX...) portable code generation and code optimization for FPGA-based accelerators. * provides a flexible and scriptable pass manager; * Supports entire Fortran 77 and C applications, while handling call sites, function definitions and missing library source code; * is easily extensible, via text declarations of all analyses, transformations and key data structures; * ensures global consistency of the various analyses and transformations thanks to these declarations; * uses dynamic typing to support automatic consistency check, allocation / deallocation, copy, iterators and persistance for any object, however complex (the NewGen tool and runtime with XML back-end); * uses sparse linear algebra as a powerful underlying proof mechanism. After 20 years of development and constant improvement, PIPS is a robust source-to-source compiler, providing a large set of program analyses and transformations with around 300 phases. Instead of reimplementing a source-to-source compiler instrastructure from scratch whenever a new programming technology appears, we focused on refactoring libraries, while taking advantage of PIPS extensible consistency manager, Pipsmake, to add new functionalities over time. Moreover, thanks to the source-to-source approach, transformations and analyses can be combined in any way for new purposes, and newcomers to PIPS immediately benefit from past contributions. Recent developments in PIPS have focused on the inlining of library functions, outlining of key code parts and automatic generation of data communications and now all standard program and loop transformations are available. Former activities include interprocedural parallelization, property instrumentation (aliasing, uninitialized variable and buffer overflow detection), code refactoring, etc. PIPS is written mainly in C, has around 15 active contributors and its source code (456 KLOC) is available under the GPL v3 license. It can be downloaded from http://pips4u.org. *This tutorial aims to: * Illustrate usage of PIPS analyses and passes to generate hardware accelerator code in an interactive demo. * briefly survey the functionalities available in PIPS, using examples; * describe key internal data structures; * show how to declare a new transformation within pipsmake; * present how to implement this transformation within the PIPS infrastructure using only a few lines of C code, thanks to Newgen-based data structures and iterators, and existing PIPS libraries. This presentation is based on the real-life experience of people having used PIPS for less than a year, using SVN to contribute from several different geographical locations, as well as source code documentation generated by Doxygen.
Fichier non déposé

Dates et versions

hal-00744411 , version 1 (23-10-2012)


  • HAL Id : hal-00744411 , version 1


Corinne Ancourt, Frédérique Chaussumier-Silber, Serge Guelton, Ronan Keryell. Tutorial PIPS : An Interprocedural, Extensible, Source-to-Source Compiler Infrastructure for Code Transformations and Instrumentations. CGO 2011 : International Symposium on Code Generation and Optimization, Apr 2011, Chamonix, France. ⟨hal-00744411⟩
227 Consultations
0 Téléchargements


Gmail Mastodon Facebook X LinkedIn More