<?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>Project-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) 2015-01"/>
    <meta name="dc.type" content="Report"/>
    <meta name="dc.language" content="(SCHEME=ISO639-1) en"/>
    <meta name="projet" content="COMPSYS"/>
    <!-- Piwik -->
    <script type="text/javascript" src="/rapportsactivite/piwik.js"></script>
    <noscript><p><img src="//piwik.inria.fr/piwik.php?idsite=49" style="border:0;" alt="" /></p></noscript>
    <!-- End Piwik Code -->
  </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">Project-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="./uid6.html">General Presentation</a></li><li><a href="./uid11.html">Summary of Compsys I Achievements</a></li><li><a href="./uid17.html">Quick View of Compsys II
Achievements and Directions for Compsys III</a></li></ul></div>
      <div class="TdmEntry">Research Program<ul><li><a href="uid21.html&#10;&#9;&#9;  ">Architecture and Compilation Trends</a></li><li><a href="uid36.html&#10;&#9;&#9;  ">Code Analysis, Code Transformations, Code Optimizations</a></li><li><a href="uid39.html&#10;&#9;&#9;  ">Mathematical Tools</a></li></ul></div>
      <div class="TdmEntry">Application Domains<ul><li><a href="uid41.html&#10;&#9;&#9;  ">Compilers for Embedded Computing Systems</a></li><li><a href="uid42.html&#10;&#9;&#9;  ">Users of HPC Platforms and Scientific Computing</a></li></ul></div>
      <div class="TdmEntry">
        <a href="./uid46.html">Highlights of the Year</a>
      </div>
      <div class="TdmEntry">New Software and Platforms<ul><li><a href="uid57.html&#10;&#9;&#9;  ">Aspic</a></li><li><a href="uid61.html&#10;&#9;&#9;  ">DCC</a></li><li><a href="uid64.html&#10;&#9;&#9;  ">Lattifold</a></li><li><a href="uid67.html&#10;&#9;&#9;  ">OpenOrdo</a></li><li><a href="uid69.html&#10;&#9;&#9;  ">PoCo</a></li><li><a href="uid72.html&#10;&#9;&#9;  ">PolyOrdo</a></li><li><a href="uid74.html&#10;&#9;&#9;  ">PPCG-ParamTiling</a></li><li><a href="uid77.html&#10;&#9;&#9;  ">Termite</a></li><li><a href="uid81.html&#10;&#9;&#9;  ">Vaphor</a></li></ul></div>
      <div class="TdmEntry">New Results<ul><li><a href="uid86.html&#10;&#9;&#9;  ">Studying Optimal Spilling in the Light of SSA</a></li><li><a href="uid87.html&#10;&#9;&#9;  ">Symbolic Range of Pointers in C programs</a></li><li><a href="uid88.html&#10;&#9;&#9;  ">Analyzing C Programs with Arrays</a></li><li><a href="uid89.html&#10;&#9;&#9;  ">Termination of C Programs</a></li><li><a href="uid90.html&#10;&#9;&#9;  ">Data-aware Process Networks</a></li><li><a href="uid91.html&#10;&#9;&#9;  ">Mono-parametric Tiling</a></li><li><a href="uid92.html&#10;&#9;&#9;  ">Exact and Approximated Data-Reuse Optimizations
