|  | <!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> |