Kompilacja iteracyjna Piotr Błaszyński. Szybkie programy Prawa ograniczające:  prawo Moore'a (jego granice),  prawo Gatesa,  prawo Amdahla,  prawo.

Slides:



Advertisements
Podobne prezentacje
Programowanie w PMC.
Advertisements

Marcin Bogusiak Paweł Pilewski
Metoda simpleks Simpleks jest uniwersalną metodą rozwiązywania zadań programowania liniowego. Jest to metoda iteracyjnego poprawiania wstępnego rozwiązania.
Metody rozwiązywania układów równań liniowych
Programowanie I Rekurencja.
Zadanie z dekompozycji
Złożoność procesu konstrukcji oprogramowania wymusza podział na etapy.
27/09/ Języki programowania 1 Piotr Górczyński Pętle.
Techniki konstrukcji algorytmów
PROGRAMOWANIE STRUKTURALNE
PROGRAMOWANIE STRUKTURALNE
Nośniki sygnałów - przykład Nośniki sygnałów – przykład.
Zrównoleglanie programu sekwencyjnego
1 RISC – nasze założenia Podstawowe cechy: Wszystkie operacje są realizowane na rejestrach, Tylko operacje typu load i store wymagają dostępu do pamięci,
Amdahl’s Law ©WK2003.
Procesor DSP Sharc ADSP21161 firmy Analog Devices
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.
Instrukcje 1 Definicje wstępne Formalny opis akcji wykonywanej przez komputer nazywamy instrukcją ( statement), Każda instrukcja kończona jest średnikiem.
ALGORYTMY STEROWANIA KILKOMA RUCHOMYMI WZBUDNIKAMI W NAGRZEWANIU INDUKCYJNYM OBRACAJĄCEGO SIĘ WALCA Piotr URBANEK, Andrzej FRĄCZYK, Jacek KUCHARSKI.
Metoda simpleks opracowanie na podstawie „Metody wspomagające podejmowanie decyzji w zarządzaniu” D. Witkowska, Menadżer Łódź Simpleks jest uniwersalną.
Opcje kompilatora g77 g77 [opcje] pliki_źródłowe Opcje: -c tylko kompilacja bez linkowania -S kompilacja do kodu assemblera -E tylko pre-processing -o.
Sieci Hopfielda.
Zdarzenia w programach VI (zdarzenia rejestrowane dynamicznie)
Jak uczę programowania?
PASCAL (2) dr Anna Kwiatkowska.
Projektowanie dynamiki - diagramy interakcji
Heterogeniczne procesory wielordzeniowe w urządzeniach audio
Zastosowanie technologii CUDA w sztucznej inteligencji
Heterogeniczne procesory wielordzeniowe w urządzeniach audio
Wykład 2 Cykl życia systemu informacyjnego
C.d. wstępu do tematyki RUP
Podstawy programowania II
Programowanie w języku Matlab
Metodyka nauczania Informatyki
© A. Jędryczkowski – 2006 r. © A. Jędryczkowski – 2006 r.
Algorytmy i struktury danych
PL/SQL Zajęcia nr II PL/SQL(2) M. Rakowski - WSISiZ.
SYSTEM DYNAMICZNEJ ANALIZY JAKOŚCI SCENARIUSZY BIZNESOWYCH Łukasz Budnik.
Systemy wspomagania decyzji
Algorytm DIC Dynamic Itemset Countin
Instrukcje iteracyjne
Maszyna wirtualna ang. virtual machine, VM.
Dana jest sieć dystrybucji wody w postaci: Ø      m- węzłów,
EXCEL Wykład 4.
Użytkowanie i programowanie Matlaba
Informatyka MZT1 Wykład 6 Iteracje while i repeat Tablice Rekordy
Rational Unified Process Implementacja Aleksandra Reiman, gr. I-52.
MS Excel - wspomaganie decyzji
Podstawy programowania
Algorytmika Iteracje autor: Tadeusz Lachawiec.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Derekursywacja i optymalizacja kodu
Wnioskowanie statystyczne
MODELOWANIE ROZPRĘŻANIA GAZU Programowanie probabilistycznego modelu rozprężania gazu w próżnię Witold Kranas.
Zagadnienia AI wykład 6.
EXCEL Wstęp do lab. 4. Szukaj wyniku Prosta procedura iteracyjnego znajdowania niewiadomej spełniającej warunek będący jej funkcją Metoda: –Wstążka Dane:
Programowanie imperatywne i język C Copyright, 2007 © Jerzy R. Nawrocki Wstęp do.
Podsumowanie wiedzy MPDI2 sem.3 INFORMATYKA. tworzenie nowego pliku i katalogu, nawigacja po katalogach, listowanie zawartości katalogu, zmiana nazw,
Pętle – instrukcje powtórzeń
Temat 3: Podstawy programowania Algorytmy – 2 z 2 _________________________________________________________________________________________________________________.
© Kazimierz Duzinkiewicz, dr hab. inż. Katedra Inżynierii Systemów Sterowania Modelowanie i podstawy identyfikacji 2015/2016 Modele neuronowe – podstawy,
Programowanie strukturalne i obiektowe Klasa I. Podstawowe pojęcia dotyczące programowania 1. Problem 2. Algorytm 3. Komputer 4. Program komputerowy 5.
Możliwości automatycznego zrównoleglania kodu w kompilatorze języka C Piotr Błaszyński Katedra Inżynierii Oprogramowania.
Kompilatory optymalizujące Piotr Błaszyński. Generowanie kodu, wstęp : - Kod generowany jest dla różnych maszyn, trzeba pamiętać, że ten sam program źródłowy.
Optymalizacja programów Open-Source
Listy.
Podstawy programowania
SHA1 – Secure Hash Algorithm
Zapis prezentacji:

