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