Projekt om stipe ta te foegjen foar parallelisaasje fan it kompilaasjeproses oan GCC

As ûnderdiel fan in ûndersyksprojekt Parallel GCC It wurk is begon om in funksje ta te foegjen oan GCC wêrtroch it kompilaasjeproses yn ferskate parallelle triedden kin wurde ferdield. Op it stuit, om de bousnelheid op multi-core systemen te ferheegjen, brûkt it make-hulpprogramma de lansearring fan aparte kompilerprosessen, dy't elk in apart koadebestân bouwt. It nije projekt eksperimintearret mei it leverjen fan parallelisaasje op kompilernivo, wat mooglik de prestaasjes ferbetterje op multi-core systemen.

Foar testen taret in aparte parallelisearjende tûke fan GCC, dy't in nije parameter "-param=num-threads=N" biedt om it oantal triedden yn te stellen. Yn 'e earste faze hawwe wy de oerdracht fan ynterprosedurele optimisaasjes ymplementearre yn aparte triedden, dy't foar elke funksje cyclysk wurde neamd en kinne maklik parallelisearre wurde. GIMPLE-operaasjes ferantwurdlik foar hardware-ûnôfhinklike optimisaasjes dy't de ynteraksje fan funksjes mei elkoar evaluearje, wurde yn aparte triedden pleatst.

Op it folgjende poadium is it ek pland om ynterprosedurale RTL-optimisaasjes yn aparte threaden te ferpleatsen, rekken hâldend mei de skaaimerken fan it hardwareplatfoarm. Dêrnei binne wy ​​fan plan om parallelisaasje fan intraprosedurale optimisaasjes (IPA) út te fieren dy't tapast wurde op 'e koade yn' e funksje, nettsjinsteande de spesifikaasjes fan 'e oprop. De beheinende keppeling foar no is de garbage collector, dy't in wrâldwide slûs tafoege hat dy't garbage collection operaasjes útskeakelje wylst se rinne yn multi-threaded modus (yn 'e takomst sil de garbage collector oanpast wurde foar multi-threaded útfiering fan GCC).

Om feroarings yn prestaasjes te evaluearjen, is in testsuite taret dy't de gimple-match.c-bestân gearstalt, dy't mear as 100 tûzen rigels koade en 1700 funksjes omfettet. Tests op in systeem mei in Intel Core i5-8250U CPU mei 4 fysike kearnen en 8 firtuele (Hyperthreading) lieten in fermindering sjen yn 'e útfieringstiid fan Intra Procedural GIMPLE-optimisaasjes fan 7 nei 4 sekonden by it útfieren fan 2 threads en nei 3 sekonden by it útfieren fan 4 triedden, d.w.s. In ferheging fan 'e snelheid fan' e gearstalling poadium ûnder behanneling waard berikt troch 1.72 en 2.52 kear, respektivelik. Tests lieten ek sjen dat it brûken fan firtuele kearnen mei Hyperthreading net liedt ta ferhege prestaasjes.

Projekt om stipe ta te foegjen foar parallelisaasje fan it kompilaasjeproses oan GCC

De totale boutiid waard fermindere mei sawat 10%, mar neffens prognoazes sil parallelisearjen fan RTL-optimisaasjes tastean mear taastbere resultaten te berikken, om't dit stadium signifikant mear tiid nimt tidens kompilaasje. Likernôch nei RTL parallelization, de totale gearkomste tiid wurdt fermindere troch 1.61 kear. Hjirnei sil it mooglik wêze om de boutiid mei in oare 5-10% te ferminderjen troch parallelisearjen fan IPA-optimisaasjes.

Projekt om stipe ta te foegjen foar parallelisaasje fan it kompilaasjeproses oan GCC

Boarne: opennet.ru

Add a comment