Login
Login-Name Passwort


 
Newsletter
Werbung

Mo, 5. Oktober 2009, 22:28

Software::Entwicklung

GCC erhält Link Time Optimization

Die nächste Version der GNU Compiler Collection GCC wird eine Link Time Optimization (LTO) mitbringen.

Wie der Google-Angestellte Diego Novillo in einer E-Mail an die Liste der Entwickler schreibt, sind die Arbeiten an der neuen Link-Time-Optimierung (LTO) weit fortgeschritten und einer Übernahme der Entwicklung in den Hauptbaum von GCC steht nichts mehr im Wege. Damit wird künftig die GNU Compiler Collection in der Lage sein, ihre internen Strukturen in Form von GIMPLE auszugeben und anderen Bereichen der Suite die Möglichkeit geben, weitergehende Optimierung vor dem eigentlichen Linken einer Applikation durchzuführen. GIMPLE selbst wurde bereits im Zuge des TreeSSA-Projektes erstellt, das in die Version 4.0 von GCC Einzug hielt und durch den Einsatz von zwei neuen sprachunabhängigen Bäumen (GENERIC und GIMPLE) eine massive Verbesserung der Geschwindigkeit versprach. Der so genannte »Gimplifier« überführt dabei die auf SSA-basierte GIMPLE-Form nach GENERIC.

Gerade die Vorteile der neuen Architektur macht sich nun auch LTO zu Nutze. Dazu wertet LTO GIMPLE-Sektionen innerhalb eines ELF-Containers aus und führt Optimierungen der verschiedenen Objekte vor dem eigentlichen Linken aus. Dabei spielt die zuvor eingesetzte Sprache genauso wenig eine Rolle wie die eingesetzte Architektur. ELF dient einzig als Container und nicht als Ausgabeformat. Eine weitere Stärke von LTO stellt die Unterstützung von verschiedenen Linkern dar. Wie Novillo auf seiner Seite schreibt, profitiert die Erweiterung vor allem von den Funktionen des ebenfalls von Google entwickelten modularen Linkers Gold.

Um LTI nutzen zu können, bedarf es neben der Installation der eigentlichen Erweiterung und libelf 0.8.12 nur der Angabe des Flags »-flto« bei der Kompilierung und dem Linken der Applikation. Anwender von Gold müssen gar nur noch dem Compiler die entsprechende Option übergeben.

Die Resultate der aktuellen Entwicklung variieren vom Test zu Test. Während manche Testszenarien teilweise massive Verbesserungen mit LTO nach sich ziehen, sind andere wiederum langsamer mit LTO. Novillo erklärt das Verhalten mit fehlenden Optimierungen in der Interprozeduralen Analyse (IPA). Darüber hinaus verursacht die Neuerung vor allem in Applikationen, die exzessiv die Funktionen des Compilers testen, wie beispielsweise gcc.c-torture, noch Fehler, die allerdings bereits in der kommenden Version korrigiert werden sollen.

Werbung
Kommentare (Insgesamt: 40 || Alle anzeigen || Kommentieren )
Re[3]: GIMPLE (..., Sa, 13. März 2010)
Re[3]: Google (Shiruba, Mi, 7. Oktober 2009)
Re[2]: GIMPLE (energyman, Mi, 7. Oktober 2009)
Re: GIMPLE (Anonymous, Di, 6. Oktober 2009)
Re[5]: GIMPLE (gttt, Di, 6. Oktober 2009)
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung