Seminarium Zakładowe IDSS. Równoległe obliczenia metaheurystyczne z wykorzystaniem klastra obliczeniowego

Podobne dokumenty
Algorytm memetyczny dla rzeczywistego problemu planowania tras pojazdów

Wykład Ćwiczenia Laboratorium Projekt Seminarium

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Laboratorium technik optymalizacji

Wprowadzenie. Co to jest klaster? Podział ze względu na przeznaczenie. Architektury klastrów. Cechy dobrego klastra.

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Numeryczna algebra liniowa

Podstawy programowania. Wprowadzenie

Algorytmy memetyczne (hybrydowe algorytmy ewolucyjne)

Modelowanie rynków finansowych z wykorzystaniem pakietu R

Ćwiczenie nr: 9 Obliczenia rozproszone MPI

Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

Przegląd technik wirtualizacji i separacji w nowoczesnych systemach rodziny UNIX

OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop Spis treści

Sortowanie przez scalanie

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Dokumentacja końcowa projektu z ZPR

Zapisywanie algorytmów w języku programowania

Algorytmy i Struktury Danych

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

Simulink MATLAB Przegląd obiektów i przykłady zastosowań

Zadanie 1: Piętnastka

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

Programowanie obiektowe zastosowanie języka Java SE

Ćwiczenie nr: 9 Obliczenia rozproszone MPI

Strefa pokrycia radiowego wokół stacji bazowych. Zasięg stacji bazowych Zazębianie się komórek

Algorytm grupowania danych typu kwantyzacji wektorów

Praca w środowisku Visual Studio 2008, Visual C

Programowanie w języku C++ Grażyna Koba

Optymalizacja. Przeszukiwanie lokalne

Co to jest NODE.JS? Nowoczesne środowisko programistyczne

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Przegląd technik wirtualizacji i separacji w nowoczesnych systemach rodziny UNIX

Struktura systemu operacyjnego. Opracował: mgr Marek Kwiatkowski

Programowanie MorphX Ax

SAS Institute TECHNICAL SUPPORT )

Pracownia Komputerowa wykład III

Metody eksploracji danych w odkrywaniu wiedzy (MED) projekt, dokumentacja końcowa

Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop

Scenariusz lekcji. podać przykłady zalet użycia takiej instrukcji; opisać algorytm obliczania średniej n liczb;

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Materiał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje

PyPy's Approach to Virtual Machine Construction

Algorytmy i struktury danych

Modelowanie i Programowanie Obiektowe

CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu

Wykład 3 Składnia języka C# (cz. 2)

Domain-specific Languages. Języki dziedzinowe. Adam Robaszyński-Janiec

MATERIAŁY DO ZAJĘĆ I. Podstawowe pojęcia. Algorytm. Spis treści Przepis

Tworzenie natywnych aplikacji na urządzenia mobilne - PhoneGap Tomasz Margalski

Scenariusz lekcji. Scenariusz lekcji 1 TEMAT LEKCJI: 2 CELE: 2.1 Wiadomości: 2.2 Umiejętności: 3 METODY NAUCZANIA 4 ŚRODKI DYDAKTYCZNE

Maciej Piotr Jankowski

Optymalizacja ciągła

Techniki optymalizacji

Modelowanie Data Mining na wielką skalę z SAS Factory Miner. Paweł Plewka, SAS

ALGORYTMY GENETYCZNE ćwiczenia

Języki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski

Języki skryptowe w programie Plans

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Zasady programowania Dokumentacja

Laboratorium 1 - Programowanie proceduralne i obiektowe

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski. Bazy danych ITA-101. Wersja 1

Technologie informacyjne lab. 4

Spis treści. Rozdział 1. Aplikacje konsoli w stylu ANSI C i podstawowe operacje w Visual C

Automatyzacja procesu tworzenia sprzętowego narzędzia służącego do rozwiązywania zagadnienia logarytmu dyskretnego na krzywych eliptycznych

Języki i paradygmaty programowania - 1

Metody SI w grach komputerowych Gra Policjanci i złodziej (Algorytmy przeszukiwania grafów)

Obliczenia rozproszone MPI

Środowisko Keil. Spis treści. Krzysztof Świentek. Systemy wbudowane. 1 Trochę teorii. 2 Keil

Instalacja krok po kroku /instalacja programu, serwera bazy danych/

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

Przykładowe sprawozdanie. Jan Pustelnik

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób.

C# /.NET. Copyright by 3bird Projects 2018,

Instrukcja laboratoryjna cz.3

Android - wprowadzenie. Łukasz Przywarty

REFERAT PRACY DYPLOMOWEJ Temat pracy: SUDOKU - Algorytmy tworzenia i rozwiązywania

Wykaz zmian w programie SysLoger

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Zadania badawcze prowadzone przez Zakład Technik Programowania:

KAMERA AKUSTYCZNA NOISE INSPECTOR DLA SZYBKIEJ LOKALIZACJI ŹRÓDEŁ HAŁASU

Programowanie obiektowe

Magia Ruby : programowanie na wesoło / Eric Weinstein. Warszawa, Spis treści

Uniwersytet Warszawski Wydział Matematyki, Informatyki i Mechaniki. Paweł Parys. Nr albumu: Aukcjomat

Systemy wbudowane. Uproszczone metody kosyntezy. Wykład 11: Metody kosyntezy systemów wbudowanych

(Pluggable Authentication Modules). Wyjaśnienie technologii.

PRACA INŻYNIERSKA IMPLEMENTACJA MOBILNEGO KLIENTA BANKU ZABEZPIECZONEGO TOKENEM

JAX-RS czyli REST w Javie. Adam Kędziora

Dni: 3. Opis: Adresaci szkolenia

Koncepcja wirtualnej pracowni GIS w oparciu o oprogramowanie open source

Dokumentacja. Kalibracja parametrów modelu Hestona za rozszerzonego filtra Kalmana. Mikołaj Bińkowski Wiktor Gromniak

Webowy generator wykresów wykorzystujący program gnuplot

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

System zarządzania bazą danych lecznicy dla zwierząt

Transkrypt:

Seminarium Zakładowe IDSS Równoległe obliczenia metaheurystyczne z wykorzystaniem klastra obliczeniowego Krzysztof Kowalczykiewicz Marek Kubiak Dawid Weiss Przemysław Wesołek

Motywacje raz jeszcze... Zagospodarowanie wolnych mocy obliczeniowych w lab. 45 (15 x 3.2Ghz) Zbadanie istniejących rozwiązań do budowy klastrów obliczeniowych Zbudowanie dostępnego, łatwego w obsłudze i nieinwazyjnego systemu obliczeniowego Analiza metaheurystyk pod kątem zrównoleglenia w szczególności PMA - Pareto Memetic Algorithm na przykładzie problemów MOKP i MOTSP

Początki... Parallel Knoppix system Linux startujący z CD (lub pobierający dane z innego komputera już wystartowanego - PXE) łatwy w obsłudze i dobrze radzący sobie ze sprzętem w stosunku do Knoppix rozszerzony o skrypty do budowy klastra, odpowiednie API i przykłady Wady statyczny klaster kłopotliwe inicjowanie niskopoziomowe API (MPI, PVM)

Infrastruktura Alchemi Dostępna możliwość inicjowania obliczeń z dowolnej maszyny (nawet z zewnątrz PP - tunel) monitorowanie z zewnątrz Nieinwazyjna pracująca w tle na komputerach lab. usługa mały narzut i możliwość normalnego wykorzystywania maszyn nawet w trakcie obliczeń Łatwa w obsłudze możliwość stosowania Job API (dowolne binaria) aplikacje natywne.net (naśladujące wątki) prostota - ograniczona ilość narzędzi

Wyzwania technologiczne Integracja biblioteki MOMHlib z platformą.net oryginalnie napisana w Visual C++ przeniesiona na Linux/C++ ponowna integracja w Managed C++ (CLR) Oswojenie składni Managed C++ i mieszanie kodu managed i unmanaged Oswojenie API Alchemi

Adaptacja MOMHlib kompilacja się powiodła po usunięciu kilku drobnych problemów domyślnie aplikacja C++/CLR działa jako unmanaged) próba konwersji na managed nie powiodła się class -> ref class new -> gcnew biblioteka std ++ -> kolekcje.net wskaźniki & i * -> referencje ^

