„graph rewrite systems for program optimization“ von uwe ... file„graph rewrite systems for...

23
Seminar „Zwischensprachen und Codegenerierung“ Vortrag zu der Veröffentlichung 18. Mai 2005 Tobias Gutzmann Betreuer: Rubino Geiß „Graph Rewrite Systems for Program Optimization“ von Uwe Aßmann

Upload: others

Post on 01-Sep-2019

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: „Graph Rewrite Systems for Program Optimization“ von Uwe ... file„Graph Rewrite Systems for Program Optimization“ von Uwe Aßmann. Motivation Code für Optimierungen schreiben

Seminar „Zwischensprachen und Codegenerierung“

Vortrag zu der Veröffentlichung

18. Mai 2005Tobias Gutzmann

Betreuer: Rubino Geiß

„Graph Rewrite Systems for Program Optimization“

von Uwe Aßmann

Page 2: „Graph Rewrite Systems for Program Optimization“ von Uwe ... file„Graph Rewrite Systems for Program Optimization“ von Uwe Aßmann. Motivation Code für Optimierungen schreiben

MotivationCode für Optimierungen schreiben ist

fehleranfällig

zeitaufwändig

nicht portabel

Also:

spezifizieren & generieren!

mit Hilfe von Graphersetzung

18. Mai 2005 Folie 2

Page 3: „Graph Rewrite Systems for Program Optimization“ von Uwe ... file„Graph Rewrite Systems for Program Optimization“ von Uwe Aßmann. Motivation Code für Optimierungen schreiben

Übersicht

Graphersetzungssysteme

Terminierung

Stratifizierung

(Pseudo-) Codegenerierung

Evaluierung, Ausblick

18. Mai 2005 Folie 3

Page 4: „Graph Rewrite Systems for Program Optimization“ von Uwe ... file„Graph Rewrite Systems for Program Optimization“ von Uwe Aßmann. Motivation Code für Optimierungen schreiben

Σ-GraphenBestehen aus

Labelmenge LKnotenmenge N Binären Relationen zwischen Knoten (Kanten)

Jedem Knoten wird ein Label zugeordnetKanten:

sind gerichtetbesitzen ebenfalls ein LabelMehrere (Label-verschiedene) Kanten zwischen zwei Knoten erlaubt

18. Mai 2005 Folie 4

Page 5: „Graph Rewrite Systems for Program Optimization“ von Uwe ... file„Graph Rewrite Systems for Program Optimization“ von Uwe Aßmann. Motivation Code für Optimierungen schreiben

GraphersetzungsregelPaar (L,R) von GraphenIn L dürfen negierte Kanten vorkommen (Σ¬ -Graph):

Test auf Abwesenheit von Kanten

P:1

Q:1

P:2A

¬B ::=B

P:1

Q:1

B

Anwendbarkeit:Finde passenden Teilgraphen (Redex)Es muss etwas „passieren“ bei der Ersetzung

Lösche-Knoten-1

18. Mai 2005 Folie 5

Page 6: „Graph Rewrite Systems for Program Optimization“ von Uwe ... file„Graph Rewrite Systems for Program Optimization“ von Uwe Aßmann. Motivation Code für Optimierungen schreiben

GraphersetzungssystemGraphersetzungssytem G = (S,Z)

Menge von Graphersetzungsregeln S und der zu betrachtende Graph, das Axiom ZFühre solange Graphersetzungen durch, bis keine Regel mehr anwendbar istDie Menge aller Graphersetzungssysteme wird mit RGRS bezeichnet

Aber: In welcher Reihenfolge? Indeterminismus!Was passiert, wenn die Inverse einer Regel existiert?

Terminiert nicht!Frage: Wann terminiert ein Graphersetzungssystem?

18. Mai 2005 Folie 6

Page 7: „Graph Rewrite Systems for Program Optimization“ von Uwe ... file„Graph Rewrite Systems for Program Optimization“ von Uwe Aßmann. Motivation Code für Optimierungen schreiben

Übersicht

Graphersetzungssysteme

Terminierung

Stratifizierung

(Pseudo-) Codegenerierung

Evaluierung, Ausblick

18. Mai 2005 Folie 7

