<?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:ROMA</title>
    <link rel="stylesheet" href="../static/css/raweb.css" type="text/css"/>
    <meta name="description" content="Research Program - Compilers and code optimization"/>
    <meta name="dc.title" content="Research Program - Compilers and code optimization"/>
    <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="ROMA"/>
    <!-- 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 Roma</a>
        </div>
        <span>
          <a href="uid1.html">Members</a>
        </span>
      </div>
      <div class="TdmEntry">
        <a href="./uid3.html">Overall Objectives</a>
      </div>
      <div class="TdmEntry">Research Program<ul><li><a href="uid12.html&#10;&#9;&#9;  ">Algorithms for probabilistic environments</a></li><li><a href="uid15.html&#10;&#9;&#9;  ">Platform-aware scheduling strategies</a></li><li><a href="uid18.html&#10;&#9;&#9;  ">High-performance computing and linear algebra</a></li><li class="tdmActPage"><a href="uid25.html&#10;&#9;&#9;  ">Compilers and code optimization</a></li></ul></div>
      <div class="TdmEntry">Application Domains<ul><li><a href="uid31.html&#10;&#9;&#9;  ">Applications of sparse direct solvers</a></li></ul></div>
      <div class="TdmEntry">
        <a href="./uid33.html">Highlights of the Year</a>
      </div>
      <div class="TdmEntry">New Software and Platforms<ul><li><a href="uid35.html&#10;&#9;&#9;  ">MUMPS</a></li><li><a href="uid41.html&#10;&#9;&#9;  ">DCC</a></li><li><a href="uid45.html&#10;&#9;&#9;  ">PoCo</a></li><li><a href="uid49.html&#10;&#9;&#9;  ">Aspic</a></li><li><a href="uid53.html&#10;&#9;&#9;  ">
        Termite
      </a></li><li><a href="uid57.html&#10;&#9;&#9;  ">
        Vaphor
      </a></li></ul></div>
      <div class="TdmEntry">New Results<ul><li><a href="uid62.html&#10;&#9;&#9;  ">Scheduling computational workflows on failure-prone platforms</a></li><li><a href="uid63.html&#10;&#9;&#9;  ">Efficient checkpoint/verification patterns</a></li><li><a href="uid64.html&#10;&#9;&#9;  ">Assessing the impact of partial verifications against silent data corruptions</a></li><li><a href="uid65.html&#10;&#9;&#9;  ">Which Verification for Soft Error Detection?</a></li><li><a href="uid66.html&#10;&#9;&#9;  ">Composing resilience techniques:
