Tobias Grosser | 6b00ef3 | 2016-02-25 14:17:11 | [diff] [blame] | 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 | <script src="video-js/video.js" type="text/javascript" charset="utf-8"></script> |
| 11 | <script type="text/javascript"> |
| 12 | VideoJS.setupAllWhenReady(); |
| 13 | </script> |
| 14 | |
| 15 | <!-- Include the VideoJS Stylesheet --> |
| 16 | <link rel="stylesheet" href="video-js/video-js.css" type="text/css" media="screen" title="Video JS"> |
| 17 | </head> |
| 18 | <body> |
| 19 | <div id="box"> |
| 20 | <!--#include virtual="menu.html.incl"--> |
| 21 | <div id="content"> |
| 22 | <!--*********************************************************************--> |
| 23 | <h1>Open Projects</h1> |
| 24 | <!--*********************************************************************--> |
| 25 | |
| 26 | LLVM Polly keeps here a list of open projects which each of themselves would |
| 27 | be a great contribution to Polly. All of these projects are meant to be self |
| 28 | contained and should take a newcomer around 3-4 months of work. The projects |
| 29 | we propose are all suiteable as <a |
| 30 | href="https://developers.google.com/open-source/gsoc/">Google Summer of |
| 31 | Code</a> projects. In case you are interested in a Google Summer of code |
| 32 | project make sure to reach out via the Polly <a |
| 33 | href="http://groups.google.com/group/polly-dev">mailing list</a> early to |
| 34 | discuss your project proposal. |
| 35 | |
| 36 | <h3>Integrate Polly with the LLVM vectorizers</h3> |
| 37 | Polly is not only a self-contained optimizer, but also provides a powerful |
| 38 | dependence and other program analyses. Currently, these analyses are only used |
| 39 | for our own optimizations. However, LLVM passes such as the loop vectorizer |
| 40 | would clearly benefit from having direct access to the available Polly |
| 41 | analyses. In this project, you would define in collaboration with the LLVM |
| 42 | community and considering existing dependence analysis interface a new |
| 43 | dependence analysis interface for Polly that allows passes to directly query |
| 44 | Polly analysis. Even though this project sounds straightforward at a first |
| 45 | glance, sorting out how to actually make this happen with the current and |
| 46 | the new pass managers, understanding how and when to invalidate the Polly |
| 47 | analysis and if dependence information can be computed on-demand make this |
| 48 | still a challenging project. If successful, this project may be a great way |
| 49 | to bring features of Polly to standard -O3 optimizations. |
| 50 | |
| 51 | <h3>Register tiling to obtain fast BLAS kernels with Polly</h3> |
| 52 | Even though Polly is already able to speep up compute kernels significantly, |
| 53 | when comparing to the best BLAS routines we still are at least one order of |
| 54 | magnitude off. In this project you will investigate what is needed to close |
| 55 | this performance gap. Earlier investigations have shown that register tiling |
| 56 | is one important piece towards this goal. In combination with good tile size |
| 57 | models and some back-end work, this project is shooting to make common blas |
| 58 | operations, but also many non-blas kernels competitive with vendor math |
| 59 | libraries and outperforming the code icc/gcc currently generate. |
| 60 | |
| 61 | <h3>Polly support for Julia - First steps</h3> |
| 62 | <a href="http://julialang.org/">Julia</a> is a new matlab style programming |
| 63 | language that provides C like performance for scientific computing. Even |
| 64 | though Julia also translates to LLVM-IR, parsing and optimizing Julia code |
| 65 | poses new challenges that currently prevent Polly from optimizing Julia |
| 66 | code despite the clear need for optimizations such as loop-tiling for Julia. |
| 67 | In this project you will -- starting from first proof-of-concept patches -- |
| 68 | integrate Polly into Julia and ensure that Julia code can benefit from the |
| 69 | same high-level loop optimizations as todays C code already does. If time |
| 70 | permits, making Polly's recent bound-check elimination logic work in Julia |
| 71 | code would allow the optimization of Julia code, even if save out-of-bound |
| 72 | checking is used. |
| 73 | <h3>Interactive Polyhedral Web Calculator</h3> |
| 74 | At the core of Polly we use the isl math library. isl allows us to describe |
| 75 | loop transformations with relatively simple higher level operations while |
| 76 | still providing the full expressiveness of integer polyhedra. To understand |
| 77 | and describe the transformations we are performing it is often very convenient |
Tobias Grosser | b9baae5 | 2016-02-25 15:21:02 | [diff] [blame] | 78 | to quickly script example transformations in a scripting language like python. |
| 79 | isl already comes with a python binding generator, with |
Tobias Grosser | 6b00ef3 | 2016-02-25 14:17:11 | [diff] [blame] | 80 | pypyjs there is a python interpreter for the web and with emscriptem isl |
| 81 | itself can also be compiled to javascript. In this project you combine all |
| 82 | these components to obtain an interactive polyhedral web calculator, that uses |
| 83 | latest web technology to nicely illustrate the integer polyhedra you obtain. |
| 84 | </div> |
| 85 | </div> |
| 86 | </body> |
| 87 | </html> |