Page 8: „Graph Rewrite Systems for Program Optimization“ von Uwe ... file„Graph Rewrite Systems for Program Optimization“ von Uwe Aßmann. Motivation Code für Optimierungen schreiben

Terminierung durch Kantenhinzufügen

„Edge Addition Rewrite Systems“ (EARS)

Alle Regeln fügen ausschließlich Kanten hinzu

Terminierung offensichtlich

18. Mai 2005 Folie 8

Page 9: „Graph Rewrite Systems for Program Optimization“ von Uwe ... file„Graph Rewrite Systems for Program Optimization“ von Uwe Aßmann. Motivation Code für Optimierungen schreiben

Terminierung durch Kantenakkumulation

„Edge Accumulative Graph Rewrite Systems“ - AGRSObermenge von EARS: Es dürfen auch Knoten hinzugefügt werdenAber: Mindestens eine Kante wird zwischen zwei Knotentypen hinzugefügt, von denen keine Regel einen neuen Knoten erzeugtTerminiertGeeignet zum finden und markieren von Mustern

18. Mai 2005 Folie 9

Page 10: „Graph Rewrite Systems for Program Optimization“ von Uwe ... file„Graph Rewrite Systems for Program Optimization“ von Uwe Aßmann. Motivation Code für Optimierungen schreiben

Terminierung durch Kantenakkumulation (2)

A B A B

B

p

q

::=

A B A B

C

p

q

::=

Ein AGRS

Terminiert nicht

18. Mai 2005 Folie 10

Page 11: „Graph Rewrite Systems for Program Optimization“ von Uwe ... file„Graph Rewrite Systems for Program Optimization“ von Uwe Aßmann. Motivation Code für Optimierungen schreiben

Terminierung durch Subtraktion

18. Mai 2005 Folie 11

„(Edge) Subtractive Graph Rewrite Systems“ - (E)SGRSÄhnlich wie AGRS, nur Löschen statt HinzufügenEdge Subtractive: Terminierung durch Löschen bestimmter KantenAuch hier kann gezeigt werden, dass das Graphersetzungssystem terminiertZusätzlich Löschen von Knoten: klar

Page 12: „Graph Rewrite Systems for Program Optimization“ von Uwe ... file„Graph Rewrite Systems for Program Optimization“ von Uwe Aßmann. Motivation Code für Optimierungen schreiben

Vollständige Graphersetzungssyteme

18. Mai 2005 Folie 12

Die Menge SGRS U AGRS wird

vollständige Graphersetzungssysteme

(XGRS) genannt

(X steht für exhaustive)

Page 13: „Graph Rewrite Systems for Program Optimization“ von Uwe ... file„Graph Rewrite Systems for Program Optimization“ von Uwe Aßmann. Motivation Code für Optimierungen schreiben

Übersicht

Graphersetzungssysteme

Terminierung

Stratifizierung

(Pseudo-) Codegenerierung

Evaluierung, Ausblick

18. Mai 2005 Folie 13

Page 14: „Graph Rewrite Systems for Program Optimization“ von Uwe ... file„Graph Rewrite Systems for Program Optimization“ von Uwe Aßmann. Motivation Code für Optimierungen schreiben

Stratifizierung

18. Mai 2005 Folie 14

Idee: Teile Regeln so in Gruppen (Strata) ein, dass jede Gruppe ein terminierendes (und möglicherweise deterministisches!) Graphersetzungssystem bildetFühre dabei die Gruppen von Regeln früher aus, die den Graphen erweiternDas entspricht meist der Absicht, zuerst zu analysieren, dann zu transformieren

Page 15: „Graph Rewrite Systems for Program Optimization“ von Uwe ... file„Graph Rewrite Systems for Program Optimization“ von Uwe Aßmann. Motivation Code für Optimierungen schreiben

Abhängigkeiten

18. Mai 2005 Folie 15

Zwei Regeln können auf verschiedene Arten voneinander abhängig sein:

„Paarweise harmlos“Beide Regeln „testen“ denselben Kanten- bzw Knotentyp

„Unterstützend“Eine Regel kann Redex für andere Regel erzeugen

