Kaip tyrimo projekto dalis
Testavimui
Kitame etape taip pat planuojama perkelti tarpprocedūrinius RTL optimizavimus į atskiras gijas, atsižvelgiant į techninės platformos ypatybes. Po to, neatsižvelgiant į iškvietimo specifiką, planuojame įdiegti intraprocedūrinių optimizacijų (IPA) paralelizavimą, taikomą kodui funkcijos viduje. Kol kas ribojanti grandis yra šiukšlių rinktuvas, kuris pridėjo visuotinį užraktą, kuris išjungia šiukšlių išvežimo operacijas veikiant kelių gijų režimu (ateityje šiukšlių rinktuvas bus pritaikytas kelių gijų GCC vykdymui).
Veiklos pokyčiams įvertinti buvo parengtas testų rinkinys, surenkantis gimple-match.c failą, kuriame yra daugiau nei 100 tūkstančių kodo eilučių ir 1700 funkcijų. Sistemos su „Intel Core i5-8250U“ procesoriumi su 4 fiziniais branduoliais ir 8 virtualiais („Hyperthreading“) bandymai parodė, kad „Intra Procedural GIMPLE“ optimizacijų vykdymo laikas sumažėjo nuo 7 iki 4 sekundžių, kai vykdoma 2 gijos, ir iki 3 sekundžių, kai vykdoma 4 gijos. siūlai, t.y. Nagrinėjamo surinkimo etapo greitis buvo padidintas atitinkamai 1.72 ir 2.52 karto. Bandymai taip pat parodė, kad naudojant virtualius branduolius su Hyperthreading našumas nepadidėja.
Bendras kūrimo laikas sutrumpėjo maždaug 10%, tačiau, remiantis prognozėmis, lygiagretus RTL optimizavimas leis pasiekti apčiuopiamesnių rezultatų, nes šis etapas kompiliavimo metu užima žymiai daugiau laiko. Maždaug po RTL lygiagretinimo bendras surinkimo laikas sumažės 1.61 karto. Po to bus galima sutrumpinti kūrimo laiką dar 5-10%, lygiagrečiai suderinus IPA optimizavimą.
Šaltinis: opennet.ru