Polly – Polyhedral optimization in LLVM
Universitat Passau, Ohio State University
First International Workshop on Polyhedral Compilation Techniques (IMPACT’11), 2011
@InProceedings{grosser2011polly,
author={Tobias Grosser and Hongbin Zheng and Raghesh A and Andreas Simb{"u}rger and Armin Gr{"o}sslinger and Louis-No{"e}l Pouchet},
title={Polly – Polyhedral optimization in LLVM},
booktitle={First International Workshop on Polyhedral Compilation Techniques (IMPACT’11)},
address={Chamonix, France},
month={apr},
year={2011}
}
Various powerful polyhedral techniques exist to optimize computation intensive programs effectively. Applying these techniques on any non-trivial program is still surprisingly difficult and often not as effective as expected. Most polyhedral tools are limited to a specific programming language. Even for this language, relevant code needs to match specific syntax that rarely appears in existing code. It is therefore hard or even impossible to process existing programs automatically. In addition, most tools target C or OpenCL code, which prevents effective communication with compiler internal optimizers. As a result target architecture specific optimizations are either little effective or not approached at all. In this paper we present Polly, a project to enable polyhedral optimizations in LLVM. Polly automatically detects and transforms relevant program parts in a language-independent and syntactically transparent way. Therefore, it supports programs written in most common programming languages and constructs like C++ iterators, goto based loops and pointer arithmetic. Internally it provides a state-of-the-art polyhedral library with full support for Z-polyhedra, advanced data dependency analysis and support for external optimizers. Polly includes integrated SIMD and OpenMP code generation. Through LLVM, machine code for CPUs and GPU accelerators, C source code and even hardware descriptions can be targeted.
January 2, 2012 by hgpu