<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
          "http://www.w3.org/TR/html4/strict.dtd">
<!-- Material used from: HTML 4.01 specs: http://www.w3.org/TR/html401/ -->
<html>
<head>
  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  <title>Polly - Polyhedral optimizations for LLVM</title>
  <link type="text/css" rel="stylesheet" href="menu.css">
  <link type="text/css" rel="stylesheet" href="content.css">
  <script src="video-js/video.js" type="text/javascript" charset="utf-8"></script>
  <script type="text/javascript">
    VideoJS.setupAllWhenReady();
  </script>

  <!-- Include the VideoJS Stylesheet -->
  <link rel="stylesheet" href="video-js/video-js.css" type="text/css" media="screen" title="Video JS">
</head>
<body>
<div id="box">
<!--#include virtual="menu.html.incl"-->
<div id="content">
  <!--*********************************************************************-->
  <h1>Open Projects</h1>
  <!--*********************************************************************-->

  LLVM Polly keeps here a list of open projects which each of themselves would
  be a great contribution to Polly. All of these projects are meant to be self
  contained and should take a newcomer around 3-4 months of work. The projects
  we propose are all suiteable as <a
  href="https://developers.google.com/open-source/gsoc/">Google Summer of
  Code</a> projects. In case you are interested in a Google Summer of code
  project make sure to reach out via the Polly <a
  href="http://groups.google.com/group/polly-dev">mailing list</a> early to
  discuss your project proposal.

  <h3>Integrate Polly with the LLVM vectorizers</h3>
  Polly is not only a self-contained optimizer, but also provides a powerful
  dependence and other program analyses. Currently, these analyses are only used
  for our own optimizations. However, LLVM passes such as the loop vectorizer
  would clearly benefit from having direct access to the available Polly
  analyses. In this project, you would define in collaboration with the LLVM
  community and considering existing dependence analysis interface a new
  dependence analysis interface for Polly that allows passes to directly query
  Polly analysis. Even though this project sounds straightforward at a first
  glance, sorting out how to actually make this happen with the current and
  the new pass managers, understanding how and when to invalidate the Polly
  analysis and if dependence information can be computed on-demand make this
  still a challenging project. If successful, this project may be a great way
  to bring features of Polly to standard -O3 optimizations.

  <h3>Register tiling to obtain fast BLAS kernels with Polly</h3>
  Even though Polly is already able to speep up compute kernels significantly,
  when comparing to the best BLAS routines we still are at least one order of
  magnitude off. In this project you will investigate what is needed to close
  this performance gap. Earlier investigations have shown that register tiling
  is one important piece towards this goal. In combination with good tile size
  models and some back-end work, this project is shooting to make common blas
  operations, but also many non-blas kernels competitive with vendor math
  libraries and outperforming the code icc/gcc currently generate.

  <h3>Polly support for Julia - First steps</h3>
  <a href="http://julialang.org/">Julia</a> is a new matlab style programming
  language that provides C like performance for scientific computing. Even
  though Julia also translates to LLVM-IR, parsing and optimizing Julia code
  poses new challenges that currently prevent Polly from optimizing Julia
  code despite the clear need for optimizations such as loop-tiling for Julia.
  In this project you will -- starting from first proof-of-concept patches --
  integrate Polly into Julia and ensure that Julia code can benefit from the
  same high-level loop optimizations as todays C code already does. If time
  permits, making Polly's recent bound-check elimination logic work in Julia
  code would allow the optimization of Julia code, even if save out-of-bound
  checking is used.
  <h3>Interactive Polyhedral Web Calculator</h3>
  At the core of Polly we use the isl math library. isl allows us to describe
  loop transformations with relatively simple higher level operations while
  still providing the full expressiveness of integer polyhedra. To understand
  and describe the transformations we are performing it is often very convenient
  to quickly script example transformations in a scripting language like python.
  isl already comes with a python binding generator, with
  pypyjs there is a python interpreter for the web and with emscriptem isl
  itself can also be compiled to javascript. In this project you combine all
  these components to obtain an interactive polyhedral web calculator, that uses
  latest web technology to nicely illustrate the integer polyhedra you obtain.
</div>
</div>
</body>
</html>
