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

Post on 01-Sep-2019

10 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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 ?

top related