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.


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


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



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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.