Uurimisprojekti osana
Testimiseks
Järgmises etapis on kavas riistvaraplatvormi iseärasusi arvesse võttes viia ka protseduuridevahelised RTL-i optimeerimised eraldi lõimedesse. Pärast seda on meil plaanis rakendada funktsioonisisesele koodile rakendatud protseduurisisese optimeerimise (IPA) paralleelsust, sõltumata kõne spetsiifikast. Piiravaks lüliks on praegu prügikoguja, mis on lisanud globaalse luku, mis keelab prügikoristustoimingud mitme lõimega režiimis töötamise ajal (edaspidi kohandatakse prügikoguja GCC mitme lõimega täitmiseks).
Toimivuse muutuste hindamiseks on koostatud testkomplekt, mis koondab faili gimple-match.c, mis sisaldab üle 100 tuhande koodirea ja 1700 funktsiooni. Nelja füüsilise tuuma ja 5 virtuaalse (hüperlõimega) Intel Core i8250-4U protsessoriga süsteemi testid näitasid protseduurisisese GIMPLE optimeerimise täitmisaja lühenemist 8 sekundilt 7 sekundile, kui käitate 4 lõime ja 2 sekundile, kui käitate 3 niidid, st. Vaadeldava koosteetapi kiiruse tõus saavutati vastavalt 4 ja 1.72 korda. Testid näitasid ka, et virtuaalsete tuumade kasutamine koos Hyperthreadinguga ei suurenda jõudlust.
Üldine ehitusaeg vähenes ligikaudu 10%, kuid prognooside kohaselt võimaldab RTL-i optimeerimiste paralleelsus saavutada käegakatsutavamaid tulemusi, kuna see etapp võtab kompileerimisel oluliselt rohkem aega. Ligikaudu pärast RTL-i paralleelseerimist väheneb kokkupaneku aeg 1.61 korda. Pärast seda on IPA optimeerimiste paralleelseerimisega võimalik ehitusaega veel 5-10% lühendada.
Allikas: opennet.ru