Automatic Parallelization Techniques and the Cetus Source-to-Source Compiler Infrastructure
Tutorial given by Rudi Eigenmann and Sam Midkiff on Sunday, September 12, 2010, 1:30 pm – 5:00 pm, SitzungssaalAbstract:
The increased importance of parallelism has made parallelizing compiler technology, and easy-to-learn and use compiler infrastructures implementing this technology, increasingly important to researchers, developers and students in the fields of computer architecture, compilers and high performance applications. This tutorial will cover basic parallelizing compiler technology, including dependence analysis, dependence breaking transformations, optimizing transformations, and limits on compiler technology. We will then describe the Cetus source-to-source restructuring compiler infrastructure for C programs which is already used by a substantial number of research projects around the world. Cetus is a freely available, open source community compiler developed with support from the National Science Foundation. Its main distinction from related infrastructure efforts is its focus on high-level source-to-source translation for C programs and abstract internal representation. These features have already proven to enable highly efficient design and implementation of new compilation techniques. The tutorial aims to reach a wider audience and provide guidance for the use of the resource and its advanced optimization techniques. These techniques include new symbolic analysis methods, such as range analysis, automatic parallelization for multicores, and optimizations for heterogeneous multicores.Topics Covered:
The first part of the tutorial will consist of an introduction to parallelizing compiler technology. Topics include:- Dependence analysis and its relation to parallelization;
- Dependence eliminating transformations (i.e. privatization and expansion, forward substitution)
- Program optimizations, including vectorization and parallelization, parallelization of fully and partially parallel loops;
- Issues raised by optimizing explicitly parallel programs;
- Limits on compiler technology, and techniques such as cloning and profiling to overcome these.
The second part of the tutorial introduces Cetus, a source-to-source restructuring compiler infrastructure for C programs. Cetus is a community resource developed in support by the National Science Foundation. The infrastructure is available at cetus.ecn.purdue.edu. The tutorial will cover:
- Introduction to Cetus' capabilities;
- Internal abstract program representation;
- Optimization and analysis passes currently available in Cetus, including symbolic analysis methods, such as range analysis, automatic parallelization for multicores, and optimizations for heterogeneous multicores;
- Roadmap of ongoing and future enhancements.