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="https://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="https://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 78 to quickly script example transformations in a scripting language like python. 79 isl already comes with a python binding generator, with 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> 88