ABFT, periodic and incremental checkpointing</a></li><li><a href="uid67.html&#10;&#9;&#9;  ">Voltage Overscaling Algorithms for Energy-Efficient Workflow Computations With Timing Errors </a></li><li><a href="uid68.html&#10;&#9;&#9;  ">Approximation algorithms for energy, reliability and makespan optimization problems</a></li><li><a href="uid69.html&#10;&#9;&#9;  ">Co-scheduling algorithms for high-throughput workload execution</a></li><li><a href="uid70.html&#10;&#9;&#9;  ">Scheduling the I/O of HPC Applications Under Congestion</a></li><li><a href="uid71.html&#10;&#9;&#9;  ">Scheduling trees of malleable tasks for sparse linear algebra</a></li><li><a href="uid72.html&#10;&#9;&#9;  ">Parallel scheduling of task trees with limited memory</a></li><li><a href="uid73.html&#10;&#9;&#9;  ">Locality of Map tasks in MapReduce computations</a></li><li><a href="uid74.html&#10;&#9;&#9;  ">Improving multifrontal methods by means of block low-rank representations</a></li><li><a href="uid75.html&#10;&#9;&#9;  ">Parallel Computation of a subset of entries
of the inverse</a></li><li><a href="uid76.html&#10;&#9;&#9;  ">Efficient 3D frequency-domain seismic modeling with a parallel block low-rank (BLR) direct solver</a></li><li><a href="uid77.html&#10;&#9;&#9;  ">Approximation algorithms for bipartite matching on multicore architectures</a></li><li><a href="uid78.html&#10;&#9;&#9;  ">Hypergraph partitioning for multiple communication cost metrics</a></li><li><a href="uid79.html&#10;&#9;&#9;  ">Comments on the hierarchically structured bin packing problem</a></li><li><a href="uid80.html&#10;&#9;&#9;  ">Semi-two-dimensional partitioning for parallel sparse matrix-vector multiplication</a></li><li><a href="uid81.html&#10;&#9;&#9;  ">Combining backward and forward recovery to cope with silent errors in iterative solvers</a></li><li><a href="uid82.html&#10;&#9;&#9;  ">Load-balanced local time stepping for large-scale wave propagation</a></li><li><a href="uid83.html&#10;&#9;&#9;  ">Fast and high quality topology-aware task mapping</a></li><li><a href="uid84.html&#10;&#9;&#9;  ">Distributed memory tensor computations</a></li><li><a href="uid85.html&#10;&#9;&#9;  ">Bridging the gap between performance and bounds of Cholesky factorization on heterogeneous platforms</a></li><li><a href="uid86.html&#10;&#9;&#9;  ">Assessing the cost of redistribution followed by a computational kernel: Complexity and performance results</a></li><li><a href="uid87.html&#10;&#9;&#9;  ">STS-k: A Multi-level Sparse Triangular Solution Scheme for NUMA Multicores</a></li><li><a href="uid88.html&#10;&#9;&#9;  ">Mono-parametric Tiling</a></li><li><a href="uid89.html&#10;&#9;&#9;  ">Data-aware Process Networks</a></li><li><a href="uid90.html&#10;&#9;&#9;  ">Termination of C programs</a></li><li><a href="uid91.html&#10;&#9;&#9;  ">Analysing C programs with arrays</a></li><li><a href="uid92.html&#10;&#9;&#9;  ">Symbolic Range Analysis of Pointers in C programs</a></li></ul></div>
      <div class="TdmEntry">Bilateral Contracts and Grants with Industry<ul><li><a href="uid94.html&#10;&#9;&#9;  ">Bilateral Contracts with Industry</a></li><li><a href="uid103.html&#10;&#9;&#9;  ">Technological Transfer: XtremLogic Start-Up</a></li></ul></div>
      <div class="TdmEntry">Partnerships and Cooperations<ul><li><a href="uid105.html&#10;&#9;&#9;  ">Regional Initiatives</a></li><li><a href="uid108.html&#10;&#9;&#9;  ">National Initiatives</a></li><li><a href="uid113.html&#10;&#9;&#9;  ">European Initiatives</a></li><li><a href="uid123.html&#10;&#9;&#9;  ">International Initiatives</a></li><li><a href="uid138.html&#10;&#9;&#9;  ">International Research Visitors</a></li></ul></div>
      <div class="TdmEntry">Dissemination<ul><li><a href="uid153.html&#10;&#9;&#9;  ">Promoting Scientific Activities</a></li><li><a href="uid171.html&#10;&#9;&#9;  ">Teaching - Supervision - Juries</a></li><li><a href="uid204.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/roma">Presentation of the Project-Team ROMA</a> | <a href="http://www.ens-lyon.fr/LIP/ROMA/">ROMA Web Site
	  </a></small>
        </div>
        <div id="head_adroite">
          <table class="qrcode">
            <tr>
              <td>
                <a href="roma.xml">
                  <img style="align:bottom; border:none" alt="XML" src="../static/img/icons/xml_motif.png"/>
                </a>
              </td>
              <td>
                <a href="roma.pdf">
                  <img style="align:bottom; border:none" alt="PDF" src="IMG/qrcode-roma-pdf.png"/>
                </a>
              </td>
              <td>
                <a href="../roma/roma.epub">
                  <img style="align:bottom; border:none" alt="e-pub" src="IMG/qrcode-roma-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="./uid18.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="./uid31.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: 
      Research Program</h2>
        <h3 class="titre3">Compilers and code optimization</h3>
        <p>
          <i>Christophe Alias and Laure Gonnord asked to join
the ROMA team temporarily, starting from September 2015. This was accepted by
the team and by Inria. The text below describes their research
domain. The results that they have achieved in 2015 are included in this report.</i>
        </p>
        <p>The advent of parallelism in supercomputers, in embedded systems
