Hoopl Higher-order optimization library

Slides:



Advertisements
Podobne prezentacje
INSTRUKCJE Umożliwiają zapis algorytmu, służą do sterowania przebiegiem programu. warunkowe (podejmowanie decyzji) 1. if-else „jeżeli”, 2. switch-case.
Advertisements

Temat 2: Podstawy programowania Algorytmy – 1 z 2 _________________________________________________________________________________________________________________.
© IEn Gdańsk 2011 Wpływ dużej generacji wiatrowej w Niemczech na pracę PSE Zachód Robert Jankowski Andrzej Kąkol Bogdan Sobczak Instytut Energetyki Oddział.
1 FRAZEOTRANSLACJA ORAZ JEJ ZNACZENIE W KSZTAŁCENIU I DOSKONALENIU TŁUMACZY MONIKA SUŁKOWSKA Instytut Języków Romańskich i Translatoryki Uniwersytet Śląski,
1 Dr Galina Cariowa. 2 Legenda Iteracyjne układy kombinacyjne Sumatory binarne Sumatory - substraktory binarne Funkcje i układy arytmetyczne Układy mnożące.
Tworzenie odwołania zewnętrznego (łącza) do zakresu komórek w innym skoroszycie Możliwości efektywnego stosowania odwołań zewnętrznych Odwołania zewnętrzne.
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 28Slide 1 Restrukturyzacja oprogramowania l Przedstawienie procesu restrukturyzacji oprogramowania,
Stężenia Określają wzajemne ilości substancji wymieszanych ze sobą. Gdy substancje tworzą jednolite fazy to nazywa się je roztworami (np. roztwór cukru.
ZASTOSOWANIE FUNKCJI WYKŁADNICZEJ I LOGARYTMICZNEJ DO OPISU RUCHU DRGAJĄCEGO Agnieszka Wlocka Agnieszka Szota.
(c) Łukasz Olek. InMoST jest finansowany ze środków EFS. Plan dnia ▪ 10:00-10:15 Wprowadzenie ▪ 10:15-11:30 Innowacje w inżynierii wymagań ▪ 11:30–12:00.
REFERAT USTNY Czyli na co zwrócić uwagę podczas tworzenia prezentacji i tekstu naukowego Zakład Ekologistyki I Zarządzania Ryzykiem Środowiskowym Wrocław,
Sprawdzian szóstoklasisty w pigułce. Witaj szóstoklasisto! 5 kwietnia 2016 roku napiszecie sprawdzian szóstoklasisty złożony z dwóch części : 1.Część.
Autor: Kierunek: Promotor: Wykorzystanie GIS do wyznaczenia tras bezpiecznego przewozu transportu przez miasto Małgorzata Kość geodezja i kartografia dr.
Badania elastooptyczne Politechnika Rzeszowska Katedra Samolotów i Silników Lotniczych Ćwiczenia Laboratoryjne z Wytrzymałości Materiałów Temat ćwiczenia:
EWALUACJA JAKO ISTOTNY ELEMENT PROJEKTÓW SYSTEMOWYCH Sonia Rzeczkowska.
© Kazimierz Duzinkiewicz, dr hab. inż. Katedra Inżynierii Systemów Sterowania Modelowanie i podstawy identyfikacji 2015/2016 Modelowanie rozmyte – podstawy,
„Książki nie mają właściwości róż, dlatego nie szukajmy wciąż najświeższych”
Filozofia na lata jesieni
Wyższa Szkoła Informatyki i Zarządzania w Bielsku-Białej Wydział Informatyki Kierunek: Informatyka Specjalność: Systemy Informatyczne PRACA DYPLOMOWA INŻYNIERSKA.
TWIERDZENIE TALESA. Tales z Miletu to jeden z najwybitniejszych mędrców starożytności. Zasłynął nie tylko jako filozof ale także jako matematyk i astronom.
Czym jest gramofon DJ-ski?. Gramofon DJ-ski posiada suwak Pitch służący do płynnego przyspieszania bądź zwalniania obrotów talerza, na którym umieszcza.
Python. Języki Programistyczne Microcode Machine code Assembly Language (symboliczna reprezentacja machine code) Low-level Programming Language (FORTRAN,
Metody sztucznej inteligencji - Technologie rozmyte i neuronowe 2015/2016 Perceptrony proste nieliniowe i wielowarstwowe © Kazimierz Duzinkiewicz, dr hab.
Projektowanie systemów cyfrowych z wykorzystaniem języka VHDL Układy sekwencyjne.
Pętla synchronizacji fazowej (PLL - Phase Locked Loop)
Wykonał: Mgr Inż. Krzysztof Harwacki. Value Mapping for Lean management Sytuacja stanowi mały, prosty przykład zastosowania mapowania strumienia wartości.
Mobilne Systemy wykrywania obiektów z sygnałów wizyjnych Pracę dyplomową opracował: inż. Michał Szepielak Promotor: dr inż. Krzysztof Różanowski.
, + - = 0,5 CZYTAJ DOKŁADNIE ZADANIA I POLECENIA. IM TRUDNIEJSZE ZADANIE, TYM BARDZIEJ WARTO JE PRZECZYTAĆ KILKA RAZY.
O PARADOKSIE BRAESSA Zbigniew Świtalski Paweł Skałecki Wydział Matematyki, Informatyki i Ekonometrii Uniwersytet Zielonogórski Zakopane 2016.
Dziedziczenie, polimorfizm, Interfejsy
Mikroprocesory.
TEMAT: Omówienie programu Twido Soft i jego podstawowe możliwości
System Monitorowania Kształcenia (SMK) Jak zapisać się na kurs / specjalizację – instrukcja krok po kroku Od dnia 1 lipca 2017 celem zapisania się na.
Programowanie Obiektowe – Wykład 1
Schematy blokowe.
DEFINICJA I ZASTOSOWANIE W JĘZYKU HASKELL
FIZYKA na służbie b’Rowersa ...krótki kurs.
FIZYKA na służbie b’Rowersa ...krótki kurs.
Egzamin gimnazjalny w klasach III gimnazjum 19 kwietnia 2017
Liczby pierwsze.
Akademia C# - Lab2 Zmienne, instrukcje warunkowe, pętle, debugger,
jest największą liczbą na świecie?
ALGORYTMY I STRUKTURY DANYCH
Akademia C# lab. 9 Zdarzenia i delegaty.
Lekcja 1 – Hello World! Visual Studio, coś łatwego na początek 
Kurs języka C++ – wykład 13 ( )
Próbny egzamin gimnazjalny 2017/2018
Języki programowania.
Dynamics 365 CE i język TypeScript
Laboratorium 1 – obsługa wejść i wyjść
Instrukcje wyboru.
HDF5 w zastosowaniu do DMR - inż
Broszura firmy To miejsce jest doskonałe na określenie misji firmy
Seminarium dydaktyczne: Platformy Internetowe wspierające nauczanie informatyki Dr inż. Szymon Wąsik.
ALGORYTMY I STRUKTURY DANYCH
Strukturalne wzorce projektowe
ALGORYTMY I STRUKTURY DANYCH
Zmienne i typy danych w C#
Rekurencja Ponieważ w Haskellu nie mamy klasycznych pętli for czy while dlatego w wielu algorytmach musimy używać rekurencji.
Implementacja rekurencji w języku Haskell
Bufory.
Język C++ Operatory Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła.
ALGORYTMY I STRUKTURY DANYCH
Program na dziś Wprowadzenie Logika prezentacji i artykułu

Szablon prezentacji Uniwersytetu Jagiellońskiego Collegium Medicum
Szablon prezentacji Uniwersytetu Jagiellońskiego Collegium Medicum
dr Robert Kowalczyk, PWSZ Płock
Python 3 Wprowadzenie.
Zapis prezentacji:

Hoopl Higher-order optimization library na podstawie: Hoopl: A Modular, Reusable Library for Dataflow Analysis and Transformation N. Ramsey, J. A. Dias, and S. Peyton Jones czyli funkcyjna opowieść o 20 typach :] parafraza z http://vimeo.com/16753485

Plan Prezentacji 2 przykłady motywujące Biblioteka Opis interfejsu (API) Poprawność Wydajność Powiązane prace Próba wykorzystania Hoopl w pracy mgr

Przykłady motywujące: 1. propagacja i zwijanie stałych $ cabal install hoopl-3.8.7.1 $ git clone http://darcs.haskell.org/packages/hoopl.git/ $ cd hoopl/testing/ $ runhaskell Main.hs Test:tests/if-test f() { L1: x = 3 + 4 z = x > 5 if z then goto L2 else goto L3 L2: ret (1) L3: ret (2) } L1: goto L2

Przykłady motywujące: 1. propagacja i zwijanie stałych

Przykłady motywujące: 2. eliminacja martwych zmiennych Z przeplataniem analizy z transformacją: f() { f() { f() { --{y}------------ --{}------------- y := 42 y := 42 --{y}------------ x := y + 2 --{}------------- --{}------------- --{}----------- ret (7) ret (7) ret (7) } } } Tak robi Hoopl!

Przykłady motywujące: 2. eliminacja martwych zmiennych Najpierw analiza, potem transformacja: f() { f() { --{}------------- y := 42 x := y + 2 --{}------------- --{}----------- ret (7) ret (7) } } Tak robią inne biblioteki

Plan Prezentacji 2 przykłady motywujące Biblioteka Opis interfejsu (API) Poprawność Wydajność Powiązane prace Próba wykorzystania Hoopl w pracy mgr

Hoopl ~ duża funkcja Hoopl graf poprawiony graf porządek (dataflow lattice) funkcja przepisywania węzłów (node rewrite function) funkcja przesyłania faktów (node transfer function)

Hoopl – duża funkcja f() { f() { f() { --{y}------------ --{}------------- y := 42 y := 42 --{y}------------ x := y + 2 --{}------------- --{}------------- --{}----------- ret (7) ret (7) ret (7) } } }

Hoopl ~ duża funkcja

Hoopl ~ duża funkcja Implementacja fp_lattice, fp_transfer, fp_rewrite będzie dalej

Biblioteka vs Klient biblioteki

Wejście: Graf: węzły, krawędzie, bloki

Elementy grafów: Węzły = instrukcje Bloki (bloki proste) Grafy Test:tests/if-test f() { L1: x = 3 + 4 z = x > 5 if z then goto L2 else goto L3 L2: ret (1) L3: ret (2) }

Kształt Elementy grafów są: Otwarte / zamknięte na wejściu Otwarte / zamknięte na wyjściu L1: :: Node C O x = 3 + 4 :: Node O O z = x > 5 :: Node O O if z then goto L2 else goto L3 :: Node O C L2: :: Node C O ret (1) :: Node O C L3: :: Node C O ret (2) :: Node O C

Węzeł = instrukcja biblioteka: klient:

Krawędzie biblioteka: klient: Fakty (np. {x = 42}) na krawędziach Statyczna kontrola – exhaustive patterns

Blok (blok prosty) biblioteka: Sekwencja węzłów (instrukcji) Typ bloku mówi o kształcie Statyczna kontrola – Bcat

Graf biblioteka: MaybeO – statycznie wiemy czy argument nie jest pusty

Graf biblioteka (prywatna funkcja):

Przykład wykorzystania – propagacja i zwijanie stałych

Hoopl ~ duża funkcja

Hoopl ~ duża funkcja

Old New Joined x -> 42 x -> 42 y -> False y -> 7 y -> T z -> 5 z -> 5 z -> 5

Fact U (Map Label Fact)

--{x = 7}-------- --{x = 7}-------- z = x > 5 z = 7 > 5

z = 7 > 5 z = True

Przykłady motywujące: 1. propagacja i zwijanie stałych $ cabal install hoopl-3.8.7.1 $ git clone http://darcs.haskell.org/packages/hoopl.git/ $ cd hoopl/testing/ $ runhaskell Main.hs Test:tests/if-test f() { L1: x = 3 + 4 z = x > 5 if z then goto L2 else goto L3 L2: ret (1) L3: ret (2) } L1: goto L2

Plan Prezentacji 2 przykłady motywujące Biblioteka Opis interfejsu (API) Poprawność Wydajność Powiązane prace Próba wykorzystania Hoopl w pracy mgr

Warunki poprawności Porządek nie może mieć nieskończonych łańcuchów Funkcja przesyłania faktów musi być monotoniczna – większy fakt → większy fakt Funkcja przepisywania węzłów musi być poprawna: rewrite (graf g) → węzeł n transfer g > transfer n Rekurencja funkcji przepisywania węzłów musi być skończona Poprawność udowodniona w pracy Lernera, Grove'a i Chambersa

Plan Prezentacji 2 przykłady motywujące Biblioteka Opis interfejsu (API) Poprawność Wydajność Powiązane prace Próba wykorzystania Hoopl w pracy mgr

Wydajność „ciężko powiedzieć” Temat do zbadania / szukania usprawnień Hoopl wykorzystany w GHC Szybkość spadła o ok. 15%

Plan Prezentacji 2 przykłady motywujące Biblioteka Opis interfejsu (API) Poprawność Wydajność Powiązane prace Próba wykorzystania Hoopl w pracy mgr

Powiązane prace Podstawy teoretyczne – dobrze opracowane Praktyka, Frameworki – dopiero się rozwijają Zwykle tylko analiza, bez transformacji Jeśli nawet, to zwykle sekwencyjnie bez przeplotu Do programów w Javie – Soot: tylko analiza Do programów w C – CIL: sekwencynie Kompilator Whirlwind: rozszerzenie kompilatora Vortex, podobne do Hoopl, mniej czytelna implementacja

Plan Prezentacji 2 przykłady motywujące Biblioteka Opis interfejsu (API) Poprawność Wydajność Powiązane prace Próba wykorzystania Hoopl w pracy mgr

Próba wykorzystania Hoopl do pracy mgr Abstrakcyjny język: Lukrecja Implementacja usuwania martwych przypisań Problemy Konwersja AST Lukrecji do AST (IR) w stylu Hoopl'a … i z powrotem

Próba wykorzystania Hoopl do pracy mgr Kod w edytorze...

Próba wykorzystania Hoopl do pracy mgr Wykorzystanie do reguł typowania: - konwersja AST - reguły typowania izomorficzne z tym co już mamy Wykorzystanie do wnioskowania o typach na podstawie przepływu sterowania (flowtyping) + mechanizm wyliczania punktu stałego (aczkolwiek to da się łatwo samemu napisać) - konwersja AST (jak wyżej) - największe problemy i tak są gdzie indziej (pętle)

Podsumowanie

Hoopl – podsumowanie Biblioteka do optymalizacji Algorytm przeplatania analizy i transformacji Kontrola typów Abstrakcja Niezależny od analizowanego języka Funkcje pomagające pisać kod klienta Uproszczona implementacja

pytania?