Projekt, mille eesmärk on lisada GCC-le kompileerimisprotsessi paralleelsus

Uurimisprojekti osana Paralleelne GCC Alustatud on tööd GCC-le funktsiooni lisamisega, mis võimaldab kompileerimisprotsessi jagada mitmeks paralleelseks lõimeks. Praegu kasutab utiliit make mitmetuumaliste süsteemide koostamise kiiruse parandamiseks eraldi kompilaatoriprotsesside käivitamist, millest igaüks loob eraldi koodifaili. Uues projektis katsetatakse paralleelsuse pakkumist kompilaatori tasemel, mis võib potentsiaalselt parandada mitmetuumaliste süsteemide jõudlust.

Testimiseks ette valmistatud GCC eraldi paralleelne haru, mis pakub lõimede arvu määramiseks uut parameetrit “—param=num-threads=N”. Algstaadiumis rakendasime protseduuridevaheliste optimeerimiste ülekandmist eraldi lõimedesse, mida nimetatakse iga funktsiooni jaoks tsükliliselt ja mida saab hõlpsasti paralleelstada. Riistvarast sõltumatute optimeerimiste eest vastutavad GIMPLE toimingud, mis hindavad funktsioonide omavahelist koostoimet, on paigutatud eraldi lõimedesse.

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.

Projekt, mille eesmärk on lisada GCC-le kompileerimisprotsessi paralleelsus

Ü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.

Projekt, mille eesmärk on lisada GCC-le kompileerimisprotsessi paralleelsus

Allikas: opennet.ru

Lisa kommentaar