Als onderdeel van een onderzoeksproject
Om uit te proberen
In de volgende fase is het ook de bedoeling om interprocedurele RTL-optimalisaties naar afzonderlijke threads te verplaatsen, rekening houdend met de kenmerken van het hardwareplatform. Daarna zijn we van plan om parallellisatie van intraprocedurele optimalisaties (IPA) te implementeren die worden toegepast op de code binnen de functie, ongeacht de specifieke kenmerken van de aanroep. De beperkende link voor nu is de garbage collector, die een globale vergrendeling heeft toegevoegd die garbage collection-bewerkingen uitschakelt terwijl deze in multi-threaded modus draait (in de toekomst zal de garbage collector worden aangepast voor multi-threaded uitvoering van GCC).
Om veranderingen in de prestaties te evalueren, is een testpakket voorbereid dat het bestand gimple-match.c samenstelt, dat meer dan 100 regels code en 1700 functies bevat. Tests op een systeem met een Intel Core i5-8250U CPU met 4 fysieke cores en 8 virtuele (Hyperthreading) lieten een afname zien in de uitvoeringstijd van Intra Procedurele GIMPLE-optimalisaties van 7 naar 4 seconden bij het uitvoeren van 2 threads en naar 3 seconden bij het uitvoeren van 4 threads. draden, d.w.z. Een verhoging van de snelheid van de beschouwde assemblagefase werd respectievelijk 1.72 en 2.52 keer bereikt. Uit tests bleek ook dat het gebruik van virtuele cores met Hyperthreading niet tot betere prestaties leidt.
De totale bouwtijd is met ongeveer 10% teruggebracht, maar volgens de prognoses zal het parallelliseren van RTL-optimalisaties het mogelijk maken om meer tastbare resultaten te bereiken, aangezien deze fase aanzienlijk meer tijd in beslag neemt tijdens de compilatie. Ongeveer na RTL-parallellisatie wordt de totale montagetijd met 1.61 keer verkort. Hierna is het mogelijk om de bouwtijd met nog eens 5-10% te verkorten door IPA-optimalisaties te parallelliseren.
Bron: opennet.ru