„graph rewrite systems for program optimization“ von uwe ... file„graph rewrite systems for...
TRANSCRIPT
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
MotivationCode für Optimierungen schreiben ist
fehleranfällig
zeitaufwändig
nicht portabel
Also:
spezifizieren & generieren!
mit Hilfe von Graphersetzung
18. Mai 2005 Folie 2
Übersicht
Graphersetzungssysteme
Terminierung
Stratifizierung
(Pseudo-) Codegenerierung
Evaluierung, Ausblick
18. Mai 2005 Folie 3
Σ-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
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
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
Übersicht
Graphersetzungssysteme
Terminierung
Stratifizierung
(Pseudo-) Codegenerierung
Evaluierung, Ausblick
18. Mai 2005 Folie 7
Terminierung durch Kantenhinzufügen
„Edge Addition Rewrite Systems“ (EARS)
Alle Regeln fügen ausschließlich Kanten hinzu
Terminierung offensichtlich
18. Mai 2005 Folie 8
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
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
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
Vollständige Graphersetzungssyteme
18. Mai 2005 Folie 12
Die Menge SGRS U AGRS wird
vollständige Graphersetzungssysteme
(XGRS) genannt
(X steht für exhaustive)
Übersicht
Graphersetzungssysteme
Terminierung
Stratifizierung
(Pseudo-) Codegenerierung
Evaluierung, Ausblick
18. Mai 2005 Folie 13
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
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)
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
Übersicht
Graphersetzungssysteme
Terminierung
Stratifizierung
(Pseudo-) Codegenerierung
Evaluierung, Ausblick
18. Mai 2005 Folie 17
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
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;
Übersicht
Graphersetzungssysteme
Terminierung
Stratifizierung
(Pseudo-) Codegenerierung
Evaluierung, Ausblick
18. Mai 2005 Folie 20
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
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
Seminar „Zwischensprachen und Codegenerierung“
18. Mai 2005 Folie 23
Vielen Dank für eure Aufmerksamkeit!
? Fragen ?