Som en del av ett forskningsprojekt
För provning
I nästa steg är det också planerat att flytta interprocedurella RTL-optimeringar till separata trådar, med hänsyn till hårdvaruplattformens egenskaper. Därefter planerar vi att implementera parallellisering av intraproceduroptimeringar (IPA) applicerade på koden inuti funktionen, oavsett specifikationerna för samtalet. Den begränsande länken för nu är sopsamlaren, som har lagt till ett globalt lås som inaktiverar sophämtningsoperationer medan den körs i flertrådsläge (i framtiden kommer sopsamlaren att anpassas för multitrådad exekvering av GCC).
För att utvärdera förändringar i prestanda har en testsvit utarbetats som sammanställer filen gimple-match.c, som innehåller mer än 100 tusen rader kod och 1700 5 funktioner. Tester på ett system med en Intel Core i8250-4U CPU med 8 fysiska kärnor och 7 virtuella (Hyperthreading) visade en minskning av exekveringstiden för Intra Procedural GIMPLE-optimeringar från 4 till 2 sekunder vid körning av 3 trådar och till 4 sekunder vid körning av 1.72 trådar, dvs. En ökning av hastigheten för det aktuella monteringssteget uppnåddes med 2.52 respektive XNUMX gånger. Tester visade också att användning av virtuella kärnor med Hyperthreading inte leder till ökad prestanda.
Den totala byggtiden minskade med cirka 10 %, men enligt prognoser kommer parallellisering av RTL-optimeringar att göra det möjligt att uppnå mer påtagliga resultat, eftersom detta steg tar betydligt längre tid under kompileringen. Ungefär efter RTL-parallellisering kommer den totala monteringstiden att minska med 1.61 gånger. Efter detta kommer det att vara möjligt att minska byggtiden med ytterligare 5-10 % genom att parallellisera IPA-optimeringar.
Källa: opennet.ru