Annotating user-defined abstractions for optimization

Although conventional compilers implement a wide range of optimization techniques, they frequently miss opportunities to optimize the use of abstractions, largely because they are not designed to recognize and use the relevant semantic information about such abstractions. In this position paper, we propose a set of annotations to help communicate high-level semantic information about abstractions to the compiler, thereby enabling the large body of traditional compiler optimizations to be applied to the use of those abstractions. Our annotations explicitly describe properties of abstractions that are needed to guarantee the applicability and profitability of a broad variety of such optimizations, including memoization, reordering, data layout transformations, and inlining and specialization

[1]  Todd L. Veldhuizen,et al.  Expression templates , 1996 .

[2]  Markus Schordan,et al.  A Source-to-Source Architecture for User-Defined Optimizations , 2003, JMLC.

[3]  Qing Yi,et al.  Applying Loop Optimizations to Object-Oriented Abstractions Through General Classification of Array Semantics , 2004, LCPC.

[4]  Sally A. McKee,et al.  Improving the computational intensity of unstructured mesh applications , 2005, ICS '05.

[5]  Ken Kennedy,et al.  Telescoping Languages: A Strategy for Automatic Generation of Scientific Problem-Solving Systems from Annotated Libraries , 2001, J. Parallel Distributed Comput..

[6]  Sibylle Schupp,et al.  User-Extensible Simplification - Type-Based Optimizer Generators , 2001, CC.

[7]  Mitsuhisa Sato,et al.  Design and Implementation of Metalevel Architecture in C++ -- MPC++ Approach -- , 1998 .

[8]  Calvin Lin,et al.  An annotation language for optimizing software libraries , 1999, DSL '99.

[9]  Todd L. Veldhuizen Just When You Thought Your Little Language Was Safe: "Expression Templates" in Java , 2000, GCSE.

[10]  Magne Haveraaen,et al.  Design of the CodeBoost transformation system for domain-specific optimisation of C++ programs , 2003, Proceedings Third IEEE International Workshop on Source Code Analysis and Manipulation.

[11]  Markus Schordan,et al.  Classification and Utilization of Abstractions for Optimization , 2004, ISoLA.

[12]  David A. Padua,et al.  Containers on the Parallelization of General-Purpose Java Programs , 2004, International Journal of Parallel Programming.

[13]  Saman Amarasinghe,et al.  The suif compiler for scalable parallel machines , 1995 .

[14]  Dawson R. Engler,et al.  Incorporating Application Semantics and Control into Compilation , 1997, DSL.

[15]  Shigeru Chiba Macro processing in object-oriented languages , 1998, Proceedings Technology of Object-Oriented Languages. TOOLS 28 (Cat. No.98TB100271).

[16]  Bronis R. de Supinski,et al.  Semantic-Driven Parallelization of Loops Operating on User-Defined Containers , 2003, LCPC.

[17]  Samuel P. Midkiff,et al.  Automatic loop transformations and parallelization for Java , 2000, ICS '00.