Files
TheRock/compiler/amd-llvm/polly/www/projects.html
T
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

81 lines
4.6 KiB
HTML

<!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">
</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 suitable 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 speed 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>