25.10.2012 Aufrufe

Generierung lokaler Optimierungen - IPD Snelting

Generierung lokaler Optimierungen - IPD Snelting

Generierung lokaler Optimierungen - IPD Snelting

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!