Generierung lokaler Optimierungen - IPD Snelting
Generierung lokaler Optimierungen - IPD Snelting Generierung lokaler Optimierungen - IPD Snelting
4 Implementierung var0 sub sc0 var0 0 sub ⇒ Regel r ⇒ Regel r ′ Abbildung 4.24: Durch Aggregation kann das Auffinden speziellerer Regeln verhindert werden. Regel r ist auf das linke Muster aus Regel r ′ anwendbar, weswegen r ′ zwar möglich ist, aber nicht erzeugt wird. r ′′ in Form einer Optimierungsregel erzeugt wird. Das Muster p wird daher zwar nicht direkt auf das Muster p ′ abgebildet, aber es existieren zwei Regeln r und r ′′ , so dass p über das Muster q in zwei Schritten auf das günstigere Muster p ′ abgebildet werden kann. Nachträgliche Aggregation Entgegen der zuvor beschriebenen frühen Aggregation, kann eine Aggregation auch erst im Nachhinein durchgeführt werden. Dies kann entweder ganz zum Schluss oder am Ende jeder Kostenstufe geschehen. Der Nachteil besteht darin, dass jedes Muster explizit behandelt, also generiert und überprüft werden muss. Es ergibt sich allerdings der Vorteil, dass so auch alle möglichen Regeln gefunden werden können. Aufgrund der hohen Komplexität in Bezug auf die Rechenzeit erscheint die früher Aggregation geeigneter. Aus diesem Grund wird auf die nachträgliche Aggregation im Rahmen dieser Arbeit verzichtet. 58 var0 add var0 sc0 neg
4.5.4 Zyklisch anwendbare Regeln 4 Implementierung Auf ein spezielles Problem in Zusammenhang mit der Anwendbarkeit von Regeln soll hier im Besonderen eingegangen werden. Hierzu zunächst zwei einführende Beispiele: Beispiel 1: Verhindern von Regeln Abbildung 4.25 zeigt eine Optimierungsregel r, die zwei beliebige Konstanten reassoziiert und anschließend zu einer Konstante faltet. Es wird eine Addition eingespart. var0 add sc0 add m sc1 ⇒ Regel r Abbildung 4.25: Optimierungsregel – Es werden zwei Optimierungsschritte in einer Regel zusammengefasst. sc0 und sc1 werden reassoziiert und anschließend zu einer Konstante gefaltet. Eine Addition wird eingespart. In Abbildung 4.26 wird eine weitere Regel r ′ gezeigt, die eine Normalisierung durchführt. Durch Anwendung von r ′ wird eine Konstante oder symbolische Konstante mit var1 vertauscht. Für den weiteren Generierungsvorgang bewirkt diese Regel, dass keine weiteren Muster betrachtet werden, die eine Konstante oder symbolische Konstante an Stelle von sc0 in Muster rleft besitzen. Stattdessen werden nur noch die semantisch äquivalenten Muster, die dem Muster rright oder einem spezielleren Muster entsprechen, berücksichtigt. Ein zu rright spezielleres Muster ist beispielsweise gegeben, wenn sc0 in Muster rright durch eine Konstante ersetzt wird. Abbildung 4.26 zeigt zudem für die beiden Knoten var0 und sc0 die Mengen der Typen, von denen Knoten mit diesem Typ bei Anwendung der Regel überdeckt werden können 1 . Die Regel r ′ bringt allerdings ein Problem mit sich. Angenommen r ′ sowie m ′ aus Abbildung 4.25 existieren bereits und m aus Abbildung 4.25 ist gerade durch die Mustererzeugung generiert worden und soll nun durch die Musteranalyse untersucht werden. m 1 Für Variablen müssen eigentlich auch alle anderen Knotentypen mit in die Menge der zulässigen Typen aufgenommen werden. Für das Beipsiel ist dies jedoch unerheblich. var0 sc0 add m ′ add sc1 59
- 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 und 28: 4 Implementierung forderlichen Wert
- Seite 29 und 30: 4.2.3 Normalisierung 4 Implementier
- 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: var0 sc1 : sc1 only disjunct ones t
- 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
- Seite 79 und 80: Literaturverzeichnis [1] Aho, Alfre
4.5.4 Zyklisch anwendbare Regeln<br />
4 Implementierung<br />
Auf ein spezielles Problem in Zusammenhang mit der Anwendbarkeit von Regeln soll<br />
hier im Besonderen eingegangen werden. Hierzu zunächst zwei einführende Beispiele:<br />
Beispiel 1: Verhindern von Regeln<br />
Abbildung 4.25 zeigt eine Optimierungsregel r, die zwei beliebige Konstanten reassoziiert<br />
und anschließend zu einer Konstante faltet. Es wird eine Addition eingespart.<br />
var0<br />
add<br />
sc0<br />
add<br />
m<br />
sc1<br />
⇒<br />
Regel r<br />
Abbildung 4.25: Optimierungsregel – Es werden zwei Optimierungsschritte in einer Regel<br />
zusammengefasst. sc0 und sc1 werden reassoziiert und anschließend zu<br />
einer Konstante gefaltet. Eine Addition wird eingespart.<br />
In Abbildung 4.26 wird eine weitere Regel r ′ gezeigt, die eine Normalisierung durchführt.<br />
Durch Anwendung von r ′ wird eine Konstante oder symbolische Konstante mit var1 vertauscht.<br />
Für den weiteren <strong>Generierung</strong>svorgang bewirkt diese Regel, dass keine weiteren<br />
Muster betrachtet werden, die eine Konstante oder symbolische Konstante an Stelle von<br />
sc0 in Muster rleft besitzen. Stattdessen werden nur noch die semantisch äquivalenten<br />
Muster, die dem Muster rright oder einem spezielleren Muster entsprechen, berücksichtigt.<br />
Ein zu rright spezielleres Muster ist beispielsweise gegeben, wenn sc0 in Muster rright<br />
durch eine Konstante ersetzt wird. Abbildung 4.26 zeigt zudem für die beiden Knoten<br />
var0 und sc0 die Mengen der Typen, von denen Knoten mit diesem Typ bei Anwendung<br />
der Regel überdeckt werden können 1 .<br />
Die Regel r ′ bringt allerdings ein Problem mit sich. Angenommen r ′ sowie m ′ aus Abbildung<br />
4.25 existieren bereits und m aus Abbildung 4.25 ist gerade durch die Mustererzeugung<br />
generiert worden und soll nun durch die Musteranalyse untersucht werden. m<br />
1 Für Variablen müssen eigentlich auch alle anderen Knotentypen mit in die Menge der zulässigen Typen<br />
aufgenommen werden. Für das Beipsiel ist dies jedoch unerheblich.<br />
var0<br />
sc0<br />
add<br />
m ′<br />
add<br />
sc1<br />
59