Projekt zur HinzufĂŒgung von GCC-UnterstĂŒtzung fĂŒr die Parallelisierung des Kompilierungsprozesses

Im Rahmen des Forschungsprojekts Parallel GCC wurde mit der Implementierung einer Funktion begonnen, die es ermöglicht, den Kompilierungsprozess in mehrere parallel ausgefĂŒhrte Threads zu unterteilen. Derzeit wird zur Verbesserung der Geschwindigkeit des Build-Prozesses auf Mehrkernsystemen das Starten separater Compiler-Prozesse auf der Ebene des Make-Tools verwendet, wobei jeder Prozess eine separate Datei mit Code kompiliert. Das neue Projekt experimentiert mit der Bereitstellung von Parallelisierung auf der Ebene des Compilers, was potenziell die Effizienz auf Mehrkernsystemen erhöhen könnte.

FĂŒr Tests wurde vorbereitet ein separater Parallelisierungs-Branch von GCC, in dem ein neuer Parameter "—param=num-threads=N" vorgeschlagen wird, um die Anzahl der Threads festzulegen. In der Anfangsphase wurden Inter-Procedural-Optimierungen in separate AusfĂŒhrungsthreads ausgelagert, die zyklisch fĂŒr jede Funktion aufgerufen werden und gut parallelisierbar sind. Außerdem wurden GIMPLE-Operationen in separate Threads ausgelagert, die fĂŒr hardwareunabhĂ€ngige Optimierungen verantwortlich sind und die Interaktion zwischen Funktionen bewerten.

In der nĂ€chsten Phase ist geplant, auch inter-procedurale RTL-Optimierungen, die die spezifischen Eigenschaften der Hardwareplattform berĂŒcksichtigen, in separate Threads auszulagern. Danach soll die Parallelisierung von Intra-Procedural-Optimierungen (IPA), die auf Code innerhalb der Funktion angewendet wird, unabhĂ€ngig von den Besonderheiten des Aufrufs, realisiert werden. Ein begrenzender Faktor ist derzeit der Garbage Collector, dem eine globale Sperre hinzugefĂŒgt wurde, die Garbage Collection-Operationen wĂ€hrend des Multithread-Betriebs deaktiviert (in Zukunft wird der Garbage Collector fĂŒr die Multithread-AusfĂŒhrung von GCC angepasst werden).

Zur Bewertung der LeistungsĂ€nderung wurde ein Testset vorbereitet, das die Kompilierung der Datei gimple-match.c durchfĂŒhrt, die mehr als 100.000 Zeilen Code und 1.700 Funktionen umfasst. Tests auf einem System mit einem Intel Core i5-8250U CPU mit 4 physischen Kernen und 8 virtuellen Kernen (Hyperthreading) zeigten eine Reduzierung der AusfĂŒhrungszeit der Intra-Procedure-GIMPLE-Optimierungen von 7 auf 4 Sekunden bei Verwendung von 2 Threads und auf 3 Sekunden bei 4 Threads. Das bedeutet eine Geschwindigkeitssteigerung der betreffenden Build-Phase um 1,72 und 2,52 Mal, entsprechend. Die Tests zeigten auch, dass die Verwendung virtueller Kerne bei Hyperthreading nicht zu einem Anstieg der Leistung fĂŒhrt.

Projekt zur HinzufĂŒgung von GCC-UnterstĂŒtzung fĂŒr die Parallelisierung des Kompilierungsprozesses

Die gesamte Montagezeit hat sich um etwa 10 % verringert, aber laut Prognosen wird die Parallelisierung von RTL-Optimierungen zu spĂŒrbareren Ergebnissen fĂŒhren, da diese Phase bei der Kompilierung erheblich mehr Zeit in Anspruch nimmt. SchĂ€tzungsweise wird sich nach der Parallelisierung von RTL die gesamte Montagezeit um das 1,61-Fache reduzieren. DarĂŒber hinaus kann die Montagezeit durch die Parallelisierung von IPA-Optimierungen um weitere 5-10 % verkĂŒrzt werden.

Projekt zur HinzufĂŒgung von GCC-UnterstĂŒtzung fĂŒr die Parallelisierung des Kompilierungsprozesses

Quelle: opennet.ru

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster