<?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:STORM</title>
    <link rel="stylesheet" href="../static/css/raweb.css" type="text/css"/>
    <meta name="description" content="Research Program - Towards More Abstraction"/>
    <meta name="dc.title" content="Research Program - Towards More Abstraction"/>
    <meta name="dc.subject" content=""/>
    <meta name="dc.publisher" content="INRIA"/>
    <meta name="dc.date" content="(SCHEME=ISO8601) 2017-01"/>
    <meta name="dc.type" content="Report"/>
    <meta name="dc.language" content="(SCHEME=ISO639-1) en"/>
    <meta name="projet" content="STORM"/>
    <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/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">Project-Team Storm</a>
        </div>
        <span>
          <a href="uid1.html">Personnel</a>
        </span>
      </div>
      <div class="TdmEntry">
        <a href="./uid3.html">Overall Objectives</a>
      </div>
      <div class="TdmEntry">Research Program<ul><li><a href="uid8.html&#10;&#9;&#9;  ">Parallel Computing and Architectures</a></li><li><a href="uid9.html&#10;&#9;&#9;  ">Scientific and Societal Stakes</a></li><li class="tdmActPage"><a href="uid10.html&#10;&#9;&#9;  ">Towards More Abstraction</a></li></ul></div>
      <div class="TdmEntry">Application Domains<ul><li><a href="uid12.html&#10;&#9;&#9;  ">Application Domains</a></li></ul></div>
      <div class="TdmEntry">New Software and Platforms<ul><li><a href="uid14.html&#10;&#9;&#9;  ">Chameleon</a></li><li><a href="uid19.html&#10;&#9;&#9;  ">hwloc</a></li><li><a href="uid25.html&#10;&#9;&#9;  ">KaStORS</a></li><li><a href="uid29.html&#10;&#9;&#9;  ">KStar</a></li><li><a href="uid33.html&#10;&#9;&#9;  ">MAQAO</a></li><li><a href="uid36.html&#10;&#9;&#9;  ">StarPU</a></li><li><a href="uid40.html&#10;&#9;&#9;  ">PARCOACH</a></li><li><a href="uid45.html&#10;&#9;&#9;  ">AFF3CT</a></li><li><a href="uid50.html&#10;&#9;&#9;  ">MORSE</a></li></ul></div>
      <div class="TdmEntry">New Results<ul><li><a href="uid54.html&#10;&#9;&#9;  ">Distributed Sequential Task Flow with StarPU</a></li><li><a href="uid55.html&#10;&#9;&#9;  ">Distributed StarPU on top of a High Performance Communication Library</a></li><li><a href="uid56.html&#10;&#9;&#9;  ">Bridging the Gap between a Standard Parallel Language and a Task-based Runtime System</a></li><li><a href="uid57.html&#10;&#9;&#9;  ">Combining a Component Model and a Task Parallelism Model</a></li><li><a href="uid58.html&#10;&#9;&#9;  ">Tackling the granularity problem</a></li><li><a href="uid62.html&#10;&#9;&#9;  ">Interfacing MAQAO and BOAST Frameworks for Kernel Autotuning on ARM Platforms</a></li><li><a href="uid63.html&#10;&#9;&#9;  ">Using heterogeneous memories</a></li><li><a href="uid64.html&#10;&#9;&#9;  ">Rewriting System for Profile-Guided Data Layout Transformations on Binaries</a></li><li><a href="uid65.html&#10;&#9;&#9;  ">Correctness of HPC Applications</a></li><li><a href="uid66.html&#10;&#9;&#9;  ">AMR-Based Dynamic Load Balancing for Molecular Dynamics Simulations</a></li><li><a href="uid67.html&#10;&#9;&#9;  ">Resource-Management Study in HPC Runtime-Stacking Context</a></li></ul></div>
      <div class="TdmEntry">Bilateral Contracts and Grants with Industry<ul><li><a href="uid69.html&#10;&#9;&#9;  ">Bilateral Contracts with Industry</a></li></ul></div>
      <div class="TdmEntry">Partnerships and Cooperations<ul><li><a href="uid72.html&#10;&#9;&#9;  ">National Initiatives</a></li><li><a href="uid100.html&#10;&#9;&#9;  ">European Initiatives</a></li></ul></div>
      <div class="TdmEntry">Dissemination<ul><li><a href="uid159.html&#10;&#9;&#9;  ">Promoting Scientific Activities</a></li><li><a href="uid187.html&#10;&#9;&#9;  ">Teaching - Supervision - Juries</a></li><li><a href="uid240.html&#10;&#9;&#9;  ">Popularization</a></li></ul></div>
      <div class="TdmEntry">
        <div>Bibliography</div>
      </div>
      <div class="TdmEntry">
        <ul>
          <li>
            <a id="tdmbibentmajor" href="bibliography.html">Major publications</a>
          </li>
          <li>
            <a id="tdmbibentyear" href="bibliography.html#year">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 
	    2017</a> | <a href="http://www.inria.fr/en/teams/storm">Presentation of the Project-Team STORM</a> | <a href="https://team.inria.fr/storm/">STORM Web Site
	  </a></small>
        </div>
        <div id="head_adroite">
          <table class="qrcode">
            <tr>
              <td>
                <a href="storm.xml">
                  <img style="align:bottom; border:none" alt="XML" src="../static/img/icons/xml_motif.png"/>
                </a>
              </td>
              <td>
                <a href="storm.pdf">
                  <img style="align:bottom; border:none" alt="PDF" src="IMG/qrcode-storm-pdf.png"/>
                </a>
              </td>
              <td>
                <a href="../storm/storm.epub">
                  <img style="align:bottom; border:none" alt="e-pub" src="IMG/qrcode-storm-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="./uid9.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="./uid12.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">Towards More Abstraction</h3>
        <p>As emphasized by initiatives such as the European Exascale Software
