[llvm-dev] APOLLO released: runtime speculative polyhedral loop optimizer

Philippe Clauss via llvm-dev llvm-dev at lists.llvm.org
Mon Sep 19 09:40:09 PDT 2016


Dear all,

We are glad to announce the first release of APOLLO, the runtime 
speculative polyhedral loop optimizer and parallelizer. APOLLO is based 
on several innovative strategies, making polyhedral loop analyses and 
transformations applicable to loops that can not be handled using 
compile-time optimizers, e.g. while loops, with memory references 
through pointers or indirections, etc.

While the target loops are running, APOLLO automatically detects phases 
that are polyhedral-compliant (i.e. linear), or quasi-compliant (i.e. 
nonlinear) but modeled using "tubes", and then applies speculatively 
polyhedral code transformations that extract parallelism and optimize 
data locality. The applied transformations are selected thanks to a 
runtime usage of the polyhedral compiler Pluto. The optimized 
transformed codes are generated on-the-fly by using building blocks 
called "code bones", and by invoking the polyhedral code generator CLooG 
and the LLVM JIT compiler.

APOLLO is very easy to use. It is made of a static compiler based on 
Clang-LLVM to prepare the code, and a runtime system orchestrating the 
program execution. It has been released under the BSD 3-Clause Open 
Source License.

The installation package and more details with examples can be found on 
APOLLO's website: http://apollo.gforge.inria.fr

We look forward to your feedbacks!

The APOLLO crew: Juan Manuel Martinez Caamano, Aravind Sukumaran-Rajam, 
Artiom Baloian, Willy Wolff, Philippe Clauss





More information about the llvm-dev mailing list