Generierung lokaler Optimierungen - IPD Snelting
Generierung lokaler Optimierungen - IPD Snelting Generierung lokaler Optimierungen - IPD Snelting
4 Implementierung var0 neg var1 add Kosten 2 5 sub add neg Kosten 3 var0 Abbildung 4.4: Beispiel zu komplexeren Mustern höherer Kostenstufen. Reihenfolge der erzeugten Muster Für die Geschwindigkeit des Generierungsvorgangs ist es von Vorteil, wenn allgemeinere Muster vor spezielleren Mustern erzeugt werden. Ein Muster m ist dann allgemeiner als ein Muster m ′ , wenn sich m und m ′ nur dadurch unterscheiden, dass eine oder mehrere Konstanten in m ′ durch eine Variable in m ersetzt sind, wie dies beispielsweise in Abbildung 4.5 der Fall ist. Dadurch wird erreicht, dass auch allgemeinere Regeln zuerst erzeugt werden und so viele speziellere Muster gar nicht erst betrachtet werden müssen. Aus diesem Grund werden zunächst Variablen als Operanden verwendet, bevor im Anschluss Konstanten die Operanden bilden (vgl. Abbildung 4.5). Existiert bereits eine Regel für ein Muster mit Variablen, müssen alle spezielleren Muster nicht mehr von der Musteranalyse berücksichtigt werden. Hierauf wird in Abschnitt 4.3.1 noch einmal eingegangen. var0 var0 m add m1 var1 erzeugt vor erzeugt vor 1 m ′ var0 1 Abbildung 4.5: Allgemeinere Muster (links) werden vor spezielleren Mustern (rechts) erzeugt. 28 add m ′ 1
4.2.3 Normalisierung 4 Implementierung Die Menge der möglichen Muster nimmt aufgrund der vielen Kombinationsmöglichkeiten von Operationen und Operanden schnell zu. Es sind jedoch nicht alle Muster für den Generierungsvorgang nötig. Durch Vereinheitlichung bzw. Normalisierung können bereits bei der Mustererzeugung überflüssige Muster ausgeschlossen werden. Normalisierung bezüglich mehrerer Variablen Viele Muster unterscheiden sich lediglich in der Anordnung ihrer Variablen, sind aber ansonsten bezüglich ihres Aufbaus identisch. Für n Variablen lassen sich n! fast identische Muster erzeugen, die sich nur durch eine andere Reihenfolge ihrer Variablen bei einer Postorder-Traversierung des Mustergraphen unterscheiden. Für eine Regel ist die konkrete Benennung der Variablen jedoch unerheblich. Entscheidend ist nur, dass die relative Position jeder einzelnen Variablen erhalten bleibt. Dies soll durch die beiden in Abbildung 4.6 dargestellten Regeln verdeutlicht werden. Obwohl sich die Benennung der Variablen (Knoten 1 und Knoten 2) in den Regeln r und r ′ unterscheidet, drücken beide Regeln dieselbe Transformationsvorschrift aus. Knoten 1 var0 add Knoten 1 var1 add 2 2 Knoten 2 sub var1 sub Knoten 2 sub var0 sub 1 Regel r 1 Regel r ′ ⇒ ⇒ var0 var1 var1 sub 3 add var0 sub 3 Abbildung 4.6: Viele Regeln unterscheiden sich lediglich in der Benennung ihrer Variablen, beschreiben aber dieselbe Transformationsvorschrift. add 29
- Seite 1: sc0 Generierung lokaler Optimierung
- Seite 5: Kurzfassung Lokale Optimierungen bi
- Seite 8 und 9: Inhaltsverzeichnis Inhaltsverzeichn
- Seite 10 und 11: 1 Einführung so gewonnenen Optimie
- Seite 12 und 13: 2 Grundlagen Reassoziierung Die Rea
- Seite 14 und 15: 2 Grundlagen Definition 9 (Ergebnis
- Seite 16 und 17: 2 Grundlagen 2.4 Das Erfüllbarkeit
- Seite 19 und 20: 3 Verwandte Arbeiten Ein wichtiger
- Seite 21 und 22: 3 Verwandte Arbeiten Taktzyklen. Di
- Seite 23 und 24: 4 Implementierung Die in Kapitel 3
- Seite 25 und 26: Erzeugte Muster MErz Mustererzeugun
- Seite 27: 4 Implementierung forderlichen Wert
- Seite 31 und 32: 4 Implementierung Variablen von m,
- Seite 33 und 34: 4.2.4 Reduktion durch Common Subexp
- Seite 35 und 36: var0 0 add (a) Regel r ⇒ var0 var
- Seite 37 und 38: 4 Implementierung Für die in diese
- Seite 39 und 40: 4 Implementierung würde das Muster
- Seite 41 und 42: 4 Implementierung nicht mehr verän
- Seite 43 und 44: Listing 4.4 Vorabtest - Verwendete
- Seite 45 und 46: 4 Implementierung ermittelten Einga
- Seite 47 und 48: 4 Implementierung nicht erfüllbar
- Seite 49 und 50: Listing 4.7 Ablauf des Generierungs
- Seite 51 und 52: 4 Implementierung semantisch äquiv
- Seite 53 und 54: 4 Implementierung Definition 16 (Ko
- Seite 55 und 56: var0 add add sc0 r ⇐ ′ ⇒ r va
- Seite 57 und 58: var0 sc1 : sc1 only disjunct ones t
- Seite 59 und 60: 4.5.4 Zyklisch anwendbare Regeln 4
- Seite 61 und 62: Beispiel 2: Entfernen optimaler Mus
- Seite 63 und 64: 4 Implementierung Regel wirklich um
- Seite 65: 4 Implementierung Komplexe sowie ei
- Seite 68 und 69: 5 Evaluation Tabelle 5.1 zeigt die
- Seite 70 und 71: 5 Evaluation kürzeren Gesamtlaufze
- Seite 72 und 73: 5 Evaluation Nr. Regel CINT2000 CIN
- Seite 74 und 75: 5 Evaluation var0 sc1 : sc1 is nega
- Seite 76 und 77: 6 Zusammenfassung und Ausblick 6.2
4 Implementierung<br />
var0<br />
neg var1<br />
add<br />
Kosten 2<br />
5<br />
sub<br />
add<br />
neg<br />
Kosten 3<br />
var0<br />
Abbildung 4.4: Beispiel zu komplexeren Mustern höherer Kostenstufen.<br />
Reihenfolge der erzeugten Muster<br />
Für die Geschwindigkeit des <strong>Generierung</strong>svorgangs ist es von Vorteil, wenn allgemeinere<br />
Muster vor spezielleren Mustern erzeugt werden. Ein Muster m ist dann allgemeiner<br />
als ein Muster m ′ , wenn sich m und m ′ nur dadurch unterscheiden, dass eine oder<br />
mehrere Konstanten in m ′ durch eine Variable in m ersetzt sind, wie dies beispielsweise<br />
in Abbildung 4.5 der Fall ist. Dadurch wird erreicht, dass auch allgemeinere Regeln<br />
zuerst erzeugt werden und so viele speziellere Muster gar nicht erst betrachtet werden<br />
müssen. Aus diesem Grund werden zunächst Variablen als Operanden verwendet, bevor<br />
im Anschluss Konstanten die Operanden bilden (vgl. Abbildung 4.5). Existiert bereits<br />
eine Regel für ein Muster mit Variablen, müssen alle spezielleren Muster nicht mehr von<br />
der Musteranalyse berücksichtigt werden. Hierauf wird in Abschnitt 4.3.1 noch einmal<br />
eingegangen.<br />
var0<br />
var0<br />
m<br />
add<br />
m1<br />
var1<br />
erzeugt vor<br />
erzeugt vor<br />
1<br />
m ′<br />
var0 1<br />
Abbildung 4.5: Allgemeinere Muster (links) werden vor spezielleren Mustern (rechts)<br />
erzeugt.<br />
28<br />
add<br />
m ′ 1