Managed C++ rozszerzenia języka C++ do pisania aplikacji działających na maszynie wirt. CLR (.NET) umożliwia mieszanie kodu/klas zarządzanych (wykorzystujących GC) i niezarządzanych (tradycyjne wskaźniki/referencje) skomplikowana składnia w porównaniu do C#, ale większa kontrola i możliwość mieszania z kodem unmanaged trudności mieszania kodu m/um w obrębie jednej klasy trudności z przenoszeniem typów

Managed C++ - przykład

API Alchemi Naśladuje API wątków Należy opakować jednostkę uruchomienia w potomka klasy GThread i zaimplementować metodę Start() Alchemi sam przenosi binaria (i wskazane pliki) na maszynę docelową Batch vs On-the-fly utworzenie wszystkich wątków na początku dodawanie nowych wątków w razie potrzeby

Obliczenia równoległe Podejście trywialne równoległe uruchamianie algorytmu z różnym wartościami parametrów i różnymi instancjami Podejście ambitniejsze analiza strukturalna algorytmu analiza czasów i krotności uruchomienia poszczególnych faz algorytmu (profiling) analiza możliwości rozdziału pętli analiza możliwości rozdziału danych Dobry kandydat dobrze separowalne dane lub pętle długotrwała iteracja (co najmniej kilka sekund)

PMA - Pareto Memetic Algorithm hybryda algorytmu genetycznego (rekombinacja) z przeszukiwaniem lokalnym (heurystyka lokalna) ogólny schemat: wygeneruj początkowy zbiór rozwiązań powtarzaj wylosuj wektor wag dla funkcji skalaryzującej wybierz dwa rozwiązania dobre wg funkcji skalaryzującej dokonaj rekombinacji rozwiązań zastosuj lokalną heurystykę do potomka aż zajdzie warunek zatrzymania

Równoległe PMA - intuicja równoległe lokalne wyszukiwanie równoległa analiza w wielu kierunkach? wybór najlepszego? równoległe iteracje pętli z różnymi czy tymi samymi wektorami wag? jak łączyć dane wyjściowe? równoległa rekombinacja różne metody? ta sama z różnymi parametrami?

Analiza uruchomieniowa PMA MOKP MOTSP generowanie początkowego zbioru rozw. 52% 4% główna pętla 48% 96% inicjalizacja wag <1% <1% turniej 17% 2% rekombinacja + local search 67% 95% aktualizacja zbioru rozw. 15% 2% ilość iteracji (tyś.) 7,5-17,5 2,5-22,5 śr. czas iteracji 895μs 18ms

Problemy z PMA... Zbyt krótkotrwałe powtórzenia pętli i local search aby zrównoleglać pojedyńcze iteracje Zrównoleglenie stwarza problem ze względu na słabą separowalność danych i problemy z łączeniem rezultatów z różnych uruchomień Duża ilość czynników losowych (wektor wag, turniej, rekombinacja) Implementacja MOKP wykorzystuje uproszczony local search - iteracja jeszcze krótsza

...zatem podejście trywialne MOKP 9 instancji TempPopulationSize 20 InitPopulationSize 150,200,250,300,350 Iterations 50 MOTSP 49 instancji TempPopulationSize 20, 40, 60 InitPopulationSize 100, 200, 300 Iterations 25, 50, 75 = 45 wątków = 1323 wątków

MOKP (45 wątków) Implementacja uproszczone lokalne przeszukiwanie (przywrócenie dopuszczalności po rekombinacji) Czas eksperymentu: ~7min. Całkowity czas obliczeń: ~1Ghz*h

MOTSP (1323 wątki) Implementacja pełne lokalne przeszukiwanie (DPXRecombine + Steepest LS) Czas eksperymentu: ~5h Całkowity czas obliczeń: ~200Ghz*h

Podsumowanie Infrastruktura Alchemi dostępna w lab. 45 (serwer na minos) Prosta integracja (bezpośrednio z.net lub batch job przez XML) Perspektywy bardziej dogłębna analiza PMA i zastosowanych heurystyk pod kątem zrównoleglania analiza metod łączenia rezultatów z różnych uruchomień