Meta-Analysis for Code Improving Transformations
Problem Description
Decades of work in the compilers community has resulted in numerous
overlapping techniques for transforming code. These techniques,
however, often interact in ways which are still not
well-understood. For example, it is not uncommon for certain
transformations to create or destroy opportunities to perform other
transformations. Recent work has looked at how to formally specify
existing transformations in such a way that a meta-level analysis tool
can automatically determine when and in what order code improving
transformations should be applied. Recent work has also looked at
numerous heuristics for searching the space of possible
optimizations. For this project you will develop a specification
language for some of the optimizations you have seen in class and then
use this as input to a meta-level program analysis tool which will make
intelligent decisions about how to optimize an input program.
What you need to do
- Develop or modify an existing language for formally specifying some
interesting subset of the code transformations you have learned about in
class.
- Write a compiler tool to take in a formal specification and produces a pass
that correctly applies it.
- Use this tool to perform experiments on the interaction of optimization.
- Time permitting, write a meta-level compiler pass that takes in a program
and a set of transformation specifications and selects an "optimization
strategy" for each procedure in the program either based solely on the
specifications or based on an encoding of what you learned in step 3.
- Write of your work, including your specification language and performance
results.
- Your contact person for this project is James
Ezick
References
- An Approach for Exploring Code Improving
Transformations, Deborah
L. Whitfield and Mary Lou Soffa
- Adaptive Optimization in the Jalapeno JVM, Matthew Arnold, et. al.
- Optimizing for Reduced Code Space using Genetic
Algorithms, Keith
Cooper, et. al.
Last modified: Monday, March 12, 2001 04:10:22 PM
ezick@cs.cornell.edu