Optimization Decision Analysis for Graal
Analýza optimalizačních rozhodnutí pro Graal
diplomová práce (OBHÁJENO)
Zobrazit/ otevřít
Trvalý odkaz
http://hdl.handle.net/20.500.11956/184169Identifikátory
SIS: 250682
Kolekce
- Kvalifikační práce [11242]
Autor
Vedoucí práce
Konzultant práce
Tůma, Petr
Oponent práce
Petříček, Tomáš
Fakulta / součást
Matematicko-fyzikální fakulta
Obor
Informatika - Softwarové systémy
Katedra / ústav / klinika
Katedra distribuovaných a spolehlivých systémů
Datum obhajoby
6. 9. 2023
Nakladatel
Univerzita Karlova, Matematicko-fyzikální fakultaJazyk
Angličtina
Známka
Výborně
Klíčová slova (česky)
překladač|optimalizaceKlíčová slova (anglicky)
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.