Побољшање перформанси програма употребом делимично контекстно осетљивих профила : докторска дисертација
Vuletić, Pavle, 1972-
Tomašević, Milo, 1957-
Radivojević, Zaharije, 1978-
Bojić, Dragan, 1967-
Cvetanović, Miloš, 1978-
Vujošević Janičić, Milena, 1980-
Велика предност компајлера који раде превођење у току извршавања програма(JIT преводиоци) јесте доступност профила, који садрже информације о извршавањупрограма, током превођења. Профили усмеравају поредак превођења и оптимизације,које утичу на убрзавање извршавања програма. Превођење пре времена извршавања(AOT превођење) такође може да користи профиле, али добијене засебним извршава-њима програма, намењеним прикупљању профила. Профили садрже метричке податкевезане за програмски контекст. У зависности од дела програмског стека садржаног уконтекстима профила, они могу бити контекстно осетљиви или неосетљиви. Како би сепоједноставио процес прикупљања профила и смањила његова цена, уз очување преци-зности, у многим системима се прикупљају делимично контекстно осетљиви профили,који садрже само суфикс програмског стека. Иако је уложено доста истраживачкихнапора у овој области, и даље постоји значајан потенцијал за унапређење перформансипрограма на основу делимично контекстно осетљивих профила.У овој тези је описан нов алгоритам под називом PRINC за унапређење процесапревођења и оптимизације инлајновања коришћењем делимично контекстно осетљивихпрофила. На основу профила, алгоритам идентификује често извршаване секције кодаи преводи их са већим буџетом за оптимизације, притом не увећавајући значајно ве-личину извршног кода. Ова техника је погодна за имплементацију у оквиру већинеAOT преводилаца, који могу да користе делимично контекстно осетљиве профиле. Ал-горитам PRINC укључује компоненту за детекцију често извршаваног кода како би ре-конструисао значајне целине кода, чијом агресивнијом оптимизацијом се постижу бољеперформансе целокупног програма. Распоред превођења и оптимизација инлајновањасу модификовани тако да користе информације о често извршаваном коду.У тези је формално описан предложени алгоритам, укључујући његове компонентеи хеуристике. Такође, алгоритам PRINC је имплементиран као саставни део савременогAOT преводиоца GraalVM Native Image, а значајни делови имплементације су такођеприказани у раду. Исцрпном евалуацијом предложеног алгоритма над 16 бенчмарка изскупова DaCapo, Scalabench и Renaissance показано је побољшање времена извршава-ња програма између 22% и 40% за 4 бенчмарка и између 2.5% и 10% за 5 бенчмарка.Увећање генерисаног кода варира између 0.8% и 9%, док је у случају 10 бенчмаркаоно испод 2.5%. На основу добијених резултата показан је значајан потенцијал за уна-пређење перформанси, а у оквиру квалитативне евалуације показано је да алгоритамможе бити имплементиран и у другим оптимизационим компајлерима уз адекватно при-лагођавање конкретном окружењу.
Рачунарска техника и информатика - Софтверско инжењерство / Сomputer science and information technology - Software engineering Datum odbrane: 16.01.2024.
Availability of profiling information is a major advantage of just-in-time (JIT)compilation. Profiles guide the compilation order and optimizations, thus substantiallyimproving program performance. Ahead-of-time (AOT) compilation can also utilize profiles,obtained during separate profiling runs of the programs. Profiles can be context-sensitive, i.e.,each profile entry is associated with a call-stack. To ease profile collection and reduce overheads,many systems collect partially context-sensitive profiles, which record only a call-stack suffix.Although there exists a significant portion of prior research work, there is still a lot of potentialfor further program performance improvement using partially context-sensitive profiles.This thesis describes a novel technique that exploits partially context-sensitive profilesto determine which portions of code are hot, and compile them with additional compilationbudget. This technique is applicable to most AOT compilers that can access partially context-sensitive profiles, and its goal is to improve program performance without significantlyincreasing code size. The technique relies on a new hot-code-detection algorithm to reconstructhot regions based on the partial profiles. The compilation ordering and the inlining of thecompiler are modified to exploit the information about the hot code. Proposed algorithm,named PRINC, is formally described, after which follows the description of the production-ready implementation inside GraalVM Native Image, a state-of-the-art AOT compiler forJava. Evaluation of the proposed technique on 16 benchmarks from DaCapo, Scalabench andRenaissance suites shows a performance improvement between 22% and 40% on 4 benchmarks,and between 2.5% and 10% on 5 benchmarks. Code-size increase ranges from 0.8 − 9%, where10 benchmarks exhibit an increase of less than 2.5%. Based on the evaluation results it isproven that there exists a great potential for performance improvement and that the algorithmcan be implemented in other modern compilers with respective algorithm adjustment.
srpski
2023
Ovo delo je licencirano pod uslovima licence
Creative Commons CC BY-NC-ND 3.0 AT - Creative Commons Autorstvo - Nekomercijalno - Bez prerada 3.0 Austria License.
http://creativecommons.org/licenses/by-nc-nd/3.0/at/legalcode
OSNO - Opšta sistematizacija naučnih oblasti, Telekomunikacije. Telegrafija. Telefonija
OSNO - Opšta sistematizacija naučnih oblasti, Softversko inženjerstvo
превођење, AOT преводиоци, распоред превођења, оптимизација инлај- новања, профили, делимично контекстно осетљиви профили
compilation, AOT compilers, compilation schedule, inlining optimization, profiles, partially context-sensitive profiles
OSNO - Opšta sistematizacija naučnih oblasti, Telekomunikacije. Telegrafija. Telefonija
OSNO - Opšta sistematizacija naučnih oblasti, Softversko inženjerstvo