xref: /llvm-project/polly/www/projects.html (revision 5aafc6d58f3405662902cee006be11e599801b88)
16b00ef33STobias Grosser<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
26b00ef33STobias Grosser          "http://www.w3.org/TR/html4/strict.dtd">
36b00ef33STobias Grosser<!-- Material used from: HTML 4.01 specs: http://www.w3.org/TR/html401/ -->
46b00ef33STobias Grosser<html>
56b00ef33STobias Grosser<head>
66b00ef33STobias Grosser  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
76b00ef33STobias Grosser  <title>Polly - Polyhedral optimizations for LLVM</title>
86b00ef33STobias Grosser  <link type="text/css" rel="stylesheet" href="menu.css">
96b00ef33STobias Grosser  <link type="text/css" rel="stylesheet" href="content.css">
106b00ef33STobias Grosser</head>
116b00ef33STobias Grosser<body>
126b00ef33STobias Grosser<div id="box">
136b00ef33STobias Grosser<!--#include virtual="menu.html.incl"-->
146b00ef33STobias Grosser<div id="content">
156b00ef33STobias Grosser  <!--*********************************************************************-->
166b00ef33STobias Grosser  <h1>Open Projects</h1>
176b00ef33STobias Grosser  <!--*********************************************************************-->
186b00ef33STobias Grosser
196b00ef33STobias Grosser  LLVM Polly keeps here a list of open projects which each of themselves would
206b00ef33STobias Grosser  be a great contribution to Polly. All of these projects are meant to be self
216b00ef33STobias Grosser  contained and should take a newcomer around 3-4 months of work. The projects
22ea540bc2SGabriel Ravier  we propose are all suitable as <a
236b00ef33STobias Grosser  href="https://developers.google.com/open-source/gsoc/">Google Summer of
246b00ef33STobias Grosser  Code</a> projects. In case you are interested in a Google Summer of code
256b00ef33STobias Grosser  project make sure to reach out via the Polly <a
262e4f1e11SStephan T. Lavavej  href="https://groups.google.com/group/polly-dev">mailing list</a> early to
276b00ef33STobias Grosser  discuss your project proposal.
286b00ef33STobias Grosser
296b00ef33STobias Grosser  <h3>Integrate Polly with the LLVM vectorizers</h3>
306b00ef33STobias Grosser  Polly is not only a self-contained optimizer, but also provides a powerful
316b00ef33STobias Grosser  dependence and other program analyses. Currently, these analyses are only used
326b00ef33STobias Grosser  for our own optimizations. However, LLVM passes such as the loop vectorizer
336b00ef33STobias Grosser  would clearly benefit from having direct access to the available Polly
346b00ef33STobias Grosser  analyses. In this project, you would define in collaboration with the LLVM
356b00ef33STobias Grosser  community and considering existing dependence analysis interface a new
366b00ef33STobias Grosser  dependence analysis interface for Polly that allows passes to directly query
376b00ef33STobias Grosser  Polly analysis. Even though this project sounds straightforward at a first
386b00ef33STobias Grosser  glance, sorting out how to actually make this happen with the current and
396b00ef33STobias Grosser  the new pass managers, understanding how and when to invalidate the Polly
406b00ef33STobias Grosser  analysis and if dependence information can be computed on-demand make this
416b00ef33STobias Grosser  still a challenging project. If successful, this project may be a great way
426b00ef33STobias Grosser  to bring features of Polly to standard -O3 optimizations.
436b00ef33STobias Grosser
446b00ef33STobias Grosser  <h3>Register tiling to obtain fast BLAS kernels with Polly</h3>
45*5aafc6d5SChristian Clauss  Even though Polly is already able to speed up compute kernels significantly,
466b00ef33STobias Grosser  when comparing to the best BLAS routines we still are at least one order of
476b00ef33STobias Grosser  magnitude off. In this project you will investigate what is needed to close
486b00ef33STobias Grosser  this performance gap. Earlier investigations have shown that register tiling
496b00ef33STobias Grosser  is one important piece towards this goal. In combination with good tile size
506b00ef33STobias Grosser  models and some back-end work, this project is shooting to make common blas
516b00ef33STobias Grosser  operations, but also many non-blas kernels competitive with vendor math
526b00ef33STobias Grosser  libraries and outperforming the code icc/gcc currently generate.
536b00ef33STobias Grosser
546b00ef33STobias Grosser  <h3>Polly support for Julia - First steps</h3>
552e4f1e11SStephan T. Lavavej  <a href="https://julialang.org/">Julia</a> is a new matlab style programming
566b00ef33STobias Grosser  language that provides C like performance for scientific computing. Even
576b00ef33STobias Grosser  though Julia also translates to LLVM-IR, parsing and optimizing Julia code
586b00ef33STobias Grosser  poses new challenges that currently prevent Polly from optimizing Julia
596b00ef33STobias Grosser  code despite the clear need for optimizations such as loop-tiling for Julia.
606b00ef33STobias Grosser  In this project you will -- starting from first proof-of-concept patches --
616b00ef33STobias Grosser  integrate Polly into Julia and ensure that Julia code can benefit from the
626b00ef33STobias Grosser  same high-level loop optimizations as todays C code already does. If time
636b00ef33STobias Grosser  permits, making Polly's recent bound-check elimination logic work in Julia
646b00ef33STobias Grosser  code would allow the optimization of Julia code, even if save out-of-bound
656b00ef33STobias Grosser  checking is used.
666b00ef33STobias Grosser  <h3>Interactive Polyhedral Web Calculator</h3>
676b00ef33STobias Grosser  At the core of Polly we use the isl math library. isl allows us to describe
686b00ef33STobias Grosser  loop transformations with relatively simple higher level operations while
696b00ef33STobias Grosser  still providing the full expressiveness of integer polyhedra. To understand
706b00ef33STobias Grosser  and describe the transformations we are performing it is often very convenient
71b9baae52STobias Grosser  to quickly script example transformations in a scripting language like python.
72b9baae52STobias Grosser  isl already comes with a python binding generator, with
736b00ef33STobias Grosser  pypyjs there is a python interpreter for the web and with emscriptem isl
746b00ef33STobias Grosser  itself can also be compiled to javascript. In this project you combine all
756b00ef33STobias Grosser  these components to obtain an interactive polyhedral web calculator, that uses
766b00ef33STobias Grosser  latest web technology to nicely illustrate the integer polyhedra you obtain.
776b00ef33STobias Grosser</div>
786b00ef33STobias Grosser</div>
796b00ef33STobias Grosser</body>
806b00ef33STobias Grosser</html>
81