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

Slides:



Advertisements
Podobne prezentacje
Indeksy w bazie danych Oracle
Advertisements

Algorytmy sortowania i przeszukiwania
C++ wykład 4 ( ) Przeciążanie operatorów.
Rekurencja 1 Podprogram lub strukturę danych nazywamy rekurencyjną, (recursive subprogram, recursive data structure) jeżeli częściowo składa się z samej.
Deklaracje i definicje klas w C++ Składowe, pola, metody Konstruktory
Rafał Hryniów Tomasz Pieciukiewicz
Materiały pochodzą z Platformy Edukacyjnej Portalu
Materiały pochodzą z Platformy Edukacyjnej Portalu
Programowanie I Rekurencja.
Bazy danych II Instrukcja SELECT Piotr Górczyński 25/08/2001.
typy całkowite (całkowitoliczbowe)
PROGRAMOWANIE STRUKTURALNE
ALGORYTM Co to jest algorytm?
Sztuczna Inteligencja 2.1 Metody szukania na ślepo
Materiały pochodzą z Platformy Edukacyjnej Portalu
Metoda pierwszeństwa operatorów
Opracowała: Elżbieta Fedko
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Szachy komputerowe. Ogólna idea silnika szachowego.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
(ph,pv) oznaczają stopień aproksymacji wielomianowej w kierunkach x i y nrdof = ilość stopni swobody na elemencie = (ph+1)* (pv+1) CAŁKOWANIE NA POJEDYNCZYM.
Co to jest studium przypadku?
BD-LAB6 Wojciech Pieprzyca
Wstęp do interpretacji algorytmów
WYKONYWANIE ZAPYTAŃ Przygotował Lech Banachowski na podstawie: 1.Raghu Ramakrishnan, Johannes Gehrke, Database Management Systems, McGrawHill, 2000 (książka.
Stworzyli: Edyta Celmer I Marta Kałuża.
Strategia skutecznego szukania informacji w Internecie
Wprowadzenie do JSP Copyright © Politecnico di Milano September 2003 Translation: Kamil Żyła, Politechnika Lubelska.
Podstawy programowania
Podstawy układów logicznych
Automatyczne dereferencje w języku SBQL
Wyrażenia algebraiczne
Przegląd podstawowych algorytmów
IV OTWARTE MISTRZOSTWA OPOLA W PROGRAMOWANIU ZESPOŁOWYM
Jerzy F. Kotowski1 Informatyka I Wykład 14 DEKLARATORY.
ITERACJA - powtórzenie
STEROWANIE Ale nie tylko
Języki i środowiska programowania systemów rozproszonych, Wykład 01 SBA&SBQL, Slajd Języki i środowiska programowania systemów rozproszonych Wykładowca:
Proste obliczenia w arkuszu
Elżbieta Fiedziukiewicz
Rozwiązanie zadań do zaliczenia I0G1S4 // indeks
Autor: Joanna Barańska Promotor: dr inż. Paweł Figat Konsultant:
Komendy SQL do pracy z tabelami i bazami
Wykład 10 typ zbiorowy rekurencja.
SYSTEMY EKSPERTOWE I SZTUCZNA INTELIGENCJA
ZAPIS BLOKOWY ALGORYTMÓW
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Model obiektowy bazy danych
Temat 1: Ogólne cechy języka PHP
Autor: Damian Urbańczyk
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Algorytmy- Wprowadzenie do programowania
PHP Instrukcja warunkowa if Damian Urbańczyk. Warunek? Instrukcję warunkową wykorzystujemy wtedy, gdy chcemy sprawdzić pewien fakt, który może być prawdziwy.
Haskell. Dopasowanie do wzorca Jest to operacja, gdzie pewnie wyrażenie sprawdza się ze wzorcem, w którym może znajdować się jedno lub więcej "wolnych.
Algorytmy równoległe Algorytm równoległy pozwala na wykonywanie w danej chwili więcej niż jednej operacji. EREW - wyłączny odczyt i wyłączny zapis; CREW.
Programowanie imperatywne i język C Copyright, 2007 © Jerzy R. Nawrocki Wstęp do.
Wstęp do interpretacji algorytmów
Portal edukacyjny A.Ś. Tworzenie kwerend w programie Access.
Rozdział IV Wyrażenia proceduralne algorytmów Grzegorz Gacek Patryk Gajewski.
Wstęp do programowania Wykład 1
„Filtry i funkcje bazodanowe w EXCELU”
 Formuła to wyrażenie algebraiczne (wzór) określające jakie operacje ma wykonać program na danych. Może ona zawierać liczby, łańcuchy znaków, funkcje,
Programowanie strukturalne i obiektowe Klasa I. Podstawowe pojęcia dotyczące programowania 1. Problem 2. Algorytm 3. Komputer 4. Program komputerowy 5.
Rekurencja - Haskell Bartosz Pawlak Sebastian Żółtowski Adam Stegenda Krystian Sobótka Tomasz Gołębiewski.
Rozdział 5 REKURENCJA.
Funkcje wyższego rzędu
Efektywność algorytmów
Haskell Składnia funkcji.
Instrukcja warunkowa if
Zapis prezentacji:

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

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

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

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)

Lambda-rachunek

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

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?

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)

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”

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

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

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

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

Tania deforestacja Algorytm:

Kilka przykładowych definicji

Przykład taniej deforestacji

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

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ń)

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

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

Propozycja dla SBQLa

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

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 ) ) ) )

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)))

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

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

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”