Në kuadër të një projekti hulumtues ka nisur puna për të shtuar në GCC një funksionalitet që lejon ndarjen e procesit të kompilimit në disa procese që ekzekutohen paralelisht. Aktualisht, për të rritur shpejtësinë e ndërtimit në sisteme me shumë bërthama, përdoret nisja e proceseve të veçanta të kompjuterit në nivelin e utilitarit make, secili prej të cilëve kryen ndërtimin e një skedari të veçantë me kod. Projekti i ri eksperimenton me ofrimin e paralelizmit në nivelin e kompilatorit, që potencialisht mund të rrisë efikasitetin e punës në sisteme me shumë bërthama.
PĂ«r testimin njĂ« degĂ« e veçantĂ« pĂ«r paralelizimin e GCC-sĂ«, pĂ«r caktimin e numrit tĂ« proceseve Ă«shtĂ« propozuar njĂ« parametr i ri «âparam=num-threads=N». NĂ« fazĂ«n fillestare Ă«shtĂ« realizuar transferimi nĂ« procese tĂ« veçanta tĂ« optimizimeve ndĂ«rprocedurale, tĂ« cilat thirren ciklikisht pĂ«r çdo funksion dhe janĂ« tĂ« lehta pĂ«r t'u paralelizuar. Operacionet GIMPLE, qĂ« janĂ« pĂ«rgjegjĂ«se pĂ«r optimizimet e pavarura nga hardueri, janĂ« transferuar nĂ« procese tĂ« veçanta, duke vlerĂ«suar ndĂ«rveprimin e funksioneve me njĂ«ra-tjetrĂ«n.
Në fazën e ardhshme, është planifikuar që optimizimet midis procedurave RTL të nxirren gjithashtu në kanale të veçanta, duke marrë parasysh karakteristikat e platformës harduerike. Pas kësaj, planifikohet të realizohet paralelizimi i optimizimeve brenda procedurave (IPA), që aplikohen në kodin brenda funksionit, pa marrë parasysh karakteristikat e thirrjes. Aktualisht, elementi kufizues është mbledhësi i plehrave, në të cilin është shtuar një bllokim global që çaktivizon operacionet e mbledhjes së plehrave gjatë punës në modin shumëfrymor (në të ardhmen, mbledhësi i plehrave do të adaptohet për ekzekutimin shumëfrymor të GCC).
Për të vlerësuar ndryshimin në performancë, është përgatitur një grup testesh që realizon ndërtimin e skedarit gimple-match.c, i cili përmban më shumë se 100,000 rreshta kod dhe 1,700 funksione. Testet në sistemin me CPU Intel Core i5-8250U me 4 shkëmbinj fizikë dhe 8 virtualë (Hyperthreading) treguan një ulje të kohës së ekzekutimit të optimizimeve Intra Procedural GIMPLE nga 7 në 4 sekonda kur lançohet 2 procese dhe deri në 3 sekonda kur lançohet 4 procese, domethënë është arritur një rritje e shpejtësisë së këtij etapi të ndërtimit me 1.72 dhe 2.52 herë, respektivisht. Testet gjithashtu treguan se përdorimi i bërthamave virtuale gjatë Hyperthreading-it nuk sjell një rritje të performancës.

Koha totale e ndërtimit është reduktuar përafërsisht me 10%, por sipas parashikimeve, shpërndarja e optimizimeve RTL do të lejojë arritjen e rezultateve më të dukshme, pasi kjo fazë merr ndjeshëm më shumë kohë gjatë kompilimit. Përafërsisht pas shpërndarjes së RTL-të, koha totale e ndërtimit do të reduktohet me 1.61 herë. Pas kësaj, koha e ndërtimit mund të reduktohet edhe me 5-10% përmes shpërndarjes së optimizimeve IPA.

Burimi: opennet.ru
