Maschinenunabhängige Codeoptimierung

Slides:



Advertisements
Ähnliche Präsentationen
Excel – Kurs Philip Clasen
Advertisements

Fast Fourier Transformation
Matrixmultiplikation
Vorlesung Compilertechnik Sommersemester 2008
Vorlesung Compilertechnik Sommersemester 2009 Optimierung M. Schölzel.
Zusammenfassung der Vorwoche
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
1 Energiebewusste Compilierung für digitale Signalprozessoren Markus Lorenz Peter Marwedel Universität Dortmund Lehrstuhl Informatik XII Projekt Prozessorarchitekturen.
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
Der Einstieg in das Programmieren
Scratch Der Einstieg in das Programmieren. Scatch: Entwicklungsumgebung Prof. Dr. Haftendorn, Leuphana Universität Lüneburg,
Klicke Dich mit der linken Maustaste durch das Übungsprogramm! Vereinfachung von Termen Ein Übungsprogramm der IGS - Hamm/Sieg © IGS-Hamm/Sieg 2006 Dietmar.
Java: Objektorientierte Programmierung
Algorithmentheorie 04 –Hashing
WS Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. Th. Ottmann.
Dynamische Programmierung (2) Matrixkettenprodukt
Prof. Dr. S. Albers Prof. Dr. Th. Ottmann
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Seminar parallele Programmierung SS 2003
Grundkurs Theoretische Informatik, Folie 2.1 © 2006 G. Vossen,K.-U. Witt Grundkurs Theoretische Informatik Kapitel 2 Gottfried Vossen Kurt-Ulrich Witt.
Reguläre Sprachen Karin Haenelt.
© Karin Haenelt 2006, Äquivalenzen Reg.Ausdrücke, Reg.Sprachen, EA ( ) 1 Reguläre Sprachen Karin Haenelt.
© Karin Haenelt 2006, Operationen auf Akzeptoren und Transduktoren, ( ) 1 Operationen auf endlichen Akzeptoren und Transduktoren.
Imperative Programmierung
Klausur „Diskrete Mathematik II“
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
AC Analyse. 2Ausgewählte Themen des analogen Schaltungsentwurfs Sprungantwort.
Wir suchen ‘ mit m = m    ‘ c  ‘ mod 26
Differentieller Stromverstärker
Marcus Haller & René Schulze
Ralf KüstersDagstuhl 2008/11/30 2 Ralf KüstersDagstuhl 2008/11/30 3.
Vielstoffthermodynamik
Bild 1.1 Copyright © Alfred Mertins | Signaltheorie, 2. Auflage Vieweg+Teubner PLUS Zusatzmaterialien Vieweg+Teubner Verlag | Wiesbaden.
20:00.
Lutz Rabe | Koordinierungsstelle für IT-Standards (KoSIT)
Kollektionen in Java Aufzählungstypen, Generische Typen
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Beschreibung der energetischen Zustände der Elektronen
...ich seh´es kommen !.
Generalisierung/Spezialisierung Subtypisierung/Vererbung
Polynome und schnelle Fourier-Transformation
Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke.
Präsentation läuft auch vollautomatisch ab … wie du möchtest
Auslegung eines Vorschubantriebes
Analyse von Ablaufdiagrammen
2.4 Rekursion Klassifikation und Beispiele
PROCAM Score Alter (Jahre)
Managemententscheidungsunterstützungssysteme (Ausgewählte Methoden und Fallstudien) ( Die Thesen zur Vorlesung 3) Thema der Vorlesung Lösung der linearen.
Optimierungstechniken in modernen Compilern
Analyseprodukte numerischer Modelle
Neuerungen in Java 5/6/7. Stefan Bühler für InfoPoint Überblick Java 5 neue Sprachfeatures Erweiterungen Klassenbibliothek Java 6 Erweiterungen.
2014 Januar 2014 So Mo Di Mi Do Fr Sa So
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
Vortrag von Rechtsanwältin Verena Nedden, Fachanwältin für Steuerrecht zur Veranstaltung Wege zum bedingungslosen Grundeinkommen der Piratenpartei Rhein-Hessen.
1 Mathematical Programming Nichtlineare Programmierung.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Code-Optimierung Philipp Bergener Seminar „Übersetzung künstlicher Sprachen“
Der Erotik Kalender 2005.
01-1-Anfang. 01a-1-Vortrag-Inhalt 14-4-Gründe-Masterplan.
Familie Beutner, Konrad-Voelckerstrasse, Edenkoben/Pfalz, Tel:
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Monatsbericht Ausgleichsenergiemarkt Gas – Oktober
Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag:
 Präsentation transkript:

Maschinenunabhängige Codeoptimierung Seminar: Übersetzung von künstlichen Sprachen Maschinenunabhängige Codeoptimierung Philip Demey

Agenda Einordnung und Motivation Optimierungsmöglichkeiten Datenflussanalyse Verfahren der Datenflussanalyse Zusammenfassung und Ausblick

Einordnung Dem Codegenerator optional vorgeschaltet Agiert global auf Flussgraph Maschinenunabhängig Optimierung im Sinne von Verbesserung

