Projet fir Ënnerstëtzung fir Paralleliséierung vum Kompiléierungsprozess op GCC ze addéieren

Als Deel vun engem Fuerschungsprojet Parallel GCC D'Aarbecht huet ugefaang fir eng Feature op GCC ze addéieren, déi et erlaabt datt de Kompiléierungsprozess an e puer parallel Threads opgedeelt gëtt. De Moment, fir d'Baugeschwindegkeet op Multi-Core Systemer ze verbesseren, benotzt de Make-Utility de Start vun getrennten Compilerprozesser, déi jidderee eng separat Codedatei baut. Den neie Projet experimentéiert mat der Paralleliséierung um Compiler Niveau, wat potenziell d'Performance op Multi-Core Systemer verbessert.

Fir ze testen virbereet eng separat Paralleliséierungszweig vum GCC, deen en neie Parameter "—param=num-threads=N" bitt fir d'Zuel vun de thread ze setzen. An der éischter Etapp hu mir den Transfert vun interprozedural Optimisatiounen an getrennten Threads ëmgesat, déi zyklesch fir all Funktioun genannt ginn a liicht paralleliséiert kënne ginn. GIMPLE Operatiounen verantwortlech fir hardware-onofhängeg Optimisatiounen, déi d'Interaktioun vu Funktiounen matenee evaluéieren, ginn an getrennten Threads plazéiert.

An der nächster Etapp ass et och geplangt, interprozedural RTL Optimisatiounen an getrennten Threads ze plënneren, andeems d'Charakteristike vun der Hardwareplattform berücksichtegt ginn. Duerno plangen mir d'Parallaliséierung vun intraprozeduralen Optimisatiounen (IPA) ëmzesetzen, déi op de Code an der Funktioun applizéiert ginn, onofhängeg vun de Spezifizitéiten vum Uruff. De limitéierende Link fir de Moment ass de Müllsammler, deen e globale Spär bäigefüügt huet, deen Drecksammlungsoperatioune deaktivéiert wärend am Multi-threaded Modus leeft (an Zukunft gëtt de Müllsammler fir Multi-threaded Ausféierung vum GCC ugepasst).

Fir Ännerungen an der Leeschtung ze evaluéieren, ass eng Testsuite virbereet ginn, déi d'gimple-match.c Datei montéiert, déi méi wéi 100 Tausend Zeilen Code an 1700 Funktiounen enthält. Tester op engem System mat enger Intel Core i5-8250U CPU mat 4 kierperleche Kären an 8 virtuellen (Hyperthreading) hunn eng Ofsenkung vun der Ausféierungszäit vun Intra Procedural GIMPLE Optimisatiounen vun 7 op 4 Sekonnen gewisen wann Dir 2 Threads leeft an op 3 Sekonnen wann Dir 4 leeft thread, d.h. Eng Erhéijung vun der Vitesse vun der Assemblée Etapp ënner Betruecht gouf erreecht vun 1.72 an 2.52 Mol, respektiv. Tester hunn och gewisen datt d'Benotzung vu virtuelle Cores mat Hyperthreading net zu enger erhéiter Leeschtung féiert.

Projet fir Ënnerstëtzung fir Paralleliséierung vum Kompiléierungsprozess op GCC ze addéieren

D'Gesamtbauzäit gouf ëm ongeféier 10% reduzéiert, awer no Prognosen, paralleliséiere vun RTL Optimisatiounen erlaabt et méi konkret Resultater z'erreechen, well dës Etapp däitlech méi Zäit während der Zesummesetzung hëlt. Ongeféier no der RTL-Parallaliséierung gëtt déi total Montagezäit ëm 1.61 Mol reduzéiert. Duerno wäert et méiglech sinn d'Bauzäit ëm weider 5-10% ze reduzéieren andeems IPA Optimisatiounen paralleliséiert ginn.

Projet fir Ënnerstëtzung fir Paralleliséierung vum Kompiléierungsprozess op GCC ze addéieren

Source: opennet.ru

Setzt e Commentaire