Interesuje mnie optymalizacja wykresów przepływu danych i kontroli przepływu, a w szczególności bardziej złożonych obliczeniowo. Interesujące będzie jednak także zapoznanie się z najnowszymi wynalazkami w dziedzinie optymalizacji wizjerów.
Interesuje mnie optymalizacja wykresów przepływu danych i kontroli przepływu, a w szczególności bardziej złożonych obliczeniowo. Interesujące będzie jednak także zapoznanie się z najnowszymi wynalazkami w dziedzinie optymalizacji wizjerów.
Odpowiedzi:
Nie jestem pewien, czy jest nowatorski, czy nie jest zbyt interesujący, ale Hoopl pokazuje, w jaki sposób można zoptymalizować kontrolę / optymalizację przepływu danych, a propagacja faktów o wierzchołkach wykresu kontrolnego jest niezależna od język i konkretna optymalizacja.
Odwołują się do algorytmu Lernera, Grove i Chambersa z 2002 r., Który łączy proste optymalizacje w „superoptymalizację”.
Podejrzewam, że technika Równości Nasycenia , jako inne podejście do problemu optymalizacji przebiegów optymalizacji, byłaby odpowiednia. O ile mi wiadomo, nie zostało to jeszcze sprawdzone w praktyce dzięki konkretnej implementacji w pełnoprawnym kompilatorze. Interesujące mogą być również następujące generowanie optymalizacji kompilatora na podstawie dowodów .
W zweryfikowanych kompilatorach optymalizacyjnych nastąpiło ożywienie. Oprócz artykułu Lernera (wspomnianego w poprzednim komentarzu) możesz przyjrzeć się projektowi CompCert prowadzonemu przez Xaviera Leroya. Zrobili kilka fajnych rzeczy, określając optymalizacje jako dowody sprawdzalne maszynowo (za pomocą Coq ). Nie czytałem jeszcze artykułów, ale wydaje się, że projekt Verified Software Toolchain w Princeton przynosi interesujące wyniki w tej dziedzinie.
Rozpoznanie, że baz [i] + = force (foo [i], foo [j]) w podwójnej pętli FOR ma niezależne wyniki dla (i, j) i zmianę kolejności wywołań na krzywą wypełniania spacji na (i, j), aby zmniejszyć straty w pamięci podręcznej.
Niezupełnie „wizjer”, ale nieświadome zachowanie pamięci podręcznej dla „darmowego” jest miłe.