„Gefährlich“Eine Regel kann Redex für andere Regel zerstören

„Nicht-stratifizierbar“Regeln können sich gegenseitig Redexe zerstörenEine Regel kann sich selbst mögliche Redexe zerstören (Selbstabhängigkeit)

Page 16: „Graph Rewrite Systems for Program Optimization“ von Uwe ... file„Graph Rewrite Systems for Program Optimization“ von Uwe Aßmann. Motivation Code für Optimierungen schreiben

Abhängigkeiten

18. Mai 2005 Folie 16

Wenn Stratifizierung existiert:STRGRS (Stratifiable Graph Rewrite System)Deterministisch

Wenn Selbstabhängigkeiten außer Acht gelassen

werden:WSTRGRS (Weak Stratifiable Graph Rewrite System)Evtl. indeterministisch

Page 17: „Graph Rewrite Systems for Program Optimization“ von Uwe ... file„Graph Rewrite Systems for Program Optimization“ von Uwe Aßmann. Motivation Code für Optimierungen schreiben

Übersicht

Graphersetzungssysteme

Terminierung

Stratifizierung

(Pseudo-) Codegenerierung

Evaluierung, Ausblick

18. Mai 2005 Folie 17

Page 18: „Graph Rewrite Systems for Program Optimization“ von Uwe ... file„Graph Rewrite Systems for Program Optimization“ von Uwe Aßmann. Motivation Code für Optimierungen schreiben

CodegenerierungGenerischer Algorithmus Ordnungsauswertung

Besonders effizient auf dünn besetzten GraphenViele Geschachtelte Schleifen, aber Iterationsmengen oft statisch bekannt

Andere Algorithmen auch anwendbarz.B. Datalog-Algorithmen, wenn stratifizierbar

18. Mai 2005 Folie 18

Page 19: „Graph Rewrite Systems for Program Optimization“ von Uwe ... file„Graph Rewrite Systems for Program Optimization“ von Uwe Aßmann. Motivation Code für Optimierungen schreiben

Pseudocode: Beispiel

18. Mai 2005 Folie 19

forall-const(n1, n

2, l) in Ur in S Edel(r) do

m := nlabL(n

1 );

forall y1 in N

m do

forall y2 in y

1.l do

if y2.deleted then y

1.l -= y

2;

Page 20: „Graph Rewrite Systems for Program Optimization“ von Uwe ... file„Graph Rewrite Systems for Program Optimization“ von Uwe Aßmann. Motivation Code für Optimierungen schreiben

Übersicht

Graphersetzungssysteme

Terminierung

Stratifizierung

(Pseudo-) Codegenerierung

Evaluierung, Ausblick

18. Mai 2005 Folie 20

Page 21: „Graph Rewrite Systems for Program Optimization“ von Uwe ... file„Graph Rewrite Systems for Program Optimization“ von Uwe Aßmann. Motivation Code für Optimierungen schreiben

EvaluierungImplementierung: OptimixBeispiel-Optimierung:

Teile von „faule Codeplatzierung“Laufzeit um ca. Faktor 10 schlechter gegenüber gccAber:

WiederverwendbarBisher nicht wirklich optimiert

Laufzeit oft in O(n) oder O(n2)Es gibt Optimierungen, die nicht mit XGRS ausgedrückt werden können

18. Mai 2005 Folie 21

Page 22: „Graph Rewrite Systems for Program Optimization“ von Uwe ... file„Graph Rewrite Systems for Program Optimization“ von Uwe Aßmann. Motivation Code für Optimierungen schreiben

Ausblick

18. Mai 2005 Folie 22

Weitere Terminierungskriterien?Metadaten, um dem Generator mitzuteilen, wie er effizienteren Code erzeugen kannMit industrieller Implementierung 70-80% eines Optimierers bei guter Laufzeit generierbar

Page 23: „Graph Rewrite Systems for Program Optimization“ von Uwe ... file„Graph Rewrite Systems for Program Optimization“ von Uwe Aßmann. Motivation Code für Optimierungen schreiben

Seminar „Zwischensprachen und Codegenerierung“

18. Mai 2005 Folie 23

Vielen Dank für eure Aufmerksamkeit!

? Fragen ?