<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/>
    <title>Team:COMPSYS</title>
    <link rel="stylesheet" href="../static/css/raweb.css" type="text/css"/>
    <meta name="description" content="Overall Objectives - General Presentation"/>
    <meta name="dc.title" content="Overall Objectives - General Presentation"/>
    <meta name="dc.subject" content=""/>
    <meta name="dc.publisher" content="INRIA"/>
    <meta name="dc.date" content="(SCHEME=ISO8601) 2016-01"/>
    <meta name="dc.type" content="Report"/>
    <meta name="dc.language" content="(SCHEME=ISO639-1) en"/>
    <meta name="projet" content="COMPSYS"/>
    <script type="text/javascript" src="https://raweb.inria.fr/rapportsactivite/RA2016/static/MathJax/MathJax.js?config=TeX-MML-AM_CHTML">
      <!--MathJax-->
    </script>
  </head>
  <body>
    <div class="tdmdiv">
      <div class="logo">
        <a href="http://www.inria.fr">
          <img style="align:bottom; border:none" src="../static/img/icons/logo_INRIA-coul.jpg" alt="Inria"/>
        </a>
      </div>
      <div class="TdmEntry">
        <div class="tdmentete">
          <a href="uid0.html">Team Compsys</a>
        </div>
        <span>
          <a href="uid1.html">Members</a>
        </span>
      </div>
      <div class="TdmEntry">Overall Objectives<ul><li><a href="./uid3.html">Introduction</a></li><li class="tdmActPage"><a href="./uid5.html">General Presentation</a></li><li><a href="./uid10.html">Summary of Compsys I Achievements</a></li><li><a href="./uid14.html">Summary of Compsys II
Achievements</a></li><li><a href="./uid19.html">Summary of Compsys III
Achievements</a></li></ul></div>
      <div class="TdmEntry">Research Program<ul><li><a href="uid23.html&#10;&#9;&#9;  ">Architecture and Compilation Trends</a></li><li><a href="uid38.html&#10;&#9;&#9;  ">Code Analysis, Code Transformations, Code Optimizations</a></li><li><a href="uid41.html&#10;&#9;&#9;  ">Mathematical Tools</a></li></ul></div>
      <div class="TdmEntry">Application Domains<ul><li><a href="uid43.html&#10;&#9;&#9;  ">Compilers for Embedded Computing Systems</a></li><li><a href="uid44.html&#10;&#9;&#9;  ">Users of HPC Platforms and Scientific Computing</a></li></ul></div>
      <div class="TdmEntry">
        <a href="./uid48.html">Highlights of the Year</a>
      </div>
      <div class="TdmEntry">New Software and Platforms<ul><li><a href="uid67.html&#10;&#9;&#9;  ">Lattifold</a></li><li><a href="uid70.html&#10;&#9;&#9;  ">PolyOrdo</a></li><li><a href="uid72.html&#10;&#9;&#9;  ">OpenOrdo</a></li><li><a href="uid74.html&#10;&#9;&#9;  ">ppcg-paramtiling</a></li></ul></div>
      <div class="TdmEntry">New Results<ul><li><a href="uid78.html&#10;&#9;&#9;  ">Handling Polynomials for Program
