Nativní kompilace pro funkce v jazyce R
Native compilation for R functions
Typ dokumentu
diplomová prácemaster thesis
Autor
Michal Dufek
Vedoucí práce
Křikava Filip
Oponent práce
Máj Petr
Studijní obor
Systémové programováníStudijní program
InformatikaInstituce přidělující hodnost
katedra teoretické informatikyObhájeno
2025-06-12Práva
A university thesis is a work protected by the Copyright Act. Extracts, copies and transcripts of the thesis are allowed for personal use only and at one?s own expense. The use of thesis should be in compliance with the Copyright Act http://www.mkcr.cz/assets/autorske-pravo/01-3982006.pdf and the citation ethics http://knihovny.cvut.cz/vychova/vskp.htmlVysokoškolská závěrečná práce je dílo chráněné autorským zákonem. Je možné pořizovat z něj na své náklady a pro svoji osobní potřebu výpisy, opisy a rozmnoženiny. Jeho využití musí být v souladu s autorským zákonem http://www.mkcr.cz/assets/autorske-pravo/01-3982006.pdf a citační etikou http://knihovny.cvut.cz/vychova/vskp.html
Metadata
Zobrazit celý záznamAbstrakt
Programovací jazyk R je oblíbený nástroj matematiků a statistiků, kteří ho využívají pro náročné matematické operace a datovou analýzu. Kvůli tomu, že se ale jedná o vyšší programovací jazyk a lze ho spouštět pouze za pomocí AST nebo bytecode interpreteru, můžeme u něj počítat s menším výpočetním výkonem oproti nižším jazykům. Z toho důvodu vznikl projekt výzkumné skupiny PRL-PRG zvaný Rsh. Balíček Rsh se skládá ze dvou částí, nejdříve server, který překládá R bytecode do C, který nakonec nechá přeložit do binárního souboru. Druhá část toho balíčku je klient, který takto zkompilovaný kód může načíst a spustit. V rámci této diplomové práce si vysvětlíme jaké jsou základní struktury programovacího jazyka R, jak pracuje s bytecode, jaká je základní struktura projektu Rsh a následně si projdeme naší implementací tohoto překladače v jazyku C++. Na závěr otestujeme různé přístupy kompilace binárních kódu a to jak už rozdíl kompilátorů gcc a clang, tak i chování binárních souborů při kompilaci s různým nastavením. Výsledky našich pátrání nám ukázaly, že v kompilace s nastavením -O2 se zapnutým agresivním inliningem vykazuje nejlepší výsledky napříč měření rychlosti, velikosti a kompilačního času. Programming language R is a favourite tool of mathematicians and statisticians, who use it for difficult mathematics calculations and data analysis. But since it is a high level programming language and it can be run only using its AST or bytecode interpreter, we can expect its performance to be worse than with lower level programming language. For that reason, the research group PRL-PRG has created a project Rsh. The package Rsh consists of two parts, first the server, that translates R bytecode into C code, and have it compiled into a native binary. The second part of this package is the client side, which can load and call this binary code. In this master thesis, we will explain what are the basic structures of the R programming language, how does it work with bytecode, what is the basic structure of the Rsh project, and then we will inspect our implementation of this translator in C++. At the end we will benchmark various ways of compilation into binaries, comparing both gcc and clang and also comparing different compilation flags. Our results have shown us, that the compilation using flag -O2 and having turned on aggressive inlining, shows us the best result for our use case, by the metrics of performance, size and compilation time.
Kolekce
- Diplomové práce - 18101 [227]