brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.6 KiB · ea7e137 Raw
81 lines · html
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"2          "http://www.w3.org/TR/html4/strict.dtd">3<!-- Material used from: HTML 4.01 specs: http://www.w3.org/TR/html401/ -->4<html>5<head>6  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">7  <title>Polly - Polyhedral optimizations for LLVM</title>8  <link type="text/css" rel="stylesheet" href="menu.css">9  <link type="text/css" rel="stylesheet" href="content.css">10</head>11<body>12<div id="box">13<!--#include virtual="menu.html.incl"-->14<div id="content">15  <!--*********************************************************************-->16  <h1>Open Projects</h1>17  <!--*********************************************************************-->18 19  LLVM Polly keeps here a list of open projects which each of themselves would20  be a great contribution to Polly. All of these projects are meant to be self21  contained and should take a newcomer around 3-4 months of work. The projects22  we propose are all suitable as <a23  href="https://developers.google.com/open-source/gsoc/">Google Summer of24  Code</a> projects. In case you are interested in a Google Summer of code25  project make sure to reach out via the Polly <a26  href="https://groups.google.com/group/polly-dev">mailing list</a> early to27  discuss your project proposal.28 29  <h3>Integrate Polly with the LLVM vectorizers</h3>30  Polly is not only a self-contained optimizer, but also provides a powerful31  dependence and other program analyses. Currently, these analyses are only used32  for our own optimizations. However, LLVM passes such as the loop vectorizer33  would clearly benefit from having direct access to the available Polly34  analyses. In this project, you would define in collaboration with the LLVM35  community and considering existing dependence analysis interface a new36  dependence analysis interface for Polly that allows passes to directly query37  Polly analysis. Even though this project sounds straightforward at a first38  glance, sorting out how to actually make this happen with the current and39  the new pass managers, understanding how and when to invalidate the Polly40  analysis and if dependence information can be computed on-demand make this41  still a challenging project. If successful, this project may be a great way42  to bring features of Polly to standard -O3 optimizations.43 44  <h3>Register tiling to obtain fast BLAS kernels with Polly</h3>45  Even though Polly is already able to speed up compute kernels significantly,46  when comparing to the best BLAS routines we still are at least one order of47  magnitude off. In this project you will investigate what is needed to close48  this performance gap. Earlier investigations have shown that register tiling49  is one important piece towards this goal. In combination with good tile size50  models and some back-end work, this project is shooting to make common blas51  operations, but also many non-blas kernels competitive with vendor math52  libraries and outperforming the code icc/gcc currently generate.53 54  <h3>Polly support for Julia - First steps</h3>55  <a href="https://julialang.org/">Julia</a> is a new matlab style programming56  language that provides C like performance for scientific computing. Even57  though Julia also translates to LLVM-IR, parsing and optimizing Julia code58  poses new challenges that currently prevent Polly from optimizing Julia59  code despite the clear need for optimizations such as loop-tiling for Julia.60  In this project you will -- starting from first proof-of-concept patches --61  integrate Polly into Julia and ensure that Julia code can benefit from the62  same high-level loop optimizations as todays C code already does. If time63  permits, making Polly's recent bound-check elimination logic work in Julia64  code would allow the optimization of Julia code, even if save out-of-bound65  checking is used.66  <h3>Interactive Polyhedral Web Calculator</h3>67  At the core of Polly we use the isl math library. isl allows us to describe68  loop transformations with relatively simple higher level operations while69  still providing the full expressiveness of integer polyhedra. To understand70  and describe the transformations we are performing it is often very convenient71  to quickly script example transformations in a scripting language like python.72  isl already comes with a python binding generator, with73  pypyjs there is a python interpreter for the web and with emscriptem isl74  itself can also be compiled to javascript. In this project you combine all75  these components to obtain an interactive polyhedral web calculator, that uses76  latest web technology to nicely illustrate the integer polyhedra you obtain.77</div>78</div>79</body>80</html>81