Alternativní implementace inlineru v GNU Compiler Collection
Název práce v češtině: | Alternativní implementace inlineru v GNU Compiler Collection |
---|---|
Název v anglickém jazyce: | Alternative inliner implementation in GNU Compiler Collection |
Klíčová slova: | překladač|interprocedurální optimalizace |
Klíčová slova anglicky: | compiler|inter-procedural optimization |
Akademický rok vypsání: | 2024/2025 |
Typ práce: | bakalářská práce |
Jazyk práce: | angličtina |
Ústav: | Katedra aplikované matematiky (32-KAM) |
Vedoucí / školitel: | doc. Mgr. Jan Hubička, Ph.D. |
Řešitel: | skrytý - zadáno vedoucím/školitelem, čeká na schválení garantem |
Datum přihlášení: | 04.07.2024 |
Datum zadání: | 11.07.2024 |
Datum a čas obhajoby: | 06.09.2024 09:00 |
Datum odevzdání elektronické podoby: | 19.07.2024 |
Datum odevzdání tištěné podoby: | 19.07.2024 |
Datum proběhlé obhajoby: | 06.09.2024 |
Oponenti: | Mgr. Martin Jambor |
Zásady pro vypracování |
Inlinování funkcí je nejpodstatnější inter-procedurální optimalizace. Jeho nejsložitější část je heuristika rozhodující, které funkce je potřeba inlinovat, aby vzniklý kód pracoval efektivně a zároveň nebyl přiliš velký.
GCC v současnosti implementuje dva nezávislé inlinery. První pracuje krátce po převodu funkce do mezikódu a má za úkol provádět jednoduchá rozhodnutí, kde dochází ke zrychlení kódu i zmenšení programu. Druhý inliner pracuje během linkování nad celým programem a je implementován jako hladový algoritmus řízený Fibbonaciho haldou. Algorimus sice dává dobré výsledky, ale nelze jej adaptovat pro paralelní výpočty a stává se tak úzkým hrdlem celého překladu. Student se seznámí s problematikou inter-procedurální optimalizace a navrhne nový algoritmus inlineru, který je jednodušší a umožňuje paralelizaci. (Vlastní paralelizace ale není cílem práce.) Algoritmus pak porovná s aktuální implementací a provede studii o možnosti praktického nasazení v GCC. |
Seznam odborné literatury |
Stallman RM. GNU compiler collection internals. Free Software Foundation. 2023.
Glek T, Hubička J. Optimizing real-world applications with GCC Link Time Optimization. In GCC Developers’ Summit 2010 Oct 25 (p. 25). Johnson T, Amini M, Li XD. ThinLTO: scalable and incremental LTO. In: 2017 IEEE/ACM International Symposium on Code Generation and Optimization (CGO) 2017 Feb 4 (pp. 111-121). IEEE. Theodoridis T, Grosser T, Su Z. Understanding and exploiting optimal function inlining. In: Proceedings of the 27th ACM International Conference on Architectural Support for Programming Languages and Operating Systems 2022 Feb 28 (pp. 977-989). Zhao P, Amaral JN. To inline or not to inline? Enhanced inlining decisions. In: Languages and Compilers for Parallel Computing: 16th International Workshop, LCPC 2003, College Station, TX, USA, October 2-4, 2003. Revised Papers 16 2004 (pp. 405-419). Springer Berlin Heidelberg. Chakrabarti DR, Liu SM. Inline analysis: Beyond selection heuristics. InInternational Symposium on Code Generation and Optimization (CGO'06) 2006 Mar 26 (pp. 12-pp). IEEE. |