Generierung lokaler Optimierungen - IPD Snelting
Generierung lokaler Optimierungen - IPD Snelting
Generierung lokaler Optimierungen - IPD Snelting
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
4 Implementierung<br />
eine Konstantenfaltung durchzuführen. Mit komplexen symbolischen Konstanten kann<br />
eine allgemeine Regel angegeben werden (die in der Abbildung gezeigt wird), welche die<br />
Optimierung für alle möglichen Konstanten-Kombinationen in einer Regel zusammenfasst.<br />
sc0<br />
var0<br />
sub<br />
Kosten 2<br />
add<br />
sc1<br />
⇒<br />
sc1<br />
sub<br />
sc0<br />
sub<br />
Kosten 1<br />
Abbildung 4.20: Abbildung einer Regel, die Reassoziierung und Konstantenfaltung kombiniert.<br />
Durch symbolische und komplexe symbolische Konstanten ist<br />
die Regel für alle Konstanten gültig.<br />
Einschränkung bei der Verwendung von komplexen symbolischen Konstanten<br />
Der Einfachheit wegen werden komplexe symbolische Konstanten nur auf der rechten<br />
Seite einer Regel erlaubt, da hier bei Anwendung der Regel die Operanden für die Berechnungsfunktion<br />
bereits durch die linke Seite festgelegt und somit bekannt sind. Werden<br />
komplexe symbolische Konstanten auf der linken Seite einer Regel zugelassen, müssen<br />
die Operanden gegebenenfalls aus dem Wert einer Konstante rekonstruiert werden.<br />
Zur Veranschaulichung betrachten wir die beiden in Abbildung 4.21 dargestellten semantisch<br />
äquivalenten Muster m und m ′ . Es sind zwei Regeln denkbar: r : m → m ′ und<br />
r ′ : m ′ → m. Da komplexe Konstanten auf der linken Seite einer Regel ausgeschlossen<br />
sind, wird die Regel r ′ nicht erzeugt werden, für dieses Beispiel soll sie dennoch betrachtet<br />
werden. Bei Anwendung der Regel r ist die Berechnung der komplexen symbolischen<br />
Konstante einfach. Der Wert ergibt sich aus sc0 + sc0. Wird beispielsweise r auf ein<br />
Muster angewendet, so dass sc0 der Konstante 4 entspricht, ergibt sich die komplexe<br />
Konstante aus sc0 + sc0 bzw. 4 + 4 = 8. Der umgekehrte Fall ist komplizierter. Wird<br />
r ′ auf ein Muster angewendet, so dass die komplexe Konstante einer 8 entspricht, muss<br />
die Konstante erst halbiert werden, um auf sc0 bzw. 4 zu kommen. Auf ein Muster mit<br />
einer ungeraden Konstante ist r ′ zudem gar nicht anwendbar. Auch dies müsste extra<br />
überprüft werden.<br />
54<br />
var0