Version 53 (modified by groessli, 8 years ago) (diff)


The Polyhedral Loop Parallelizer: LooPo

LooPo is a project of the Chair for Programming at the Department of Informatics and Mathematics of the University of Passau. Its purpose is to develop a prototype implementation of loop parallelization methods based on the polyhedral model. LooPo is part of the DFG-funded projects RecuR (Regular Concurrency in Recursions) and, recently, LooPo/HPF (see below).

The first phase, an implementation of space-time mapping methods for nested FOR loops (Loop Parallelization in the Polytope Model), has been under way since March 1994. The second phase started in mid 1996 and gave LooPo the capability of dealing with WHILE loops, FOR loops with unknown bounds at compile time and IF conditions in the loop nest (On the Space-Time Mapping of WHILE-Loops). The third phase started in March 1999 and focused on generating more efficient target code by using HPF as a back end to LooPo. The idea is to combine the higher abstraction level of LooPo - which generates structural information useful for the parallelization - with the machine level optimizations of HPF compilers. We chose ADAPTOR from the GMD at St. Augustin among the existing HPF compilers, since it is free, adaptable and respects the required directives. This phase was sponsored by the DFG under the name LooPo/HPF. Simultaneously, we focused on improving the efficiency of our directly produced parallel code. Recent research efforts in LooPo include code generation for the Grid based on a master-worker scheme and for multicore processors like modern CPUs and GPUs.

LooPo development has been lead by Martin Griebl for many years. Since 2009, the project is managed by Michael Classen. More than 25 students have been involved in the implementation of different modules. The LooPo team can be contacted by e-mail at

Since currently there is no public release available, please contact us via mail for getting LooPo. The distribution contains the complete source code of LooPo, written in C++, with a front-end in Tcl/Tk? and a new frontend in Java (in development). LooPo uses only freely available software to enable a wide-spread use. LooPo is known to run on Linux, Solaris and FreeBSD (and probably other *nix operating systems).

LooPo is being provided "as is" and has been put under the GNU General Public License. It contains the CLooG code generator (by Cédric Bastoul) and relies on externally installed Piplib (required), Polylib (required) and Omega (optional).

Getting LooPo and Related Software

A snapshot of LooPo is available at LooPoSnapshot (there is no released version of LooPo at the moment)

2009-09-30 Initial release of CADGen, a code generator for semi-algebraic domains (i.e., domains with polynomial bounds).

Information for LooPo Developers

Go to CheckingOutAndCommitting for how to checkout and commit using Subversion. LooPo team members/developers can find more information at DevelopingLooPo. See LibrariesForLooPo for a discussion on how Piplib, Polylib, Omega and Barvinok are installed.