Login
Newsletter
Werbung

Fr, 4. Juli 2008, 13:30

Software::Entwicklung

GCC soll besser compilieren lernen

Milepost, ein von der Europäischen Union gefördertes Forschungsprojekt, will die Code-Optimierung von Compilern durch maschinelles Lernen verbessern.

Es gab Zeiten, da galt der GNU C-Compiler auf vielen Plattformen als der beste verfügbare Compiler. Möglicherweise ist er das auf einigen immer noch. Doch mit der stürmischen Entwicklung der Prozessoren konnten die Compilerbauer in den letzten Jahren nicht mehr mithalten, was allerdings nicht nur GCC, sondern alle Compiler betrifft. So ist dem Projekt Milepost zufolge der traurige Zustand heutzutage, dass die aktuellen Compiler keine zufriedenstellend schnellen Programme generieren können. Der Grund dafür seien neben der schnellen Entwicklung der Hardware die starren und als Black Box fungierenden Optimierungs-Heuristiken, zu stark vereinfachende Hardwaremodelle, die Unmöglichkeit, die einzelnen Transformationen während der Optimierung zu tunen und die hochgradig dynamische Verhalten der Systeme.

Die Forschergruppe im Projekt Milepost will diesen Zustand nachhaltig verbessern, indem es die verschiedenen Optimierungen, die der Compiler ausführt, von einer »externen« Komponente steuern lässt. Diese kann empirisches Wissen aus früheren Compilerläufen und andere Faktoren einbeziehen, um allmählich zu lernen, welche Reihenfolge der Optimierungen zum besten Ergebnis für die jeweilige Aufgabe führt.

Dazu hat das Team einen Patch für GCC 4.2 und 4.3 entwickelt, das Interactive Compilation Interface (ICI), das mittlerweile Version 1.0 erreicht hat. Das Resultat soll ein modularer, erweiterbarer und sich selbst optimierender Compiler sein. Dieses Verfahren ist nach Ansicht der Forscher viel besser als aktuelle Ansätze, durch iterative Compilierung zu besserem Code zu gelangen. ICI könne eine sehr viel größere Zahl von Kombinationen bei den Optimierungen durchsuchen. Außerdem führt die wiederholte Compilierung zu exzessiven Zeiten für die Code-Generierung.

Auch Milepost arbeitet iterativ, wendet aber Methoden des maschinellen Lernens an, um aus den Ergebnissen früherer Läufe zu lernen. Erste Experimente mit dem Benchmark MiBench auf verschiedenen Architekturen zeigen, dass nach 500 Lernvorgängen fast überall Beschleunigungen erreicht werden konnten, im günstigsten Fall bis zum 2,3-fachen. Gegenüber iterativer Compilierung lag das System in diesem Test noch etwas zurück, war in vielen Benchmarks aber bereits gleichauf oder fast gleichauf. Die Forscher betonen zudem, dass 500 Lernvorgänge sehr wenig seien und das Potential bei weitem noch nicht ausschöpfen. In diesen 500 Läufen wurde der Benchmark-Code mit Kombinationen von jeweils zufällig ein- oder ausgeschalteten Optimierungsflags compiliert und dann seine Geschwindigkeit gemessen. Einzelheiten zu dem Projekt sind in einem kürzlich auf dem GCC Summit vorgestellen Artikel zu finden.

Werbung
Kommentare (Insgesamt: 65 || Alle anzeigen )
Re: VMs sind immer noch besser (Hoek, So, 31. August 2008)
Re[2]: Intel und AMD (DDD, Mo, 7. Juli 2008)
VMs sind immer noch besser (Haug Bürger, Mo, 7. Juli 2008)
Mangelhafter Ansatz (gerhard, Mo, 7. Juli 2008)
Re[2]: DeutscheInformatik (Widukind, So, 6. Juli 2008)
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung