A generic framework for high-level adaptive program optimization
Compile-time optimization is often limited by a lack of target machine and input data set knowledge. Without this information, compilers may be forced to make conservative assumptions to preserve correctness and to avoid performance degradation. In order to cope with this lack of information at compile-time, adaptive and dynamic systems can be used to perform optimization at runtime when complete knowledge of input and machine parameters is available. ^ This work presents a compiler-supported high-level adaptive optimization system, ADAPT. Users describe, in a domain specific language, optimizations performed by stand-alone optimization tools and backend compiler flags, as well as heuristics for applying these optimizations dynamically at runtime. The ADAPT compiler reads these descriptions and generates application-specific runtime systems to apply the heuristics. To facilitate the usage of existing tools and compilers, overheads are minimized by decoupling optimization from execution. Our system, ADAPT, supports a range of paradigms including dynamic compilation, parameterization and runtime sampling. ^ An overview of the system is presented, an analytical model for qualitative comparison to other approaches is developed, the domain-specific language ADAPT Language (AL) is defined, the design and implementation of a prototype system is de scribed, and this prototype is evaluated by applying several optimization techniques to a suite of benchmarks on two target machines. ADAPT is shown to consistently outperform statically generated executables, improving performance by as much as 70%. ^
Major Professor: Rudolf Eigenmann, Purdue University.
Engineering, Electronics and Electrical|Computer Science