Initiative (EESI), the European Technology Platform for High Performance
Computing (ETP4HPC), or the International Exascale Software Initiative
(IESP), the HPC community needs new programming APIs and languages for
expressing heterogeneous massive parallelism in a way that provides an
abstraction of the system architecture and promotes high performance and
efficiency. The same conclusion holds for mobile, embedded applications that require performance on heterogeneous systems.</p>
        <p>This crucial challenge given by the evolution of parallel architectures
therefore comes from this need to make high performance accessible to
the largest number of developpers, abstracting away architectural
details providing some kind of performance portability. Disruptive uses
of the new technology and groundbreaking new scientific results will not
come from code optimization or task scheduling, but they require the
design of new algorithms that require the technology to be tamed in
order to reach unprecedented levels of performance.</p>
        <p>Runtime systems and numerical libraries are part of the answer, since
they may be seen as building blocks optimized by experts and used as-is
by application developers. The first purpose of runtime systems is
indeed to provide <i>abstraction</i>. Runtime systems offer a uniform
programming interface for a specific subset of hardware (e.g., OpenGL or
DirectX are well-established examples of runtime systems dedicated to
hardware-accelerated graphics) or low-level software entities (e.g.,
POSIX-thread implementations). They are designed as thin user-level
software layers that complement the basic, general purpose functions
provided by the operating system calls. Applications then target these
uniform programming interfaces in a portable manner. Low-level, hardware
dependent details are hidden inside runtime systems. The adaptation of
runtime systems is commonly handled through drivers. The abstraction
provided by runtime systems thus enables portability. Abstraction alone
is however not enough to provide portability of performance, as it does
nothing to leverage low-level-specific features to get increased
performance. Consequently, the second role of runtime systems is to
<i>optimize</i> abstract application requests by dynamically mapping
them onto low-level requests and resources as efficiently as possible.
This mapping process makes use of scheduling algorithms and heuristics
to decide the best actions to take for a given metric and the
application state at a given point in its execution time. This allows
applications to readily benefit from available underlying low-level
capabilities to their full extent without breaking their portability.
Thus, optimization together with abstraction allows runtime systems to
offer portability of performance. Numerical libraries provide sets of
highly optimized kernels for a given field (dense or sparse linear
algebra, FFT, etc.) either in an autonomous fashion or using an
underlying runtime system.</p>
        <p>Application domains cannot resort to libraries for all codes however,
computation patterns such as stencils are a representative example of
such difficulty. The compiler technology plays here a central role, in
managing high level semantics, either through templates, domain specific
languages or annotations. Compiler optimizations, and the same applies
for runtime optimizations, are limited by the level of semantics they
manage. Providing part of the algorithmic knowledge of an application,
for instance knowing that it computes a 5-point stencil and then
performs a dot product, would lead to more opportunities to adapt
parallelism, memory structures, and is a way to leverage the evolving
hardware.</p>
        <p>Compilers and runtime play a crucial role in the future of high
performance applications, by defining the input language for users,
and optimizing/transforming it into high performance code. The
objective of STORM is to propose better interactions between compiler
and runtime and more semantics for both approaches. We recall in the
following section the expertise of the team.</p>
      </div>
      <!--FIN du corps du module-->
      <br/>
      <div class="bottomNavigation">
        <div class="tail_aucentre">
          <a href="./uid9.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="./uid12.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>