Analysis and Transformation</a></li><li><a href="uid79.html&#10;&#9;&#9;  ">Static Analysis of OpenStream Programs</a></li><li><a href="uid80.html&#10;&#9;&#9;  ">Liveness Analysis in Explicitly-Parallel
Programs</a></li><li><a href="uid81.html&#10;&#9;&#9;  ">Extended Lattice-Based Memory Allocation</a></li><li><a href="uid82.html&#10;&#9;&#9;  ">Stencil Accelerators</a></li><li><a href="uid83.html&#10;&#9;&#9;  ">Efficient Mapping of Irregular Memory Accesses on FPGA</a></li><li><a href="uid85.html&#10;&#9;&#9;  ">PolyApps</a></li></ul></div>
      <div class="TdmEntry">Bilateral Contracts and Grants with Industry<ul><li><a href="uid87.html&#10;&#9;&#9;  ">Bilateral Contracts with Industry</a></li><li><a href="uid88.html&#10;&#9;&#9;  ">Bilateral Grants with Industry</a></li></ul></div>
      <div class="TdmEntry">Partnerships and Cooperations<ul><li><a href="uid90.html&#10;&#9;&#9;  ">Regional Initiatives</a></li><li><a href="uid91.html&#10;&#9;&#9;  ">National Initiatives</a></li><li><a href="uid96.html&#10;&#9;&#9;  ">European Initiatives</a></li><li><a href="uid100.html&#10;&#9;&#9;  ">International Initiatives</a></li><li><a href="uid106.html&#10;&#9;&#9;  ">International Research Visitors</a></li></ul></div>
      <div class="TdmEntry">Dissemination<ul><li><a href="uid115.html&#10;&#9;&#9;  ">Promoting Scientific Activities</a></li><li><a href="uid128.html&#10;&#9;&#9;  ">Teaching - Supervision - Juries</a></li><li><a href="uid139.html&#10;&#9;&#9;  ">Popularization</a></li></ul></div>
      <div class="TdmEntry">
        <div>Bibliography</div>
      </div>
      <div class="TdmEntry">
        <ul>
          <li>
            <a id="tdmbibentyear" href="bibliography.html">Publications of the year</a>
          </li>
          <li>
            <a id="tdmbibentfoot" href="bibliography.html#References">References in notes</a>
          </li>
        </ul>
      </div>
    </div>
    <div id="main">
      <div class="mainentete">
        <div id="head_agauche">
          <small><a href="http://www.inria.fr">
	    
	    Inria
	  </a> | <a href="../index.html">
	    
	    Raweb 
	    2016</a> | <a href="http://www.inria.fr/en/teams/compsys">Presentation of the Team COMPSYS</a> | <a href="http://www.ens-lyon.fr/LIP/COMPSYS/index.html.en">COMPSYS Web Site
	  </a></small>
        </div>
        <div id="head_adroite">
          <table class="qrcode">
            <tr>
              <td>
                <a href="compsys.xml">
                  <img style="align:bottom; border:none" alt="XML" src="../static/img/icons/xml_motif.png"/>
                </a>
              </td>
              <td>
                <a href="compsys.pdf">
                  <img style="align:bottom; border:none" alt="PDF" src="IMG/qrcode-compsys-pdf.png"/>
                </a>
              </td>
              <td>
                <a href="../compsys/compsys.epub">
                  <img style="align:bottom; border:none" alt="e-pub" src="IMG/qrcode-compsys-epub.png"/>
                </a>
              </td>
            </tr>
            <tr>
              <td/>
              <td>PDF
</td>
              <td>e-Pub
</td>
            </tr>
          </table>
        </div>
      </div>
      <!--FIN du corps du module-->
      <br/>
      <div class="bottomNavigation">
        <div class="tail_aucentre">
          <a href="./uid3.html" accesskey="P"><img style="align:bottom; border:none" alt="previous" src="../static/img/icons/previous_motif.jpg"/> Previous | </a>
          <a href="./uid0.html" accesskey="U"><img style="align:bottom; border:none" alt="up" src="../static/img/icons/up_motif.jpg"/>  Home</a>
          <a href="./uid10.html" accesskey="N"> | Next <img style="align:bottom; border:none" alt="next" src="../static/img/icons/next_motif.jpg"/></a>
        </div>
        <br/>
      </div>
      <div id="textepage">
        <!--DEBUT2 du corps du module-->
        <h2>Section: 
      Overall Objectives</h2>
        <h3 class="titre3">General Presentation</h3>
        <p>Classically, an embedded computer is a digital system that is part of a
larger system and that is not directly accessible to the user. Examples are
appliances like phones, TV sets, washing machines, game platforms, or even
larger systems like radars and sonars. In particular, this computer is not
programmable in the usual way. Its program, if it exists, is supplied as part
of the manufacturing process and is seldom (or ever) modified thereafter.
As the embedded systems market grows and evolves, this view of embedded
systems is becoming obsolete and tends to be too restrictive. Many aspects of
general-purpose computers apply to modern embedded platforms. Nevertheless,
embedded systems remain characterized by a set of specialized application
domains, rigid constraints (cost, power, efficiency,
heterogeneity), and its market structure. The term <i>embedded system</i> has
been used for naming a wide variety of objects. More precisely, there are two
categories of so-called <i>embedded systems</i>: a) control-oriented and hard
real-time embedded systems (automotive, plant control, airplanes, etc.); b)
compute-intensive embedded systems (signal processing, multi-media, stream
processing) processing large data sets with parallel and/or pipelined
execution. Compsys is primarily concerned with this second type of
embedded systems, referred to as <i>embedded computing systems</i>.</p>
        <p>Today, the industry sells many more embedded processors than general-purpose
processors; the field of embedded systems is one of the few segments of the
computer market where the European industry still has a substantial share,
hence the importance of embedded system research in the European research
initiatives. Our priority towards embedded software was motivated by the
following observations: a) the embedded system market was expanding, among
many factors, one can quote pervasive digitalization, low-cost products,
appliances, etc.; b) research on software for embedded systems was poorly
developed in France, especially if one considers the importance of actors
like Alcatel, STMicroelectronics, Matra, Thales, etc.; c) since embedded systems
increase in complexity, new problems are emerging: computer-aided design,
shorter time-to-market, better reliability, modular design, component
reuse, etc.</p>
        <p>A specific aspect of embedded computing systems is the use of
