Projek om ondersteuning vir parallelle samestellingsproses by GCC te voeg

As deel van 'n navorsingsprojek Parallelle GCC werk het begin om 'n kenmerk by GCC te voeg wat jou toelaat om die samestellingsproses in verskeie parallelle drade te verdeel. Tans, om bouspoed op meerkernstelsels te verbeter, gebruik die make-hulpprogram aparte samestellerprosesse, wat elkeen 'n aparte kodelΓͺer bou. Die nuwe projek eksperimenteer met die verskaffing van parallellisering op samestellervlak, wat moontlik werkverrigting op multikernstelsels sal verbeter.

Vir toetsing voorberei 'n aparte paralleliserende tak van GCC, vir die stel van die aantal drade waarin 'n nuwe parameter "-param=num-threads=N" voorgestel word. In die aanvanklike stadium word interprosedure-optimalisasies na afsonderlike uitvoeringsdrade verskuif, wat siklies vir elke funksie genoem word en hulle goed leen tot parallellisering. GIMPLE-bewerkings word in aparte drade geplaas, wat verantwoordelik is vir hardeware-onafhanklike optimaliserings wat die interaksie van funksies met mekaar evalueer.

In die volgende stadium word daar ook beplan om interprosedurele RTL-optimalisasies in aparte drade te skuif, met inagneming van die eienaardighede van die hardeware-platform. Daarna word beplan om die parallelisering van intra-prosedurele optimaliserings (IPA) wat op die kode binne die funksie toegepas word, te implementeer, ongeag die kenmerke van die oproep. Die beperkende skakel tot dusver is die vullisverwyderaar, wat 'n wΓͺreldwye slot het wat vullisverwydering bedrywighede deaktiveer terwyl dit in multithreaded-modus loop (in die toekoms sal die vullisverwyderaar aangepas word vir GCC multithreading).

Om die verandering in werkverrigting te evalueer, is 'n toetspakket voorberei wat die gimple-match.c-lΓͺer bou, wat meer as 100 duisend reΓ«ls kode en 1700 funksies insluit. Toetse op 'n stelsel met 'n Intel Core i5-8250U SVE met 4 fisiese kerne en 8 virtuele kerne (Hyperthreading) het 'n afname in die uitvoeringstyd van Intra Procedural GIMPLE-optimalisasies van 7 tot 4 sekondes getoon wanneer 2 drade begin word en tot 3 sekondes wanneer begin 4 drade, d.w.s. 'n toename in die spoed van die oorweegse monteerfase met onderskeidelik 1.72 en 2.52 keer is behaal. Toetse het ook getoon dat die gebruik van virtuele kerns met Hyperthreading nie lei tot prestasiewins nie.

Projek om ondersteuning vir parallelle samestellingsproses by GCC te voeg

Die algehele boutyd is met ongeveer 10% verminder, maar parallelisering van RTL-optimalisasies word voorspel om meer tasbare resultate te behaal, aangesien hierdie stadium aansienlik langer neem om saam te stel. Ongeveer na RTL-parallellisering sal die totale monteertyd met 1.61 keer verminder word. Daarna sal dit moontlik wees om boutyd met nog 5-10% te verminder as gevolg van parallelisering van IPA-optimalisasies.

Projek om ondersteuning vir parallelle samestellingsproses by GCC te voeg

Bron: opennet.ru

Voeg 'n opmerking