V rámci výzkumného projektu
Pro testování
V další fázi se také plánuje přesunout interprocedurální optimalizace RTL do samostatných vláken s přihlédnutím ke zvláštnostem hardwarové platformy. Poté se plánuje implementace paralelizace intraprocedurálních optimalizací (IPA) aplikovaných na kód uvnitř funkce, bez ohledu na vlastnosti volání. Omezujícím článkem je zatím garbage collector, který má globální zámek, který zakáže operace garbage collection při běhu ve vícevláknovém režimu (v budoucnu bude garbage collector uzpůsoben pro GCC multithreading).
Pro vyhodnocení změny výkonu byla připravena testovací sada, která staví soubor gimple-match.c, který obsahuje více než 100 tisíc řádků kódu a 1700 funkcí. Testy na systému s CPU Intel Core i5-8250U se 4 fyzickými jádry a 8 virtuálními jádry (Hyperthreading) ukázaly zkrácení doby provádění optimalizací Intra Procedural GIMPLE ze 7 na 4 sekundy při spuštění 2 vláken a až 3 sekundy při začínající 4 vlákna, tzn. bylo dosaženo zvýšení rychlosti uvažované montážní fáze o 1.72 a 2.52 krát. Testy také ukázaly, že používání virtuálních jader s Hyperthreadingem nevede ke zvýšení výkonu.
Celková doba sestavení byla zkrácena asi o 10 %, ale předpokládá se, že paralelizace optimalizací RTL dosáhne hmatatelnějších výsledků, protože kompilace této fáze trvá podstatně déle. Přibližně po paralelizaci RTL se celková doba montáže zkrátí 1.61krát. Poté bude možné zkrátit dobu sestavení o dalších 5-10% díky paralelizaci optimalizací IPA.
Zdroj: opennet.ru