Co nowego w technikach optymalizacji kompilatora w ciągu ostatnich kilku lat?

14

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.

Evgeny Gavrin
źródło
2
W mojej pracy dyplomowej ( slajdy ) omówiłem i zaimplementowałem spłaszczanie grafów wywołań w LLVM; Zasadniczo jest to transformacja międzyproceduralna, która pozbywa się pojęcia „funkcji”, ponieważ łączy cały kod razem, zapewniając szereg interesujących możliwości, takich jak ruch kodu międzyproceduralnego, zoptymalizowane konwencje wywoływania zoptymalizowane pod kątem strony wywołującej, wykonywanie bez stosu i tak dalej.
CAFxX,
@CAFxX: slajdy uległy awarii Open Office .. czy zamiast tego zdarza Ci się mieć zdjęcia online?
Yttrill
@Yttrill: slideshare.net/CAFxX/…
CAFxX
Dzięki, mogłem to zobaczyć, chociaż wykresy były w porządku, aby były widoczne, tekst był dobry.
Yttrill

Odpowiedzi:

8

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ę”.

Max
źródło
8

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 .

gasche
źródło
6

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.

John Lasseter
źródło
1
Pracujemy również nad projektem podobnym do CompCert: CerCo ( cerco.cs.unibo.it ). W przeciwieństwie do CompCert, staramy się stworzyć zweryfikowany kompilator oszczędzający beton dla dużej części C (CompCert pokazuje tylko, że ekstensywne właściwości programu źródłowego są zachowywane przez kompilację). W kompilatorze wdrażamy również kilka umiarkowanie skomplikowanych optymalizacji pętli, a także „łagodne” optymalizacje, takie jak CompCert, które oczywiście wymagają weryfikacji pod kątem oszczędności kosztów.
Dominic Mulligan,
5

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.

Chad Brewbaker
źródło