Login
Login-Name Passwort


 
Newsletter
Werbung

Sa, 25. Juni 2016, 12:28

Software::Entwicklung

ThinLTO beschleunigt Link Time Optimization

Das Projekt ThinLTO soll dafür sorgen, dass die Code-Optimierung während des Linkens zeitlich kaum noch ins Gewicht fällt. Dabei arbeitet es bei normaler und inkrementeller Compilierung fast gleich schnell.

Zusammenspiel des Compilers und des Linkers in LLVM

LLVM

Zusammenspiel des Compilers und des Linkers in LLVM

Code-Optimierung während des Linkens (Link Time Optimization, LTO) existiert zwar bereits seit einigen Jahren, es geht jedoch mit einem erheblichen Speicherbedarf einher und ist nicht parallelisiert, so dass es relativ lange dauert. Inkrementelle Compilierungen werden zudem dadurch weniger effektiv, da der ganze LTO-Schritt wiederholt werden muss.

ThinLTO, das als Prototyp in LLVM realisiert wurde, verspricht Abhilfe durch Parallelisierung. Die Aufgabe in Schritte zu zerlegen, die sich parallelisieren lassen, ist die größte Neuerung von ThinLTO. Erreicht wird das, indem ein umfassender Index aller Symbole aller Module erzeugt wird. Dieser Schritt ist nicht parallelisiert, benötigt aber nur wenig Zeit. Die nachfolgenden parallel laufenden Schritte nutzen diesen Index sowie kompakte, vorab erzeugte Informationen über jedes compilierte Modul.

Zusammenspiel des Compilers und des Linkers mit ThinLTO

LLVM

Zusammenspiel des Compilers und des Linkers mit ThinLTO

ThinLTO ist sicher noch nicht fertig, nach Angaben der Entwickler aber bereits in der Lage, manche Projekte genauso gut zu optimieren wie LTO. Einige Programme werden weniger gut optimiert, andere sogar besser. Die Laufzeit von ThinLTO ist dagegen um ein Mehrfaches kleiner als bei LTO und nicht viel langsamer als ein Compilieren und Linken ohne LTO. Außerdem sinkt der Speicherbedarf drastisch. Er steigt zwar annähernd linear mit der Anzahl der ThinLTO-Threads, liegt aber selbst bei vier Threads noch unter einem Zehntel des Bedarfs von LTO.

Ferner unterstützt ThinLTO inkrementelle Compilierungen so gut, dass es nicht viel langsamer ist als eine Compilierung ohne LTO. Voraussetzung dafür ist, dass ThinLTO einen Cache für bereits durchgeführte Schritte nutzen kann. Verfügbar ist ThinLTO als Plugin für den Linker gold (Bestandteil der GNU Binutils) und in ld64. In der kommenden Version 3.9 von LLVM wird es als Option zur Verfügung stehen.

Werbung
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung