Uuringu projekti raames alustasid tööd GCC-sse vĂ”imaluse lisamiseks, mis vĂ”imaldab jagada kompileerimisprotsessi mitmeks paralleelselt teostatavaks vooks. Praegu kasutatakse mitu kompilaatoriprotsessi, et kiirendada kokkupanekut mitme tuumaga sĂŒsteemides, kus iga protsess koostab eraldi koodifaili. Uus projekt katsetab kompilaatori tasandil paralleelset töötlemist, mis vĂ”iks potentsiaalselt tĂ”sta efektiivsust mitme tuumaga sĂŒsteemide kasutamisel.
Testimiseks erakordselt paralleeliv GCC haru, mille voogude arvu mÀÀramiseks on pakutud uus parameeter ââparam=num-threads=Nâ. Esialgses etapis on realiseeritud interprotseduursete optimeerimiste viimine eraldi töötlemisvoogudesse, mida kutsutakse iteratiivselt iga funktsiooni jaoks ja mis alluvad hĂ€sti paralleelsetele töötlemistele. Eraldi voogudesse on viidud GIMPLE toimingud, mis vastutavad ĂŒldiselt riistvarast sĂ”ltumatute optimeerimiste eest, hindades funktsioonide vahelist suhtlemist.
JĂ€rgmises etapis plaanitakse viia eraldi voogudesse ka interprotseduurseid RTL-optimeerimisi, mis arvestavad riistvaraplatvormi eripĂ€rasid. PĂ€rast seda plaanitakse realiseerida sisepostede optimeerimise (IPA) paralleelset töötlemist, mis kehtib koodi kohta, mis asub funktsiooni sees, sĂ”ltumatult vĂ€ljakutsumise eripĂ€radest. Olenemata sellest, et praegune kitsaskoht on prĂŒgikoguja, millele on lisatud globaalne lukustus, mis vĂ€listab prĂŒgikogumise operatsioonide toimimise mitme lĂ”ime reĆŸiimis (tulevikus kohandatakse prĂŒgikoguja mitme vooga GCC jooksmiseks).
JĂ”udluse muutuse hindamiseks on koostatud testkomplekt, mis teostab faili gimple-match.c kokkupaneku, mis sisaldab ĂŒle 100 000 koodirea ja 1700 funktsiooni. Testid Intel Core i5-8250U protsessoriga sĂŒsteemis, millel on 4 fĂŒĂŒsilist tuuma ja 8 virtuaalset (Hyperthreading), nĂ€itasid Intra Procedural GIMPLE optimeerimiste tĂ€itmise aja vĂ€henemist 7 sekundilt 4 sekundile 2 voogu kĂ€ivitades ja 3 sekundile 4 voogu kĂ€ivitades, st saavutatud on kiirus, mis on 1,72 ja 2,52 korda tĂ”husam vastavalt. Testid nĂ€itasid ka, et virtuaalsete tuumade kasutamine Hyperthreadingu puhul ei too kaasa jĂ”udluse kasvu.

Koguaegne ehitusaeg on vÀhenenud umbes 10%, kuid prognooside kohaselt vÔimaldab RTL-optimeerimise paralleelne töötlemine saavutada veelgi tÀhelepanuvÀÀrsemaid tulemusi, kuna see etapp vÔtab kompileerimise ajal palju rohkem aega. Umbes pÀrast RTL-i paralleelset töötlemist vÀheneb koguaeg ehitamiseks 1,61 korda. PÀrast seda on veel 5-10% ehitusaega vÔimalik vÀhendada IPA optimeerimiste paralleelse töötlemisega.

Allikas: opennet.ru
