V rámci výskumného projektu
Na testovanie
V ďalšej fáze sa tiež plánuje presunúť interprocedurálne optimalizácie RTL do samostatných vlákien, berúc do úvahy charakteristiky hardvérovej platformy. Potom plánujeme implementovať paralelizáciu intraprocedurálnych optimalizácií (IPA) aplikovaných na kód vnútri funkcie, bez ohľadu na špecifiká volania. Limitujúcim článkom je zatiaľ garbage collector, ktorý pridal globálny zámok, ktorý zakáže operácie garbage collection pri spustení vo viacvláknovom režime (v budúcnosti bude garbage collector prispôsobený na viacvláknové vykonávanie GCC).
Na vyhodnotenie zmien vo výkone bol pripravený testovací balík, ktorý zostavuje súbor gimple-match.c, ktorý obsahuje viac ako 100 tisíc riadkov kódu a 1700 5 funkcií. Testy na systéme s procesorom Intel Core i8250-4U so 8 fyzickými jadrami a 7 virtuálnymi (Hyperthreading) ukázali skrátenie času vykonávania optimalizácií Intra Procedural GIMPLE zo 4 na 2 sekundy pri spustení 3 vlákien a na 4 sekundy pri spustení 1.72 vlákna, t.j. Zvýšenie rýchlosti uvažovanej montážnej fázy sa dosiahlo 2.52-násobne a XNUMX-násobne. Testy tiež ukázali, že používanie virtuálnych jadier s Hyperthreadingom nevedie k zvýšeniu výkonu.
Celkový čas zostavenia sa skrátil približne o 10 %, ale podľa predpovedí umožní paralelizácia optimalizácie RTL dosiahnuť hmatateľnejšie výsledky, pretože táto fáza trvá počas kompilácie podstatne viac času. Približne po paralelizácii RTL sa celkový čas montáže skráti 1.61-krát. Potom bude možné skrátiť čas zostavenia o ďalších 5-10% paralelizáciou optimalizácií IPA.
Zdroj: opennet.ru