Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Deforestacja Metody optymalizacji dla języka SBQL Marta J. Burzańska 15 października 2009.

Podobne prezentacje


Prezentacja na temat: "Deforestacja Metody optymalizacji dla języka SBQL Marta J. Burzańska 15 października 2009."— Zapis prezentacji:

1 Deforestacja Metody optymalizacji dla języka SBQL Marta J. Burzańska 15 października 2009

2 Plan prezentacji Ogólne definicje i reguły Deforestacja – odrobina teorii Początki Tania deforestacja Lightweight fusion – Zastosowania dla SBQLa Rozdzielność operatorów algebraicznych względem kropki Optymalizacja close by

3 Plan prezentacji Ogólne definicje i reguły Deforestacja – odrobina teorii Zastosowanie dla SBQLa Rozdzielność operatorów algebraicznych względem kropki Optymalizacja close by

4 Haskell Przykład notacji map :: (a → b) → [a] → [b] map f [ ] = [ ] map f (x:xs) = f x : map f xs Funkcja foldr foldr :: (a → b → b) → b → [a] → b foldr f z [ ] = z foldr f z (x:xs) = f x (foldr f z xs)

5 Lambda-rachunek

6 Plan Ogólne definicje i reguły Deforestacja – odrobina teorii Początki Tania deforestacja Lightweight fusion Rozdzielność operatorów algebraicznych względem kropki Optymalizacja close by

7 Problematyka Struktury pośrednie automatycznie generowane i niszczone podczas wykonywania programu W językach funkcyjnych używane często jako „klej” łączący różne elementy programu W językach zapytań wyniki podzapytań wykorzystywane do obliczeń wyniku końcowego Zwykle listy, struktury, bagi Pochłaniają zasoby Czy naprawdę są nam potrzebne?

8 Przykłady Haskell sum (map square [1..100] ) Generuje 2 listy pośrednie: Listę liczb naturalnych od 1 do 100 Listę kwadratów liczb naturalnych Wynikiem jest pojedyncza liczba SBQL (Emp where Child.birthday >' ').(fname,sname)

9 Deforestacja W rzeczywistości jest to grupa algorytmów zajmujących się eliminacją struktur pośrednich Popularne nazwy: program fusion, fusion, deforestation Główna idea - „skleić” definicje dwóch funkcji jeżeli jedna generuje struktury pośrednie i przekazuje je jako argument do drugiej Pierwsza praca: Philip Wadler, 1990, „Deforestation: transforming programs to eliminate trees”

10 Odmiany deforestacji Pierwszy pomysł był bardzo dobry koncepcyjnie, ale implementacyjnie niedopracowany Eliminacja drzew pośrednich w interpreterach języka Haskell Wiele odmian dla wielu problemów i języków Uwzględniające zapytania rekurencyjne i nie, Typowanie Najlepszy pomysł jest zwykle najprostszy

11 Tania deforestacja Inne nazwy: „shortcut fusion”, „foldr\build rule” Obserwacja – te funkcje które mogą podlegać „wylesianiu” można również zapisać przy użyciu foldr Wprowadzając funkcję build służącą do „generowania” struktur pośrednich dostajemy za pół-darmo mechanizm ich eliminacji

12 Lekka fuzja rekurencji „Lightweight fusion by fixed - point promotion” Tania deforestacja nie radzi sobie z rekurencją Łącząc dwie funkcje rekurencyjne, których definicje można zapisać z użyciem operatora stałego punktu można je „wylesić” Metoda stosowana raczej do powtarzalnych złączeń dwóch funkcji

13 Plan Ogólne definicje i reguły Deforestacja – odrobina teorii Początki Tania deforestacja Lightweight fusion Rozdzielność operatorów algebraicznych względem kropki Optymalizacja close by

14 Tania deforestacja Algorytm:

15 Kilka przykładowych definicji

16 Przykład taniej deforestacji

17

18

19

20 Postać końcowa Jak to rozumieć? Przeszukując informacje o obiektach, po znalezieniu Pracownika sprawdź czy to Smith i dalej przeszukuj kolekcję pracowników

21 Tania deforestacja Przemyślenia końcowe Eliminacja konieczności „składowania” obiektów pośrednich sama w sobie zmniejszy zużycie zasobów Bonus: solidna platforma do zrównoleglania (w trakcie badań)

22 Plan Ogólne definicje i reguły Deforestacja – odrobina teorii Początki Tania deforestacja Lightweight fusion - Zastosowanie dla SBQLa Rozdzielność operatorów algebraicznych względem kropki Optymalizacja close by

23 Lekka fuzja Założenie: mamy dwie funkcje skonstruowane przy użyciu operatora punktu stałego 3 proste kroki: Rozpisać definicję obu funkcji i „wyciągnąć” operator stałego punktu funkcji wewnętrznej „przed nawias” Uprościć definicję wyliczając w miejscu co się da Wygenerować nową definicję funkcji

24 Propozycja dla SBQLa

25

26

27

28 Plan Ogólne definicje i reguły Deforestacja – odrobina teorii Zastosowanie dla SBQLa Rozdzielność operatorów algebraicznych względem kropki Optymalizacja rekurencji

29 Rozdzielność względem kropki Pomysł na zmniejszenie zużycia pamięci przez struktury pośrednie Składnia SBQLa, a konkretnie kropki pozwala na znacznie większą swobodę podczas optymalizacji Prosta obserwacja: sum ( Dept.employees.Emp.Salary) = sum ( Dept.sum ( employees. sum ( Emp.sum ( Salary ) ) ) )

30 Rozdzielność a średnia W podstawowej formie nie podlega rozdzielności... Ale mając: avg_p x = (sum(x),count(x)) avg_p_sum plist = (sum(first(plist)), sum(second(plist))) avg_div (x,y) = if y!=0: x/y else: 0 Poniższą definicje już można „rozdzielić”: avg x = avg_div(avg_p_sum(avg_p(x)))

31 Plan Ogólne definicje i reguły Deforestacja – odrobina teorii Zastosowanie dla SBQLa Rozdzielność operatorów algebraicznych względem kropki Optymalizacja rekurencji

32 Nie wszystkie wersje obliczeń rekurencyjnych podlegają optymalizacji przez „wylesianie” Close by zawierający cykle Close unique by Lekka fuzja Usprawnienie: w przypadku rekurencyjnego generowania dużej kolekcji danych, którą następnie poddamy filtracji używając „niezmiennika” - warunek filtrowania można wrzucić do pierwszego kroku rekurencji

33 Literatura Gill, A.; Launchbury, J.; Peyton Jones, S. (1993). ”A short cut to deforestation”, Grust, T.; Scholl, M. H. (1998). ”Query Deforestation”. Technical Report Wadler, P. (1990). ”Deforestation: transforming programs to eliminate trees”. Ohori, A.; Sasano, I. (2007). ”Lightweight fusion by fixed point promotion”. Burzańska, M., Stencel, K., Wiśniewski, P. (2009). „Pushing predicates into recursive SQL Common Table Expressions”


Pobierz ppt "Deforestacja Metody optymalizacji dla języka SBQL Marta J. Burzańska 15 października 2009."

Podobne prezentacje


Reklamy Google