Im Rahmen eines Forschungsprojekts
Zum Prüfen
Im nächsten Schritt ist außerdem geplant, interprozedurale RTL-Optimierungen unter Berücksichtigung der Besonderheiten der Hardwareplattform in separate Threads zu verlagern. Danach ist geplant, die Parallelisierung intraprozeduraler Optimierungen (IPA) zu implementieren, die unabhängig von den Funktionen des Aufrufs auf den Code innerhalb der Funktion angewendet werden. Der limitierende Link ist bisher der Garbage Collector, der über eine globale Sperre verfügt, die Garbage Collection-Vorgänge deaktiviert, während er im Multithread-Modus ausgeführt wird (in Zukunft wird der Garbage Collector für GCC-Multithreading angepasst).
Um die Leistungsänderung zu bewerten, wurde eine Testsuite vorbereitet, die die Datei gimple-match.c erstellt, die mehr als 100 Codezeilen und 1700 Funktionen enthält. Tests auf einem System mit einer Intel Core i5-8250U-CPU mit 4 physischen Kernen und 8 virtuellen Kernen (Hyperthreading) zeigten eine Verkürzung der Ausführungszeit von Intra-prozeduralen GIMPLE-Optimierungen von 7 auf 4 Sekunden beim Starten von 2 Threads und bis zu 3 Sekunden beim Starten von 4 Threads 1.72 Threads starten, d.h. Es wurde eine Steigerung der Geschwindigkeit der betrachteten Montagestufe um das 2.52- bzw. XNUMX-fache erreicht. Tests haben außerdem gezeigt, dass der Einsatz virtueller Kerne mit Hyperthreading nicht zu Leistungssteigerungen führt.
Die gesamte Build-Zeit wurde um etwa 10 % verkürzt, aber die Parallelisierung von RTL-Optimierungen wird voraussichtlich zu greifbareren Ergebnissen führen, da die Kompilierung in dieser Phase deutlich länger dauert. Ungefähr nach der RTL-Parallelisierung wird die Gesamtmontagezeit um das 1.61-fache reduziert. Danach wird es durch die Parallelisierung der IPA-Optimierungen möglich sein, die Erstellungszeit um weitere 5–10 % zu reduzieren.
Source: opennet.ru