U sklopu istraživačkog projekta
Za ispitivanje
U sljedećoj fazi također se planira premjestiti interproceduralne RTL optimizacije u zasebne niti, uzimajući u obzir karakteristike hardverske platforme. Nakon toga planiramo implementirati paralelizaciju intraproceduralnih optimizacija (IPA) primijenjenih na kod unutar funkcije, neovisno o specifičnostima poziva. Ograničavajuća veza za sada je skupljač smeća, koji je dodao globalnu bravu koja onemogućuje operacije skupljanja smeća dok se izvode u višenitnom načinu (u budućnosti će skupljač smeća biti prilagođen za višenitno izvršavanje GCC-a).
Za procjenu promjena u performansama pripremljen je testni paket koji sastavlja datoteku gimple-match.c koja uključuje više od 100 tisuća redaka koda i 1700 funkcija. Testovi na sustavu s Intel Core i5-8250U CPU-om s 4 fizičke jezgre i 8 virtualnih (Hyperthreading) pokazali su smanjenje vremena izvršenja Intra Procedural GIMPLE optimizacija sa 7 na 4 sekunde kada se izvode 2 niti i na 3 sekunde kada se izvode 4 niti niti, tj. Povećanje brzine razmatrane faze montaže postignuto je za 1.72 odnosno 2.52 puta. Testovi su također pokazali da korištenje virtualnih jezgri s Hyperthreadingom ne dovodi do povećanja performansi.
Ukupno vrijeme izgradnje smanjeno je za otprilike 10%, ali prema predviđanjima, paraleliziranje RTL optimizacija omogućit će postizanje opipljivijih rezultata, budući da ova faza traje znatno više vremena tijekom kompilacije. Približno nakon RTL paralelizacije, ukupno vrijeme sklapanja će se smanjiti za 1.61 puta. Nakon toga bit će moguće smanjiti vrijeme izgradnje za još 5-10% paraleliziranjem IPA optimizacija.
Izvor: opennet.ru