Motivation 3AC erzeugt temporäre Variablen Konstrukte höherer Programmiersprachen z. B. durch Arrayzugriff Redundanzen und teure Operationen Ziel: Vermeidung von Ineffizienz Entfernung unnötiger Befehle Ersetzung von Befehlen Beispiel: a = b + c * d 3AC: t1 = c * d a = b + t1 Beispiel: b = a[i][j] 3AC: t1 = i * w1 t2 = j * w2 t3 = t1 + t2 b = a[t3] Beispiel: a = 8 * b

Optimierungsmöglichkeiten

Optimierungsmöglichkeiten 1/5 Globale gemeinsame Teilausdrücke Wiederverwendung einer Berechnung ohne Änderung der benötigten Werte

Optimierungsmöglichkeiten 2/5 Kopiepropagation Entfernung von Kopieranweisungen

Optimierungsmöglichkeiten 3/5 Eliminierung von totem Code Entfernung nicht genutzter Variablen

Optimierungsmöglichkeiten 4/5 Kostenreduzierung Ersetzung von teuren Operationen

Optimierungsmöglichkeiten 5/5 Codeverschiebung Verlagerung von Codeteilen aus Schleifen

„Oberste Direktive“ Semantikerhaltende Transformationen Sichere / Konservative Verfahren Keine Änderungen der Berechnungen Aber: Versäumung von Codeverbesserungen möglich Konservative Datenflussanalyse

Datenflussanalyse

Datenflussabstraktion Nur Extraktion der nötigen Informationen Beispiel: Verfügbare Ausdrücke Ausdruck x + y ist an Punkt p verfügbar: Alle Pfade zu p werten x + y aus Nach letzter Auswertung keine Zuweisung zu x oder y

Datenflussanalyse 1/3 Sammeln von Informationen Operiert auf Flussgraph Zustände an Programmpunkten Mathematischer Lösungsansatz Datenflussgleichungen

Datenflussanalyse 2/3 Pfade durch Flussgraph Informationen zu Anfang und Ende der Blöcke DFA-Framework Iterativer Algorithmus

Datenflussanalyse 3/3 Programmpunkte Definitionen Menge von Datenflusswerten Pfade: z. B. 1,2,3,4,5,6,7,8 z. B. 1,2,3,4,5,6,7,5,6,7,8

DFA-Framework Komponenten Datenflussrichtung Vorwärts oder rückwärts Halbverband Menge von Definitionen Durchschnittsoperator Familie von Transferfunktion Transformiert Datenflusswerte Ein- und Ausstiegsknoten im Datenflussgraph Initialisierungswerte für Ein- und Ausstiegsknoten

Iterativer Algorithmus (Vorwärts gerichteter Datenfluss)

Lösung des Datenflussproblems Iterativer Algorithmus konvergiert und findet Lösung (MFP) Ideallösung (IDEAL) nicht erreichbar Näherung möglich (Meet-over-Path, MOP) Es gilt: MFP ist sicher

Beispiel: Erreichende Definitionen Ziel: z. B. Ermittlung von Konstanten Definition d erreicht Punkt p, wenn d nicht auf Pfad zu p zerstört wird Definition d wird zerstört, wenn auf Pfad zu p eine andere Definition zur Variable existiert

Beispiel: Erreichende Definitionen Iterativer Algorithmus:

Verfahren der Datenflussanalyse

Konstantenpropagation 1/2 Ziel: Ausdrücke die bei jeder Ausführung konstant sind durch Konstante ersetzen Halbverband:

Konstantenpropagation 2/2 Transferfunktion (für x = y+z) Problem: m(y) m(z) m‘(x) UNDEF c2 NAC c1 c1+c2

Eliminierung teilweiser Redundanz 1/2 Ziel: Anzahl der Auswertungen reduzieren Globale gemeinsame Teilausdrücke Schleifeninvariante Ausdrücke Teilweise redundante Ausdrücke

Eliminierung teilweiser Redundanz 2/2 Mehrfacher Durchlauf erforderlich Evtl. Einfügen neuer Blöcke nötig Evtl. Duplizierung von Code nötig Wünschenswert: Alle Redundanzen entfernt, die ohne Codeduplizierung entfernt werden können Keine neuen Berechnungen Möglichst späte Berechnung von Ausdrücken

Schleifen in Flussgraphen Ziel: Natürliche Schleifen identifizieren Auswirkung auf die Laufzeit von Programmanalysen Algorithmus kann auf hierarischer Struktur operieren

Schleifen in Flussgraphen Konzepte zur Identifizierung z. B. Dominatorbaum, Spannbaum a dom b

Weitere Verfahren Bereichsbasierte Analyse Symbolische Analyse

Zusammenfassung und Ausblick

Zusammenfassung Optimierungsmöglichkeiten Datenflussanalyse als Werkzeug Generisches Datenflussanalyse-Framework Iterativer Algorithmus findet Lösung Optimierungen müssen sicher sein

Praxis: GCC GNU Compiler Collection: Hier C-Compiler Mehrere Optimierungslevel -o0 bis -o3 Einzeloptionen, z. B. -fmerge-constants -ftree-dominator-opts -funswitch-loops http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html

Ausblick Maschinenabhängige Optimierung Spezialgebiete Neue Methoden z. B. Parallelisierung Spezialgebiete z. B. Objektorientierte Programmierung Neue Methoden z. B. Static Single Assignment Form z. B. Convergent Compiling

Vielen Dank! Fragen?

Referenzquelle Aho, Lam, Sethi, Ullmann: Compiler – Prinzipien, Techniken und Werkzeuge, Addision-Wesley, 2008.

Spannbaum