Som en del af et forskningsprojekt
Til test
På næste trin er det også planlagt at flytte interprocedureelle RTL-optimeringer til separate tråde under hensyntagen til hardwareplatformens egenskaber. Derefter planlægger vi at implementere parallelisering af intraprocessuelle optimeringer (IPA) anvendt på koden inde i funktionen, uanset opkaldets detaljer. Det begrænsende link for nu er garbage collector, som har tilføjet en global lås, der deaktiverer affaldsindsamlingsoperationer, mens den kører i multi-threaded mode (i fremtiden vil garbage collector blive tilpasset til multi-threaded udførelse af GCC).
For at evaluere ændringer i ydeevnen er der udarbejdet en testpakke, der samler filen gimple-match.c, som indeholder mere end 100 tusind linjer kode og 1700 funktioner. Tests på et system med en Intel Core i5-8250U CPU med 4 fysiske kerner og 8 virtuelle (Hyperthreading) viste et fald i udførelsestiden for Intra Procedural GIMPLE-optimeringer fra 7 til 4 sekunder ved kørsel af 2 tråde og til 3 sekunder ved kørsel af 4 tråde, dvs. En stigning i hastigheden på det undersøgte monteringstrin blev opnået med henholdsvis 1.72 og 2.52 gange. Tests viste også, at brug af virtuelle kerner med Hyperthreading ikke fører til øget ydeevne.
Den samlede byggetid blev reduceret med cirka 10 %, men ifølge prognoser vil parallelisering af RTL-optimeringer gøre det muligt at opnå mere håndgribelige resultater, da denne fase tager betydeligt længere tid under kompileringen. Omtrent efter RTL-parallelisering vil den samlede montagetid blive reduceret med 1.61 gange. Herefter vil det være muligt at reducere byggetiden med yderligere 5-10% ved at parallelisere IPA-optimeringer.
Kilde: opennet.ru