Som en del av et forskningsprosjekt
For testing
På neste trinn planlegges det også å flytte interprosessuelle RTL-optimaliseringer inn i separate tråder, under hensyntagen til egenskapene til maskinvareplattformen. Etter det planlegger vi å implementere parallellisering av intraprosessuelle optimaliseringer (IPA) brukt på koden inne i funksjonen, uavhengig av spesifikasjonene til samtalen. Den begrensende lenken foreløpig er søppeloppsamleren, som har lagt til en global lås som deaktiverer søppeloppsamlingsoperasjoner mens den kjører i flertrådsmodus (i fremtiden vil søppeloppsamleren være tilpasset for flertrådsutførelse av GCC).
For å evaluere endringer i ytelse er det utarbeidet en testpakke som setter sammen gimple-match.c-filen, som inkluderer mer enn 100 tusen linjer med kode og 1700 funksjoner. Tester på et system med en Intel Core i5-8250U CPU med 4 fysiske kjerner og 8 virtuelle (Hyperthreading) viste en reduksjon i utførelsestiden for Intra Procedural GIMPLE-optimaliseringer fra 7 til 4 sekunder ved kjøring av 2 tråder og til 3 sekunder ved kjøring av 4 tråder, dvs. En økning i hastigheten på monteringstrinnet under vurdering ble oppnådd med henholdsvis 1.72 og 2.52 ganger. Tester viste også at bruk av virtuelle kjerner med Hyperthreading ikke fører til økt ytelse.
Den totale byggetiden ble redusert med omtrent 10 %, men ifølge prognoser vil parallellisering av RTL-optimaliseringer gjøre det mulig å oppnå mer håndgripelige resultater, siden dette stadiet tar betydelig mer tid under kompileringen. Omtrent etter RTL-parallellisering vil den totale monteringstiden reduseres med 1.61 ganger. Etter dette vil det være mulig å redusere byggetiden med ytterligere 5-10 % ved å parallellisere IPA-optimaliseringer.
Kilde: opennet.ru