(smartphones, plane controllers), and in more classical end-user
computers increases the need for high-level code optimization and
improved compilers. Being able to deal with the complexity of the
upcoming software and hardware is one of the main challenges cited in
the Hipeac Roadmap
which among others cites the two major issues :</p>
        <ul>
          <li>
            <p class="notaparagraph"><a name="uid26"> </a>Enhance the efficiency of the design of embedded systems, and
especially the design of optimized specialized hardware.</p>
          </li>
          <li>
            <p class="notaparagraph"><a name="uid27"> </a>Invent techniques to “expose data movement in applications and
optimize them at runtime and compile time and to investigate
communication-optimized algorithms”.</p>
          </li>
        </ul>
        <p>In particular, the rise of embedded systems and high performance
computers in the last decade has generated new problems in code
optimization, with strong consequences on the research area. The main
challenge is to take advantage of the characteristics of the specific
hardware (generic hardware, or hardware accelerators such as GPUs and
FPGAs). The long-term objective is to provide solutions for the
end-user developers to use at their best the huge opportunities of
these emerging platforms.</p>
        <a name="uid28"/>
        <h4 class="titre4">Compiler algorithms for irregular applications</h4>
        <p>In the last decades, several frameworks has emerged to design
efficient compiler algorithms. The efficiency of all the optimizations
performed in compilers strongly relies on performant <i>static
analyses</i> and <i>intermediate representations</i>. Among these
representations, the polyhedral model <a href="./bibliography.html#roma-2015-bid29">[78]</a>  focus on regular
programs, whose execution trace is predictable statically. The program
and the data accessed are represented with a single mathematical
object endowed with powerful algorithmic techniques for reasoning
about it. Unfortunately, most of the algorithms used in scientific
computing do not fit totally in this category.</p>
        <p>We plan to explore the extensions of these techniques to handle
irregular programs with while loops and complex data structures (such
as trees, and lists). This raises many issues. We cannot represent
finitely all the possible executions traces. Which
approximation/representation to choose? Then, how to adapt existing
techniques on approximated traces while preserving the correctness?
To address these issues, we plan to incorporate new ideas coming from
the abstract interpretation community: control flow, approximations,
and also shape analysis; and from the termination community: rewriting
is one of the major techniques that are able to handle complex data
structures and also recursive programs.</p>
        <a name="uid29"/>
        <h4 class="titre4">High-level synthesis for FPGA</h4>
        <p>The major challenge of high-performance computing (HPC) is to reach
the exaflop at the horizon 2020 with a power consumption bounded to 20
megawatts. To reach that goal, the flop/W must be increased
drastically, which is unlikely to be achieved with the mainstream HPC
technologies.
FPGAs (Field Programmable Gate Arrays) are arrays of programmable logic
cells – almost look-up tables, arithmetic, registers and steering
logic, allowing to “program” a computer architecture. The last FPGA
chip from Altera shows a peak performance of 30 Gflop/W, which is 7
times better than the best architecture of the top-green 500 contest
<a href="./bibliography.html#roma-2015-bid30">[61]</a> . This makes FPGA a key technology to reach the
exaflop.
Unfortunately, programming an FPGA is still a big challenge: the
application must be defined at circuit level and use properly the
logic cells. Hence, there is a strong need for a compiler technology
able to <i>map complex applications specified in a high-level
language</i>. This compiler technology is usually refered as high-level
synthesis (HLS).</p>
        <p>We plan to investigate how to extend the models and the algorithms
developed by the HPC community to map automatically a complex
application to an FPGA. This raises many issues. How to
schedule/allocate the computations and the data on the FPGA to reduce
the data transfers while keeping a high throughput? How to use
optimally the resources of the FPGA while keeping a low critical path?
To address these issues, we plan to develop novel execution models
based on process networks and to extend the algorithms coming
from the HPC compiler community (such as affine scheduling and data
allocation, I/O optimization or source-level code generation) and the
high-level synthesis community (such as datapath generation or control
factorization).</p>
      </div>
      <!--FIN du corps du module-->
      <br/>
      <div class="bottomNavigation">
        <div class="tail_aucentre">
          <a href="./uid18.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="./uid31.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>