Kompilacja iteracyjna Piotr Błaszyński

Szybkie programy Prawa ograniczające:  prawo Moore'a (jego granice),  prawo Gatesa,  prawo Amdahla,  prawo Gustafsona.

Problemy i rozwiązania Programiści nie znają wszystkich metod uzyskiwania wyższej wydajności, Pracując z istniejącym kodem muszą go dobrze zrozumieć przed dokonaniem zmian. Automatyczne wyszukiwanie najlepszego kodu  sekwencyjnego,  równoległego.

Problemy i inne rozwiązania  LLVM  Profiler guided  HotSpot i JIT (dlaczego muszą być rozpędzone i czy zużywają zasoby)  Architektury się jednak zmieniają

Kompilacja iteracyjna  Przy pomocy modelu statycznego dokonuje się wyboru metod optymalizacji kodu wynikowego jak w tradycyjnym kompilatorze,  Wybierane są parametry dla wybranych optymalizacji,  Generowany jest tymczasowy kod wynikowy z wybranymi wcześniej parametrami,  Testowana jest wydajność kodu wynikowego, informacje te są zwrotnie przekazywane do kompilatora

Kompilacja iteracyjna  Na podstawie powyższych informacji zmieniane są parametry i następuje kolejna kompilacja,  W przypadku jeśli wydajność jest na wystarczającym poziomie, przygotowywana jest wersja ostateczna kodu wynikowego.

Model kompilatora Kod źródłowy Kompilator (analiza statyczna) Ostateczny kod wynikowy Tymczasowy kod wynikowy Profilowanie / symulacja (analiza dynamiczna) System ekspercki Analiza empiryczna Algorytmy ewolucyjne Sprzężenie zwrotne Wyniki empiryczne Pula transformacji

Metody testowania 1.Przygotowanie eksperymentów i na ich podstawie opracowanie części wiedzy 2.Opracowanie modelu Dane wejściowe: Program źródłowy, architektura, rozmiar problemu, zbiór parametrów. Dane wejściowe przekształcane przy pomocy opracowanego modelu. Na wyjściu otrzymujemy wybrane/zaproponowane parametry (zestaw parametrów) dla zadanego kryterium (czas, pamięć, energia). Dodatkowo elementem danych wejściowych dla opracowanego modelu jest wiedza pochodząca z eksperymentów.

Prosty przykład - loop unrolling Loop Unrolling Żeby można było zmieniać kolejność kodu, w większości przypadku należy zwracać uwagę na granice pojedynczej iteracji pętli (występuje tam przede wszystkim zmiana przepływu sterowania przez instrukcje skoku). Efektywną techniką pozwalającą rozwiązać ten problem jest rozwijanie pętli. Zalecane są niewielkie rozmiary rozwinięć. Dzięki rozwinięciom możliwe jest łatwiejsze, o ile nie ma zależności, znalezienie możliwości zrównoleglenia.

Prosty przykład - loop unrolling Pętla for for (i=0; i<N; i++) S(i); Po rozwinięciu czterokrotnym: for (i=0; i+4<N; i+=4){ S(i); S(i+l); S(i+2); S(i+3); } for( ; i<N; i++) S(i);

Prosty przykład - loop unrolling wszystkie testy z MiiBench, wielkość rozwinięć większa od przyjętej standardowo, własny frontend kompilatora (ANSI C) - modyfikacja źródeł.

Prosty przykład - loop unrolling Przykładowy program w wersji oryginalnej, for (i = 1; i > 8; j = 1 + (j / 2); weight[i] = j << 8; }

Prosty przykład - loop unrolling Przykładowy program w wersji rozwiniętej 4 razy, for (i = 1; i + 4 > 8; j = 1 + (j / 2); weight[i] = j > 8; j = 1 + (j / 2); weight[i+1] = j > 8; j = 1 + (j / 2); weight[i+2] = j > 8; j = 1 + (j / 2); weight[i+3] = j > 8; j = 1 + (j / 2); weight[i] = j << 8; }

Prosty przykład - loop unrolling Przykładowe wyniki: Przed: 8 10 Found dataset: 8 Command line: -z -k -f -c../../consumer_data/2.wav > ftmp_out Loop wrap: 10 real 0m31.143s user 0m30.422s sys 0m0.648s Po: 8 10 Found dataset: 8 Command line: -z -k -f -c../../consumer_data/2.wav > ftmp_out Loop wrap: 10 real 0m29.050s user 0m28.526s sys 0m0.416s

Prosty przykład - loop unrolling Dobór do kompilacji statycznej na danej architekturze: Wychodzi, że dla większości programów wartości dające efekty na architekturze 2-rdzeniowej, procesor E8400, _sensowne zmiany dają wartości loop_unroll z przedziału Należy pamiętać o kosztach zmian: ll a.out4 -rwxr-xr-x 1 ubuntu ubuntu :40 a.out4 ll a.out8 -rwxr-xr-x 1 ubuntu ubuntu :46 a.out8

Optymalizacja – PSO For each particle Initialize particle END Do Particle_velocity_computing() While maximum iterations or minimum error criteria is not attained

Optymalizacja – PSO Particle_velocity_computing() For each particle Obliczamy wartość dopasowania (fitness value) If wartość dopasowania lepsza od najlepszej (pBest) w historii ustaw aktualną wartość jako nową wartość pBest End jako gBest wybieramy cząsteczke z najlepszą wartością For each particle Obliczamy prędkość cząsteczek zgodnie ze wzorem (a) Aktualizujemy pozycje cząsteczek zgodnie ze wzorem (b) End

Optymalizacja – PSO a) v[] = v[] + c1 * rand() * (pbest[] - present[]) + c2 * rand() * (gbest[] - present[]) b) present[] = present[] + v[]

Dziękuję za uwagę