Ich interessiere mich für die Optimierung von Datenfluss- und Kontrollflussgraphen und bin insbesondere rechenintensiver. Es wird aber auch interessant sein, über die neuesten Erfindungen im Bereich der Gucklochoptimierung Bescheid zu wissen.
Ich interessiere mich für die Optimierung von Datenfluss- und Kontrollflussgraphen und bin insbesondere rechenintensiver. Es wird aber auch interessant sein, über die neuesten Erfindungen im Bereich der Gucklochoptimierung Bescheid zu wissen.
Antworten:
Ich bin mir nicht sicher, wie neu es ist oder ob es für Ihr Interesse zu viel auf der angewandten Seite ist, aber Hoopl zeigt, wie eine Kontroll- / Datenflussoptimierung modularisiert werden kann, wobei die Verbreitung von Fakten über Kontrollgraphenscheitelpunkte unabhängig von der ist Sprache und spezifische Optimierung.
Sie beziehen sich auf einen Algorithmus von Lerner, Grove und Chambers aus dem Jahr 2002, der einfache Optimierungen zu einer "Superoptimierung" zusammensetzt.
Ich nehme an, dass die Equality Saturation- Technik relevant wäre, da eine andere Herangehensweise an das Problem der Reihenfolge von Optimierungsdurchgängen relevant wäre. Meines Wissens hat sich eine konkrete Implementierung in einem vollwertigen Compiler jedoch noch nicht als praktikabel erwiesen. Die folgenden Generieren von Compiler-Optimierungen aus Proofs können ebenfalls von Interesse sein.
Verifizierte Optimierungs-Compiler haben etwas an Fahrt aufgenommen. Neben der Arbeit von Lerner (die in einem früheren Kommentar erwähnt wurde) können Sie sich auch das CompCert- Projekt unter der Leitung von Xavier Leroy ansehen . Sie haben einige coole Sachen gemacht, indem sie Optimierungen als maschinenprüfbare Beweise spezifiziert haben (mit Coq ). Ich habe die Artikel noch nicht gelesen, aber das Projekt Verified Software Toolchain bei Princeton scheint auch in diesem Bereich interessante Ergebnisse zu liefern.
Das Erkennen von baz [i] + = force (foo [i], foo [j]) in einer doppelten FOR-Schleife hat unabhängige Ergebnisse für (i, j) und das Umordnen der Aufrufe in eine raumfüllende Kurve auf (i, j) zu Reduzierung der Cache-Fehler.
Nicht ganz "Guckloch", aber es ist schön, "kostenlos" Cache-vergessenes Verhalten zu bekommen.