Prughjettu per aghjunghje supportu per u prucessu di compilazione parallela à GCC

Cum'è parte di un prughjettu di ricerca GCC parallelu U travagliu hà cuminciatu à aghjunghje una funzione à GCC chì permette u prucessu di compilazione per esse divisu in parechji fili paralleli. Attualmente, per migliurà a velocità di custruzzione nantu à i sistemi multi-core, l'utilità di creazione usa u lanciamentu di prucessi di compilatori separati, ognuna di quale custruisce un schedariu di codice separatu. U novu prughjettu sperimenta cù a parallelizazione à u livellu di u compilatore, chì potenzialmente migliurà u rendiment in sistemi multi-core.

Per pruvà preparatu un ramu parallelisatu separatu di GCC, chì offre un novu paràmetru "—param=num-threads=N" per stabilisce u numeru di fili. In u stadiu iniziale, avemu implementatu u trasferimentu di ottimisazioni interprocedurali in fili separati, chì sò chjamati ciclichi per ogni funzione è ponu esse facilmente paralleli. L'operazioni GIMPLE rispunsevuli di l'ottimisazioni indipindenti di hardware chì valutanu l'interazzione di e funzioni cù l'altri sò posti in fili separati.

In u prossimu stadiu, hè ancu previstu di trasfurmà l'ottimisazioni RTL interprocedurali in fili separati, tenendu in contu e caratteristiche di a piattaforma hardware. Dopu questu, avemu pensatu à implementà a parallelizazione di l'ottimisazioni intraprocedurali (IPA) appiicata à u codice in a funzione, indipendentemente da e specifiche di a chjama. U ligame limitante per avà hè u cullettore di basura, chì hà aghjustatu un serratura globale chì disattiva l'operazioni di raccolta di basura mentre eseguisce in modu multi-threaded (in u futuru u cullettore di basura serà adattatu per l'esecuzione multi-threaded di GCC).

Per valutà i cambiamenti in u rendiment, hè stata preparata una suite di teste chì assembla u schedariu gimple-match.c, chì include più di 100 mila linee di codice è 1700 5 funzioni. I testi nantu à un sistema cù una CPU Intel Core i8250-4U cù 8 core fisici è 7 virtuali (Hyperthreading) anu dimustratu una diminuzione di u tempu d'esekzione di l'ottimisazioni Intra Procedural GIMPLE da 4 à 2 seconde quandu eseguite 3 fili è à 4 seconde quandu eseguite 1.72. fili, i.e. Un aumentu di a velocità di a tappa di l'assemblea in cunsiderà hè stata ottenuta da 2.52 è XNUMX volte, rispettivamente. I testi anu ancu dimustratu chì l'usu di core virtuali cù Hyperthreading ùn porta micca à un rendimentu aumentatu.

Prughjettu per aghjunghje supportu per u prucessu di compilazione parallela à GCC

U tempu di custruzzione generale hè stata ridutta di circa 10%, ma secondu e previsioni, l'ottimisazioni RTL parallelisate permetterà di ottene risultati più tangibili, postu chì sta tappa dura assai più tempu durante a compilazione. Approssimativamente dopu à a parallelizazione RTL, u tempu tutale di assemblea serà ridutta da 1.61 volte. Dopu questu, serà pussibule di riduce u tempu di custruzzione da un altru 5-10% per parallelizing ottimisazioni IPA.

Prughjettu per aghjunghje supportu per u prucessu di compilazione parallela à GCC

Source: opennet.ru

Add a comment