various kinds of processors, with many particularities (instruction
sets, registers, data and instruction caches, now multiple cores)
and constraints (code size, performance, storage, power). The
development of <i>compilers</i> is crucial for this industry, as
selling a platform without its programming environment and compiler
would not be acceptable. To cope with such a range of different
processors, the development of robust, generic (retargetable),
though efficient compilers is mandatory. Unlike standard compilers
for general-purpose processors, compilers for embedded processors
and hardware accelerators can be more aggressive (i.e., take more
time to optimize) for optimizing some important parts of
applications. This opens a new range of optimizations. Another
interesting aspect is the introduction of platform-independent
intermediate languages, such as Java bytecode, that is compiled
dynamically at runtime (aka just-in-time). Extreme lightweight
compilation mechanisms that run faster and consume less memory have
to be developed. The introduction of intermediate languages such as
OpenCL was also a sign of the need for portability (as well as
productivity) across diverse (if not heterogeneous) platforms. One
of the initial objectives of Compsys was thus to revisit existing
compilation techniques in the context of such embedded computing
systems, to deconstruct some of these techniques, to improve them,
and to develop new techniques taking constraints of embedded
processors and platforms into account.</p>
        <p>As for <i>high-level synthesis</i> (HLS), several compilers/systems have
appeared, after some first unsuccessful industrial attempts in the past.
These tools are mostly based on C or C++ as for example SystemC,
VCC, CatapultC, Altera C2H, Pico-Express, Vivado HLS.
Academic projects also exist (or existed) such as Flex
and Raw
at MIT, Piperench
at Carnegie-Mellon University, Compaan
at the University of Leiden, Ugh/Disydent at LIP6 (Paris), Gaut at Lester
(Bretagne), MMAlpha (Insa-Lyon), and others. In general, the support for
parallelism in HLS tools is minimal, especially in industrial tools. Also,
the basic problem that these projects have to face is that the definition of
performance is more complex than in classical systems. In fact, it is a
multi-criteria optimization problem and one has to take into account the
execution time, the size of the program, the size of the data structures, the
power consumption, the manufacturing cost, etc. The impact of the compiler
on these costs is difficult to assess and control. Success will be the
consequence of a detailed knowledge of all steps of the design process, from
a high-level specification to the chip layout. A strong cooperation of the
compilation and chip design communities was needed. The main expertise in
Compsys for this aspect was in the <i>parallelization</i> and optimization
of <i>regular computations</i>. Hence, we targeted applications with a
large potential parallelism, but we attempted to integrate our solutions
into the big picture of CAD environments.</p>
        <p>More generally, the aims of Compsys were to develop new
compilation and optimization techniques for the field of embedded
computing system design. This field is large, and Compsys did
not intend to cover it in its entirety. As previously mentioned, we
were mostly interested in the automatic design of accelerators, for
example designing a VLSI or FPGA circuit for a digital filter,
or later GPUs and multicores, and in the development of new back-end
compilation strategies for embedded processors. We studied code
transformations that optimize features such as execution time, power
consumption, code and die size, memory constraints, and compiler
reliability. These features are related to embedded systems but some
are not specific to them. The code transformations we developed
were both at source level and at assembly level. A specificity of
Compsys has always been to mix a solid theoretical basis for all
code optimizations we introduced with algorithmic/software
developments. Within Inria, our project was related to the
“architecture and compilation” theme, more precisely code
optimization, as some of the research conducted in Parkas
(previously known as Alchemy), Alf (previously known as
Caps), Camus, and to high-level architectural synthesis, as
some of the research in Cairn.</p>
        <p>At the end of the 90s, most french researchers working on
