Team Alchemy

Overall Objectives
Scientific Foundations
New Results
Contracts and Grants with Industry
Other Grants and Activities

Section: Software

Main software developments

Main software developments

Participants : Veerle Desmet, Sylvain Girbal, Zheng Li, Olivier Temam.

Compilers & program optimization:

Polyhedral transformations in Open64

The WRaP-IT tool (WHIRL Represented as Polyhedra – Interface Tool) is a program analysis and transformation tool implemented on top of the Open64 compiler [66] and of the CLooG code generator [65] . The formal basis of this tool is the polyhedral model for reasoning about loop nests. We introduced a specific polyhedral representation that guarantees strong transformation compositionality properties [83] . This new representation is used to generalize classical loop transformations, to lift the constraints of classical compiler frameworks and enable more advanced iterative optimization and machine learning schemes. WRaP-IT — and its loop nest transformation kernel called URUK (Unified Representation Universal Kernel) — is designed to support a wide range of transformations on industrial codes, starting from the SPEC CPU2000 benchmarks, and recently considering a variety of media and signal processing codes (vision, radar, software radio, video encoding, and DNA-mining in particular, as part of the IST STREP ACOTES, ANR CIGC PARA, and a collaboration with Thales).

Based on this framework, we are also planning an extension of the polyhedral model to handle speculative code generation and transformation of programs with data-dependent control, and a direct search and transformation algorithm based on the Farkas lemma. These developments will take place in the GRAPHITE project: a migration/rewrite of our Open64-based software to the GCC suite. This project is motivated by the maturity — performancewise and infrastructurewise — of GCC 4.x, and on the massive industrial investment taking off on GCC in the recent years, especially in the embedded world. We are heavily involved in fostering research projects around GCC as a common compilation platform, and GRAPHITE is one of those projects.

Grigori Fursin developed the first prototype of an iterative optimization API for GCC, and started using this infrastructure for continuous and adaptive optimization research, in collaboration with the University of Edinburgh.


Participants : Cédric Bastoul, Louis-Noël Pouchet.

Candl is a free software and a library devoted to data dependences computation. It has been developed to be a basic bloc of our optimizing compilation tool chain in the polyhedral model. From a polyhedral representation of a static control part of a program, it is able to compute exactly the set of statement instances in dependence relation. Hence, its output is useful to build program transformations respecting the original program semantics. This tool has been designed to be robust and precise. It implements some usual techniques for data dependence removal, as array privatization or array expansion.


Participants : Cédric Bastoul, Louis-Noël Pouchet, Walid Benabderrahmane.

Clan is a free software and library that translates some particular parts of high level programs written in C, C++, C# or Java into a polyhedral representation (strict or extended to irregular control flow). This representation may be manipulated by other tools to, e.g., achieve complex program restructurations (for optimization, parallelization or any other kind of manipulation). It has been created to avoid tedious and error-prone input file writing for polyhedral tools (such as CLooG, LeTSeE, Candl etc.). Using Clan, the user has to deal with source codes based on C grammar only (as C, C++, C# or Java).


Participants : Cédric Bastoul, Walid Benabderrahmane, Louis-Noël Pouchet.

CLooG is a free software and library to generate code for scanning Z-polyhedra. That is, it finds a code (e.g. in C, FORTRAN...) that reaches each integral point of one or more parameterized polyhedra. CLooG has been originally written to solve the code generation problem for optimizing compilers based on the polytope model. Nevertheless it is used now in various area e.g. to build control automata for high-level synthesis or to find the best polynomial approximation of a function. CLooG may help in any situation where scanning polyhedra matters. While the user has full control on generated code quality, CLooG is designed to avoid control overhead and to produce a very effective code. Irregular extentions have been integrated during 2009 in the irCLooG prototype.


( ). Dataflow dependence for irregular programs (not static control programs). The library is developped by M. Belaoucha, funded by projects Teraops (pole de competitivite systematic) and PARMA (ITEA2).


(modular assembly quality analyzer and optimizer, ). MAQAO analyzes static assembly codes and dynamic application performance. The objective of MAQAO is to help developpers to focus on code fragments that require performance tuning, analyzes compiler optimizations and proposes tuning hints. MAQAO works on Itanium, Pentium architectures.


Participants : Olivier Certner, Yves Lhuillier, Zheng Li, Pierre Palatin, Olivier Temam.

CAPSULE is our component-like parallelization environment. It consists of a run-time system which enacts tasks divisions. The environment is publicly disseminated at , along with several CAPSULE-parallelized benchmarks. CAPSULE was developed through several

Processor simulation:

The project can be summarized as an open and continuous exploration of the architecture design space, and takes the form of a service and web site we have just opened, , hosting the software at the server side.

The goal of this project is twofold: to enable a more rigorous methodology approach in our domain by enabling the comparison of architecture ideas, and to propose a novel architecture design approach which relies on automatic design-space exploration, as an alternative, or at least a complement, to the current design process essentially driven by intuition and experience.

The server-side software is mostly based on UNISIM ( ), one of our large developments in software simulation: it corresponds to an environment on top of SystemC for truly enabling sharing, reuse and comparison, by offering a rigorous communication protocol between modules, architecture interfaces, and a set of simulators.

The project is a joint project with Ghent University, Belgium (Veerle Desmet), and Thales TRT (Sylvain Girbal). I have started the project and I am coordinating the research, though Veerle and Sylvain are doing most of the implementation work; Veerle also has taken an active role in the project and can be considered as co-leading it.


The UNISIM platform has been described in Section  3.1.4 . As of now, besides the simulation engine, the developments include a shared-memory CMP based on the PowerPC 405, functional simulators for the PowerPC 405 (and cycle-level), PowerPC 750, a functional system simulator of the PowerPC 750 capable of booting Linux, 10 different cache modules corresponding to various research works. The following simulators or tools are currently under development: a functional and cycle-level version of the ARM 9 with full-system capability, a distributed-memory CMP based on the Power 405 core, an ST231 VLIW functional and later on cycle-level simulator. During his internship, Taj Khan integrated the CACTI ( ) Power Estimation Model developed at HP Labs in UniSim.


Logo Inria