Abo
  • Services:

Link-Time-Optimization: LLVM macht LTO fast so schnell wie normale Optimierung

Mit einer neuen Art der Optimierung während des Linkens eines Programms (LTO) benötigt LLVM nur etwas mehr Zeit als bei der "normalen" Optimierung beim Kompilieren. Auch den Speicherbedarf für LTO konnte das Team drastisch reduzieren.

Artikel veröffentlicht am ,
Dank einer neuen Technik wird die LTO in LLVM deutlich schneller.
Dank einer neuen Technik wird die LTO in LLVM deutlich schneller. (Bild: LLVM)

Die meisten Compiler verfügen inzwischen über Möglichkeiten der Programmoptimierung, etwa um die Laufzeit zu verbessern. Bei der Link-Time-Optimization (LTO) wird dieser Vorgang erst beim Linken des Programms durchgeführt, wodurch das gesamte Programm auch über mehrere Module hinweg optimiert werden kann. Mit dem neuen Ansatz Thin LTO hat es das LLVM-Team geschafft, den für den Vorgang benötigten Speicherbedarf drastisch zu reduzieren und nur noch etwas mehr Zeit als für die normale Optimierung zu benötigen.

  • Der Ablauf des neuen Thin LTO (Bild: LLVM)
  • Der Ablauf des alten LTO (Bild: LLVM)
Der Ablauf des neuen Thin LTO (Bild: LLVM)
Stellenmarkt
  1. BWI GmbH, Meckenheim
  2. über duerenhoff GmbH, Raum Metzingen

Trotz der durch LTO meist besseren Ergebnisse im Vergleich zur normalen Optimierung hatte die Technik vor allem für sehr große Anwendungen entscheidende Nachteile. Denn bei dem bisherigen Ansatz ist der gesamte erzeugte Bitcode zu einem großen monolithischen Modul zusammengefasst worden, auf dem dann die Optimierungen in einem einzigen Thread durchgeführt worden sind.

Paralleler Ablauf dank Zusatzinformationen

Bei Thin LTO wird jedoch auf das Zusammenführen des Bitcodes zu dem monolithischen Modul vollständig verzichtet. Um dennoch eine globale Analyse des gesamten Programms durchführen zu können, werden kompakte Übersichten der einzelnen kleineren Module erstellt. Ebenso wird ein Index der Orte von Funktionen erstellt, um diese später über Modulgrenzen hinweg importieren zu können. Dieser Import umfasst zudem nur jene Funktionen, die wahrscheinlich von einer Inline-Ersetzung betroffen sein werden. Die tatsächlichen Optimierungen geschehen dann völlig parallel in mehreren Threads.

Die wichtigste Voraussetzung für diesen Ablauf sei das Erstellen der Übersichten der Module, die quasi nebenbei beim Kompilieren in die LLVM-Zwischenschicht (Intermediate Representation, IR) erzeugt werden. Dabei werden sämtliche globalen Variablen und Funktionen berücksichtigt und eine Modul-Übersicht enthält zudem Metadaten, die als Abstraktion für einzelne Symbole dienen soll.

Zwar sei Thin LTO noch in Arbeit, die LLVM-Autoren bewerten dessen Leistung aber im Vergleich zur bisherigen LTO als gut. So werden in vielen Fällen die Leistungssteigerungen des LTO auch mit der neuen Technik erreicht. Allerdings ist der gesamte Kompiliervorgang mit dem neuen Ansatz wesentlich schneller als das alte LTO und reicht fast an die Geschwindigkeit des Kompilierens mit der normalen Optimierung heran. Darüber hinaus sind anders als bei der alten Technik mit Thin LTO sehr schnelle inkrementelle Builds möglich.

Derzeit genutzt werden kann Thin LTO mit dem Gold Plugin ebenso wie Ld64 in Apples Xcode 8. In der kommenden Version LLVM 3.9 wird das C-Frontend Clang Thin LTO über eine Kommandozeilenoption unterstützen.



Anzeige
Top-Angebote
  1. (u. a. Crucial MX500 2-TB-SSD 249,99€, Seagate portable 2,5-Zoll-HDD 4 TB 84,99€)
  2. (u. a. Ecovacs Robotics Deebot N79S 154,99€)
  3. (u. a. MSI GS63 7RD-223 Stealth 1099€, MSI GE73 8RF-221DE Raider RGB 1999€)
  4. 74,99€

das sushi 28. Jun 2016

Er ist noch nicht fertig, aber geben tut es ihn seit 3.7 glaub ich. Da ich keinen System...


Folgen Sie uns
       


AMD Athlon 200GE - Test

Der Athlon 200GE ist ein 55 Euro günstiger Chip für den Sockel AM4. Er konkurriert daher mit Intels Celeron G4900 und Pentium G5400. Dank zwei Kernen mit SMT und 3,2 GHz sowie einer Vega-3-Grafikeinheit schlägt er beide Prozessoren in CPU-Benchmarks und ist schneller in Spielen, wenn diese auf der iGPU laufen.

AMD Athlon 200GE - Test Video aufrufen
Programmiersprachen, Pakete, IDEs: So steigen Entwickler in Machine Learning ein
Programmiersprachen, Pakete, IDEs
So steigen Entwickler in Machine Learning ein

Programme zum Maschinenlernen stellen andere Herausforderungen an Entwickler als die klassische Anwendungsentwicklung, denn hier lernt der Computer selbst. Wir geben eine Übersicht über die wichtigsten Entwicklerwerkzeuge - inklusive Programmierbeispielen.
Von Miroslav Stimac

  1. Software-Entwickler Welche Programmiersprache soll ich lernen?

Icarus: Forscher beobachten Tiere via ISS
Icarus
Forscher beobachten Tiere via ISS

Dass Vögel wandern, ist seit langem bekannt. Wir haben auch eine Idee, wohin sie ziehen. Aber ganz genau wissen wir es nicht. Das wird sich ändern: Im Rahmen des Projekts Icarus wollen Forscher viele Tiere mit kleinen Sendern ausstatten und so ihre Wanderrouten verfolgen. Die Daten kommen über die ISS zur Erde.
Ein Bericht von Werner Pluta

  1. Tweether Empfangsmodul für 94 GHz kommt aus Kassel
  2. Tweether 10 GBit/s über einen Quadratkilometer verteilt
  3. Telekommunikation Mit dem Laser durch die Wolken

Dell Ultrasharp 49 im Test: Pervers und luxuriös
Dell Ultrasharp 49 im Test
Pervers und luxuriös

Dell bringt mit dem Ultrasharp 49 zwei QHD-Monitore in einem, quasi einen Doppelmonitor. Es könnte sein, dass wir uns im Test ein kleines bisschen in ihn verliebt haben.
Ein Test von Michael Wieczorek

  1. Magicscroll Mobiles Gerät hat rollbares Display zum Herausziehen
  2. CJG50 Samsungs 32-Zoll-Gaming-Monitor kostet 430 Euro
  3. Agon AG322QC4 Aggressiv aussehender 31,5-Zoll-Monitor kommt für 600 Euro

    •  /