high-performance computing (automatic parallelization, languages,
operating systems, networks) moved to grid computing. We thought
that applications, industrial needs, and research problems were more
interesting in the design of embedded platforms. Furthermore, we
were convinced that our expertise on high-level code transformations
could be more useful in this field. This is the reason why Tanguy
Risset came to Lyon in 2002 to create the Compsys team with Anne
Mignotte and Alain Darte, before Paul Feautrier, Antoine Fraboulet,
and Fabrice Rastello joined the group.
Before integrating the team, all Compsys members had a background
in automatic parallelization, and high-level program analyses and
transformations. Paul Feautrier was the initiator of the polyhedral
model for program transformations around 1990 and, before coming to
Lyon, started to be more interested in programming models and
optimizations for embedded applications, in particular through
collaborations with Philips. Alain Darte worked on mathematical
tools and algorithmic issues for parallelism extraction in
programs. He became interested in the automatic generation of
hardware accelerators, thanks to his stay at HP Labs in the Pico
project in 2001. Antoine Fraboulet did a PhD with Anne Mignotte –
who was working on high-level synthesis (HLS) – on code and memory
optimizations for embedded applications. Fabrice Rastello did a PhD
on tiling transformations for parallel machines, then was hired by
STMicroelectronics where he worked on assembly code optimizations for
embedded processors. Tanguy Risset worked for a long time on the
synthesis of systolic arrays, being the main architect of the HLS
tool MMAlpha. Christophe Alias did a PhD on algorithm recognition
for program optimizations and parallelization, and two post-docs,
one in Compsys on array contraction, one in Ohio State University
with Prof. P. Sadayappan on memory optimizations. Laure Gonnord did
a PhD on invariant generation and program analysis and became
interested on compilation and code generation since her postdoc in
the team. Finally, Tomofumi Yuki did a PhD on polyhedral programming
environments and optimizations (in Colorado State University, with
Prof. S. Rajopadhye) before a post-doc on polyhedral HLS in the
Cairn team (Rennes).</p>
        <p>To understand why we think automation in our field is highly important, it may be worth to quote
Bob Rau and his colleagues (IEEE Computer, Sep. 2002):</p>
        <p>
          <i>"Engineering disciplines tend to go through fairly predictable phases:
ad hoc, formal and rigorous, and automation. When the discipline is in its
infancy and designers do not yet fully understand its potential problems
and solutions, a rich diversity of poorly understood design techniques
tends to flourish. As understanding grows, designers sacrifice the
flexibility of wild and woolly design for more stylized and restrictive
methodologies that have underpinnings in formalism and rigorous theory.
Once the formalism and theory mature, the designers can automate the design
process. This life cycle has played itself out in disciplines as diverse as
PC board and chip layout and routing, machine language parsing, and logic
synthesis.</i>
        </p>
        <p>
          <i>We believe that the computer architecture discipline is ready to enter the
automation phase. Although the gratification of inventing brave new
architectures will always tempt us, for the most part the focus will shift
to the automatic and speedy design of highly customized computer systems
using well-understood architecture and compiler technologies.”</i>
        </p>
        <p>We share this view of the future of architecture and compilation. Without
targeting too ambitious objectives, we were convinced of two complementary
facts: a) the mathematical tools developed in the past for manipulating
programs in automatic parallelization were lacking in high-level synthesis
and embedded computing optimizations and, even more, they started to be
rediscovered frequently in less mature forms, b) before being able to really
use these techniques in HLS and embedded program optimizations, we needed to
learn a lot from the application side, from the electrical engineering side,
and from the embedded architecture side. Our primary goal was thus twofold:
to increase our knowledge of embedded computing systems and to adapt/extend
code optimization techniques, primarily designed for high performance
computing, to the special case of embedded computing systems. In the initial
Compsys proposal, we proposed four research directions, centered on
compilation methods for embedded applications, both for software and
accelerators design:</p>
        <ul>
          <li>
            <p class="notaparagraph"><a name="uid6"> </a>Code optimization for specific processors (mainly DSP and VLIW
processors);</p>
          </li>
          <li>
            <p class="notaparagraph"><a name="uid7"> </a>Platform-independent loop transformations (including memory
optimization);</p>
          </li>
          <li>
            <p class="notaparagraph"><a name="uid8"> </a>Silicon compilation and hardware/software codesign;</p>
          </li>
          <li>
            <p class="notaparagraph"><a name="uid9"> </a>Development of polyhedral (but not only) optimization tools.</p>
          </li>
        </ul>
        <p>These research activities were primarily supported by a marked investment in
polyhedra manipulation tools and, more generally, solid mathematical and
algorithmic studies, with the aim of constructing operational software tools,
not just theoretical results. Hence the fourth research theme was centered on
the development of these tools.</p>
      </div>
      <!--FIN du corps du module-->
      <br/>
      <div class="bottomNavigation">
        <div class="tail_aucentre">
          <a href="./uid3.html" accesskey="P"><img style="align:bottom; border:none" alt="previous" src="../static/img/icons/previous_motif.jpg"/> Previous | </a>
          <a href="./uid0.html" accesskey="U"><img style="align:bottom; border:none" alt="up" src="../static/img/icons/up_motif.jpg"/>  Home</a>
          <a href="./uid10.html" accesskey="N"> | Next <img style="align:bottom; border:none" alt="next" src="../static/img/icons/next_motif.jpg"/></a>
        </div>
        <br/>
      </div>
    </div>
  </body>
</html>