for Tiling with Parametric Sizes</a></li><li><a href="uid93.html&#10;&#9;&#9;  ">Analysis of X10 Programs</a></li><li><a href="uid94.html&#10;&#9;&#9;  ">Revisiting Loop Transformations with X10 Clocks</a></li><li><a href="uid95.html&#10;&#9;&#9;  ">Static Analysis of OpenStream Programs</a></li><li><a href="uid96.html&#10;&#9;&#9;  ">Handling Polynomials for Program Analysis and
Transformation</a></li><li><a href="uid97.html&#10;&#9;&#9;  ">Liveness Analysis in Explicitly-Parallel
Programs</a></li><li><a href="uid98.html&#10;&#9;&#9;  ">Extended Lattice-Based Memory Allocation</a></li><li><a href="uid99.html&#10;&#9;&#9;  ">Stencil Accelerators</a></li><li><a href="uid101.html&#10;&#9;&#9;  ">PolyApps</a></li></ul></div>
      <div class="TdmEntry">Bilateral Contracts and Grants with Industry<ul><li><a href="uid103.html&#10;&#9;&#9;  ">ManycoreLabs Project with Kalray</a></li><li><a href="uid104.html&#10;&#9;&#9;  ">Technological Transfer: XtremLogic Start-Up</a></li></ul></div>
      <div class="TdmEntry">Partnerships and Cooperations<ul><li><a href="uid106.html&#10;&#9;&#9;  ">Regional Initiatives</a></li><li><a href="uid110.html&#10;&#9;&#9;  ">National Initiatives</a></li><li><a href="uid115.html&#10;&#9;&#9;  ">European Initiatives</a></li><li><a href="uid118.html&#10;&#9;&#9;  ">International Initiatives</a></li><li><a href="uid126.html&#10;&#9;&#9;  ">International Research Visitors</a></li></ul></div>
      <div class="TdmEntry">Dissemination<ul><li><a href="uid136.html&#10;&#9;&#9;  ">Promoting Scientific Activities</a></li><li><a href="uid149.html&#10;&#9;&#9;  ">Teaching - Supervision - Juries</a></li><li><a href="uid176.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 
	    2015</a> | <a href="http://www.inria.fr/en/teams/compsys">Presentation of the Project-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="./uid11.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, now 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 is motivated by the
following observations: a) the embedded system market is expanding, among
many factors, one can quote pervasive digitalization, low-cost products,
appliances, etc.; b) research on software for embedded systems is 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, and component
reuse.</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). 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 is 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 is needed. The main expertise in
Compsys for this aspect is in the <i>parallelization</i> and optimization
of <i>regular computations</i>. Hence, we target applications with a
large potential parallelism, but we attempt to integrate our solutions
into the big picture of CAD environments.</p>
        <p>More generally, the aims of Compsys are to develop new compilation and
optimization techniques for the field of embedded computing system design.
This field is large, and Compsys does not intend to cover it in its
entirety. As previously mentioned, we are mostly interested in the automatic
design of accelerators, for example designing a VLSI or FPGA circuit
for a digital filter, and in the development of new back-end compilation strategies for
embedded processors. We study 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
develop are both at source level and at assembly level. A specificity of
Compsys is to mix a solid theoretical basis for all code optimizations we
introduce with algorithmic/software developments. Within Inria, our
project is 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>Most french researchers working on high-performance computing (automatic
parallelization, languages, operating systems, networks) moved to grid
computing at the end of the 90s. 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,
Fabrice Rastello, and finally Christophe Alias joined the group. Then, Tanguy
Risset left Compsys to become a professor at INSA Lyon, and Antoine Fraboulet
and Anne Mignotte moved to other fields of research. As for Laure Gonnord,
after a post-doc in Compsys, she obtained an assistant professor position
in Lille but remained external collaborator of the team for the period
2009-2013 and finally obtained an assistant professor position in Lyon, and
integrated officially the team. About the same time, Fabrice Rastello left while
Tomofumi Yuki was hired as Inria researcher in 2014.</p>
        <p>All present and past members of Compsys have 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. He first spent a year in
Compsys working on array contraction, where he started to develop the tool
Bee, then a year at 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 application 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="uid7"> </a>Code optimization for specific processors (mainly DSP and VLIW
processors);</p>
          </li>
          <li>
            <p class="notaparagraph"><a name="uid8"> </a>Platform-independent loop transformations (including memory
optimization);</p>
          </li>
          <li>
            <p class="notaparagraph"><a name="uid9"> </a>Silicon compilation and hardware/software codesign;</p>
          </li>
          <li>
            <p class="notaparagraph"><a name="uid10"> </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="./uid11.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>
