Optimization Decision Analysis for Graal
Analýza optimalizačních rozhodnutí pro Graal
diploma thesis (DEFENDED)
View/ Open
Permanent link
http://hdl.handle.net/20.500.11956/184169Identifiers
Study Information System: 250682
Collections
- Kvalifikační práce [11242]
Author
Advisor
Consultant
Tůma, Petr
Referee
Petříček, Tomáš
Faculty / Institute
Faculty of Mathematics and Physics
Discipline
Computer Science - Software Systems
Department
Department of Distributed and Dependable Systems
Date of defense
6. 9. 2023
Publisher
Univerzita Karlova, Matematicko-fyzikální fakultaLanguage
English
Grade
Excellent
Keywords (Czech)
překladač|optimalizaceKeywords (English)
compiler|optimizationModerní překladače aplikují při generování kódu sadu optimalizací, jejichž cílem je zrychlit výsledný program. Kombinovaný účinek jednotlivých optima- lizací je však často nepředvídatelný, změny kódu kompilátoru tak mohou jako neúmyslný důsledek zpomalit výsledný program. Vzhledem k velkému počtu kompilačních jednotek a aplikovaných optimalizací je obtížné takové regrese di- agnostikovat. Tato práce pomáhá v diagnostice výkonnostních regresí zachycením opti- malizačních rozhodnutí kompilátoru. Činíme tak reprezentací použitých opti- malizačních fází, optimalizačních rozhodnutí a rozhodnutí o inlinování ve formě stromů, a aplikováním stromové editační vzdálenosti (TED) na tyto stromy k po- loautomatickému odhalování optimalizačních rozdílů. Protože tentýž zdrojový kód může být inlinován v různých kontextech a tedy i různě optimalizován, před- stavujeme rovněž způsob porovnávání optimalizací téhož kódu v různých kon- textech. Uvedené techniky používáme k určení příčin výkonnostních problémů v benchmarcích překladače Graal.
Modern compilers apply a set of optimization passes aiming to speed up the generated code. The combined effect of individual optimizations is often un- predictable. Thus, changes to a compiler's code may hinder the performance of generated code as an unintended consequence. Due to the vast number of compilation units and applied optimizations, it is difficult to diagnose these re- gressions. We propose to solve the problem of diagnosing performance regressions by capturing the compiler's optimization decisions. We do so by representing the applied optimization phases, optimization decisions, and inlining decisions in the form of trees. This thesis introduces an approach utilizing tree edit distance (TED) to detect optimization differences in a semi-automated way. Since the same source code may be inlined in different contexts and optimized differently in each, we also present an approach to compare optimization decisions in dif- ferently inlined code. We employ these techniques to pinpoint the causes of performance problems in various benchmarks of the Graal compiler.