170 likes | 186 Views
Dive into the interplay between compilers and architectures, exploring advanced optimizations, program analysis, and the impact on program performance. Learn how to implement optimization strategies and tackle runtime system interactions.
E N D
Optimizing CompilersCISC 673Spring 2009Course Overview John Cavazos University of Delaware
About Me • John Cavazos <cavazos@cis> • Assistant Professor, CIS • Research • Applying machine learning to hard systems problems • Compiling for advanced architectures • Interplay between compiler and architecture • Nitty-gritty things that happen in compiler back-ends • Rethinking fundamental structure of optimizing compilers
Overview • Class format: • Participatory & interactive • You take notes, read book & papers • Course website: • www.cis.udel.edu/~cavazos/cisc673/
Overview • Grades: • 5% class participation • 10% homework assignments • 35% exams • 50% project • Materials: • Selected papers • Compilers books on reserve in library
Project Stuff • 1 to 2 person teams • Implement optimization/analysis in: • JikesRVM (IBM’s research Java compiler) • Others subject to my approval • Due dates (roughly) • 02/19/09: One-page project description. • 03/05/09: 2-4 page project design. • 04/07/09: Project implementation review. • 05/05/09: Implementation due. • 05/12-19/09: In-class presentations. • 05/19/09: Project report.
Class Topics • Some bread & butter analyses & optimizations • Control flow • Data flow analysis & implementation • Loop Transformations • SSA form • Register allocation • Instruction scheduling • Pointer analysis • Runtime systems (compiler must be aware of these!)
Class Topics • Advanced topics (TBD) • Autotuning • Optimizations for Parallel Programs • Program slicing • Error detection • Run time system interaction
What are Compilers, Anyway? • Compiler: translates program in one language to executable program in other language • Typically lowers abstraction level • E.g., Java/C++ to assembler • Optimizing compiler: • Misnomer! • Optimal compilation intractable • Improves program performance
Compilers Don’t Help Much • Do compilers improve performance anyway? • Proebsting’s law(Todd Proebsting, Microsoft Research): • Difference between optimizing and non-optimizing compiler ~ 4x • Assume compiler technology represents 36 years of progress (actually more) • Compilers double program performance every 18 years! • Not quite Moore’s Law…
Argumentum Ad Absurdum • Compilers don’t help much(Proebsting’s Law) • Don’t use optimizer • Hmmm…
A Big BUT • But: people will not accept massive performance hit for these gains • Compile with optimization! • Still use C and C++!! • Hand-optimize their code!!! • Even write assembler code (gasp)!!!! • Apparently performance does matter… • Multicores makes compilers even MORE important!
Why Compilers Matter • Key part of compiler’s job:make the costs of abstraction reasonable • Remove performance penalty for: • Using objects • Safety checks (e.g., array-bounds) • Writing clean code (e.g., recursion) • Use program analysis to transform code: primary topic of this course
Analysis & The Holy Grail • Other great uses for program analysis: • Static error-checking • Detect information leaks • Avoid security holes • Informing runtime system (e.g., GC) • Even better optimizations! • E.g., locality-improving transformations (“memory wall”) • Holy Grail for compiler research: • Programmer: writes simple but O(2^n) algorithm • Compiler: changes it to O(n log n) (or O(1)!)
Levels of Analysis (in order of increasing detail & complexity) • Local (single-block) [1960’s] • Straight-line code • Simple to analyze; limited impact • Intraprocedural [1970’s – today] • Whole procedure • Dataflow & dependence analysis • Interprocedural [late 1970’s – today] • Whole-program analysis • Tricky: • Very time and space intensive • Hard for some PL’s (e.g., Java)
Optimization =Analysis + Transformation • Key analyses: • Control-flow • if-statements, branches, loops, procedure calls • Data-flow • definitions and uses of variables • Representations: • Control-flow graph • Control-dependence graph • Def/use, use/def chains • SSA (Static Single Assignment)