You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
4.9 KiB
88 lines
4.9 KiB
<!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="https://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="https://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>
|