Restricted pointers are coming
C/C++ Users Journal
LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation
Proceedings of the international symposium on Code generation and optimization: feedback-directed and runtime optimization
isl: an integer set library for the polyhedral model
ICMS'10 Proceedings of the Third international congress conference on Mathematical software
Hi-index | 0.00 |
In many applications, such as signal and image processing, most computation time is spent within loops. Therefore, these loops are ideal candidates for performance increase when moving to parallel architectures, such as multi- or many-core systems. However, manual parallelization of existing applications is a complex and cumbersome task. To leverage this, we introduce in this paper an interactive tool based on Polly, LLVM and the linux perf tools. With the help of our tool compute intensive loops can be found and parallelized. Polly is a polyhedral optimizer for LLVM. In the polyhedral model, loops are described in an abstract mathematical way and loop optimizations are mathematical transformations on this abstract description. Loops must meet specific requirements to be representable in the polyhedral model. If only one requirement is not satisfied, the loop cannot be optimized with Polly. Our tool can help here by showing the user all the problems which prevent an automatic optimization with Polly. Such an optimization is only worthwhile for compute intensive loops. To find such loops our tool uses the linux perf tools for performance profiling. Evaluation results for the following two applications are presented: Tiff2rgba and 2D Cross-Correlation image processing algorithm.