Škálovatelná mod/ref analýza v rámci celého programu
Název práce v češtině: | Škálovatelná mod/ref analýza v rámci celého programu |
---|---|
Název v anglickém jazyce: | Scalable whole program mod/ref analysis |
Akademický rok vypsání: | 2018/2019 |
Typ práce: | diplomová práce |
Jazyk práce: | |
Ú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í: | 10.09.2019 |
Datum zadání: | 11.09.2019 |
Zásady pro vypracování |
Implementace link-time optimalizací (LTO) v rámci otevřených překladačů GCC a LLVM pokročila do stavu, kdy je s LTO možné přeložit celý operační systém. V současné době je hlavní výhodou tohoto přístupu inlinování funkcí mezi jednotkami překladu a eliminace mrtvého kódu napříč celým programem. To v případě GCC vede ke znatelnému zmenšení celkové velikosti výsledných binárních souborů.
V návrhu implementace LTO v GCC se ale počítá s dalšími optimalizacemi. Jako perspektivní se jeví analýza mod/ref, kde překladač u každé funkce shrne, které paměťové lokace může číst a modifikovat. Tuto informaci je pak možné použít v rámci lokální optimalizace a zmírnit tak nároky v současné době kladené na inliner. Tato optimalizace může s výhodou použít informaci o typech a přístupových cestách jednotlivých čtení a zápisů a integrovat se tak i s klasickou alias analýzou založenou na typech. Student se seznámí s implementací inter-procedurálních optimalizací v rámci překladače GCC, s implementací mod/ref analýz v ostatních překladačových systémech a s problematikou alias analýzy na základě typů v rámci programů, které kombinují více programovacích jazyků (C, C++, Objective-C, Fortran, Ada). Na základě toho navrhne vlastní analýzu a případně rozšíření do jazyka C nebo C++ ve formě atributů funkcí, jejich parametrů či proměnných. Cílem je vytvořit prakticky použitelný optimalizační průchod. |
Seznam odborné literatury |
GNU project. GCC Internals Manual. Dostupné online https://gcc.gnu.org/onlinedocs/gccint/, 2019
LLVM Language Reference Manual, Dostupné online https://llvm.org/docs/LangRef.html, 2019 Muchnick, Steven. Advanced compiler design implementation. Morgan kaufmann, 1997. Hind, Michael "Pointer analysis: Haven't we solved this problem yet?. Proceedings of the 2001 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering. ACM, 2001. Diwan, Amer, Kathryn S. McKinley, and J. Eliot B. Moss. Type-based alias analysis. ACM Sigplan Notices 33.5 (1998): 106-117. |