Das LLVM-Entwicklungsteam hat einen Vorschlag namens Multi-Thread Parallel Compilation (MTPC) zur Verbesserung von ThinLTO vorgestellt. Derzeit parallelisiert diese Technik vollständige Module, aber große Module werden seriell verarbeitet, was Engpässe verursacht. MTPC zielt darauf ab, diese Barriere zu durchbrechen, indem die Arbeit auf Funktionsebene aufgeteilt wird.
Wie die Intra-Modul-Parallelität in ThinLTO funktioniert 🚀
MTPC führt die Fähigkeit ein, ein großes Modul in kleinere, auf Funktionen basierende Einheiten zu unterteilen. Jede Funktion kann in einem unabhängigen Thread kompiliert und optimiert werden, sofern Datenabhängigkeiten und globale Referenzen korrekt verwaltet werden. Dies ermöglicht es, dass Prozessoren mit mehreren Kernen gleichzeitig innerhalb desselben Moduls arbeiten, wodurch die Kompilierungszeit in Projekten mit sehr umfangreichen Quelldateien reduziert wird.
Das Drama der Module, die sich für unantastbar hielten 😅
Bisher genossen große Module ein ruhiges Leben: Der gesamte Code wurde seriell kompiliert, wie eine Schlange im Supermarkt. Mit MTPC müssen diese trägen Funktionen nun parallel arbeiten, als hätte ihnen ein Chef gesagt, der Kaffee sei alle. Entwickler können sich von den Pausen verabschieden, während sie auf das Ende des Compilers warten, auch wenn sicherlich ein Modul aus Mangel an Synchronisation streiken wird.