Generierung lokaler Optimierungen - IPD Snelting

Generierung lokaler Optimierungen - IPD Snelting Generierung lokaler Optimierungen - IPD Snelting

pp.info.uni.karlsruhe.de
von pp.info.uni.karlsruhe.de Mehr von diesem Publisher
25.10.2012 Aufrufe

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

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!