Rówoległe algorytmy genetyczne w zastosowaniu do problemu
Transkrypt
Rówoległe algorytmy genetyczne w zastosowaniu do problemu
WYDZIAŁ INŻYNIERII ELEKTRYCZNEJ I KOMPUTEROWEJ KATEDRA AUTOMATYKI I TECHNIK INFORMACYJNYCH Przetwarzanie Rozproszone i Równoległe www.pk.edu.pl/~zk/PRIR_HP.html Wykładowca: dr inż. Zbigniew Kokosiński [email protected] Wykład 1: Wprowadzenie do PRIR • Co to jest PRIR? • Tradycyjne obszary przetwarzania równoległego i rozproszonego • Porównanie systemów równoległych i rozproszonych • Konwergencja systemów RiR • Argumenty za rozwojem systemów RiR • Charakterystyka systemów RiR • Modele i paradygmaty • Wnioski Co to jest PRIR ? Pojęcie przetwarzania RiR obejmuje homogeniczne bądź heterogeniczne systemy wieloprocesorowe zbudowane w celu : • połączenia (zdalnych) zasobów w jedną całość • prowadzenia obliczeń o dużej skali (np. symulacji) • przyspieszenia krytycznych obliczeń (systemy obronne, loty kosmiczne, prognozy) • przetwarzania dużej liczby rozproszonych danych • rozwiązania trudnych problemów optymalizacji (przeszukiwania dużych przestrzeni rozwiązań) Tradycyjne obszary przetwarzania równoległego • ” równoległość = skrócenie czasu obliczeń ” • budowa równoległego sprzętu o różnych architekturach - od końca lat 80. • główna trudność - środowiska programowania równoległego • główne obszary zastosowań - obliczenia naukowe i inżynierskie • bariera rozwoju - zbyt mały rynek zbytu • konsekwencja - upadek wielu doskonałych firm • perspektywa - klastry jako nowa platforma Tradycyjne obszary przetwarzania rozproszonego • system rozproszony jako zbiór autonomicznych połączonych ze sobą komputerów współpracujących ze sobą i dzielących zasoby • zastosowania komercyjne - od małych systemów klient-serwer poprzez sieci obejmujące całą jednostkę organizacyjną do Internetu • różne stopnie powiązania systemów • organiczny rozwój od LAN do WAN Tradycyjne obszary przetwarzania rozproszonego • problemy podstawowe - brak wspólnego zegara, możliwość błędów transmisji • wspólny dostęp do dzielonych zasobów implikuje możliwość interferencji programów użytkowników • heterogeniczność systemów rozproszonych implikuje konieczność współpracy komponentów różniących się na poziomie sprzętu, systemów operacyjnych, języków itp. • stale rosnące znaczenie bezpieczeństwa Porównanie systemów równoległych i rozproszonych • podobieństwa - wiele procesorów, obecność sieci komunikacyjnej, równoczesność i współpraca wielu procesów obliczeniowych • system równoległy dzieli zadanie obliczeniowe na podzadania wykonywane w tym samym czasie • system rozproszony dzieli zadanie obliczeniowe na podzadania wykonywane w różnych miejscach przy użyciu różnych zasobów Systemy równoległe - podsumowanie • zadanie jest dzielone na podzadania rozwiązywane równolegle, najczęściej przez procesory ściśle ze sobą współpracujące • system równoległy wykonuje w danym czasie tylko jedno zadanie i jego celem jest przyspieszenie przetwarzania tego zadania • programy równoległe są zwykle wykonywane w homogenicznych architekturach, które mogą być wyposażone w pamięć dzieloną Systemy rozproszone - podsumowanie • obliczenie wykorzystuje wiele zasobów (takich jak procesory, pamięci, dyski, bazy danych) umieszczonych w odległych fizycznie miejscach • system rozproszony wykonuje w danym czasie wiele aplikacji, które mogą należeć do wielu użytkowników • Systemy rozproszone są często heterogeniczne, otwarte (hardware i software od różnych dostawców) i dynamiczne (struktura systemu jest zmienna w czasie) • użytkownik widzi system jak jedną maszynę • brak pamięci dzielonej (przynajmniej sprzętowej) Konwergencja systemów • od połowy lat 90. następuje szybka konwergencja systemów równoległych i rozproszonych • stosowane są te same architektury - szybkie technologie sieciowe umożliwiają budowę klastrów dla systemów równoległych; maszyny równoległe są stosowane jako serwery w systemach rozproszonych • zagadnienia równoległości i rozproszenia są często powiązane i dlatego są badane łącznie • istnieją wspólne instytucje badawcze i wspólne spotkania/konferencje • obszarem badań jest suma obu obszarów Pojęcia pokrewne • przetwarzanie współbieżne - concurrent computing (wiele ścieżek sterowania, konkurencja o zasoby) • przetwarzanie wysoce równoległe - highly parallel computing (powyżej 100 lub 1000 procesorów) • przetwarzanie wysoce wydajne (szybkie) high-performance computing/supercomputing • przetwarzanie sieciowe - networked computing (użytkownik widzi zbiór maszyn a nie jedną) • przetwarzanie zdecentralizowane - decentralized computing ( brak centralnej jednostki sterującej) • przetwarzanie wspólne - collaborative computing (użytkownicy ściśle współpracują w jednym celu) Argumenty za rozwojem systemów RiR • rosnące zapotrzebowanie na moc obliczeniową modelowanie klimatu/pogody, symulacje astrofizyczne, materiałoznawstwo, projektowanie nowych pojazdów - w zadaniach symulacji istnieje korelacja między dokładnością a kosztem obliczeń • stosunek ceny do mocy obliczeniowej - komputery równoległe są obecnie tańsze niż komputery sekwencyjne o tej samej mocy - nie ponosi się kosztu projektu procesora i ryzyka rynkowego • bariery technologiczne rozwoju procesorów sekwencyjnych w połączeniu z jakością i niskim kosztem sieci Argumenty za rozwojem systemów RiR • czas dostępu do pamięci w procesorze sekwencyjnym jest wąskim gardłem - ubocznym skutkiem dużej liczby procesorów jest wzrost pojemności pamięci głównej i cache, ponadto są przetwarzane bliżej miejsca gdzie są generowane, co ogranicza używanie pamięci systemowej • są aplikacje inherentnie równoległe/rozproszone (modelowanie systemów rzeczywistych, systemy informacyjne firm itp.) • dzielenie zasobów - w systemach rozproszonych użytkownicy dzielą zasoby sprzętowe i software (np. bazy danych, programy), mogą dzielić takie zasoby specjalizowane jak superkomputery Argumenty za rozwojem systemów RiR • osiagalność - systemy RiR posiadają wiele zasobów tego samego rodzaju, w przypadku awarii czy obsługi jeden komponent może zastąpić drugi - wymaga to odpowiedniego projektu systemu; osiągalność ma znaczenie w wielu zastosowaniach komercyjnych (bazy danych) • systemy RiR są skalowalne, można dodawać procesory i inne komponenty do zakupionego/ zbudowanego systemu • moc obliczeniowa wielu systemów rozproszonych jest marnowana poza godzinami pracy firmy, można udostępnić innym użytkownikom/aplikacjom • współbieżna praca programów sekwencyjnych Charakterystyka systemów RiR • miary jakości • prawa Amdahl’a • prawo Gustafsona-Barsis’a : instancje problemów przetwarzane w systemach równoległych są zwykle większe niż w systemach sekwencyjnych - stąd wpływ części sekwencyjnej jest mniejszy • w systemach klient-serwer - czas odpowiedzi (czas od zgłoszenia zadania do otrzymania wyniku) • przepustowość - zdolność systemu do obsługi dużych obciążeń (miara - l. zadań / j. czasu) • jakość serwisu (QoS) - gwarantowana liczba wymaganych zasobów (video-on-demand) Charakterystyka systemów RiR • Optymalizacja wydajności - obciążalność, komunikacja (minimalizacja czasu transmisji pomiędzy dwoma punktami, maksymalizacja przepustowości w stanie stabilnym) Charakterystyka systemów RiR • Techniki minimalizacji czasu transmisji : redukcja (np. nadmiarowości protokołu) optymalizacja lokalności w dostępie do pamięci(cache, pamieć lokalna, pamięć zdalna) replikacja danych i obliczeń (praca z wieloma kopiami danych, lokalne powtarzanie obliczeń) ukrycie czasu transmisji (prefetching - dostęp do zdalnych danych z wyprzedzeniem, multithreading przełączanie sterowania pomiędzy zadaniami) Charakterystyka systemów RiR • kompromis w optymalizacji wydajności : obciążalność <-> optymalizacja lokalności • optymalizacja krytycznych sekcji programu za pomocą narzędzi profilowania i wizualizacji • oszacowanie wydajności na wczesnym etapie projektowania oprogramowania Charakterystyka systemów RiR • Czynniki złożoności projektowania programu granulacja (rozmiar zadań) - mała, średnia, gruba szeregowanie zadań (w czasie i przestrzeni) dystrybucja danych pomiędzy procesory koordynacja (zarządzanie komunikacją i synchronizacją) poprawność ( zjawisko wyścigu - różne wyniki przy tych samych danych wejściowych) blokada (deadlock) - procesy obl. wzajemnie oczekują na siebie, a program zatrzymuje się Charakterystyka systemów RiR • problemy trudne obliczeniowo mapowanie grafu problemu na graf architektury systemu przy kryterium minimalizacji pewnej funkcji jakości (dla wielu istotnych z punktu widzenia praktyki funkcji jakości problem mapowania jest NP-trudny i nieaproksymowalny) • języki programowania nowe lub rozszerzenia istniejących Charakterystyka systemów RiR • transparentność (dla użytkownika) lokalizacji współbieżności (dzielenia zasobów z innymi użytkownikami) błędów (transmisji, czasowej nieosiągalności pewnego procesora) równoległości systemu (w przyszłości) Uwaga: automatyczna transparentność może być wadą, gdy użytkownik chce skorzystać z określonego zasobu Charakterystyka systemów RiR • przenośność kodu i wydajności (program jest przenośny, gdy działa w wielu architekturach, również tych, które pojawią się w przyszłości) przenośność kodu (te same wyniki w różnych architekturach) zapewniają stabilne standardy przenośność wydajności (wydajność programu mierzona miarami jakości odzwierciedla potencjał właściwy dla danej architektury systemu) Charakterystyka systemów RiR • skalowalność system jest skalowalny jeżeli jego zasoby mogą być rozbudowane/wymienione tak aby uzyskać wiekszą moc obliczeniową) poziom sprzętu (procesory + komunikacja, skalowalność architektury) poziom systemu operacyjnego (nowa wersja) poziom oprogramowania (więcej procesorów/ mocniejsza maszyna, wzrost rozmiaru danych) skalowalność może oznaczać wzrost wydajności skalowalność nie idzie w parze z centralizacją Charakterystyka systemów RiR • heterogeniczność (system jest zbudowany z różnorodnego sprzętu i oprogramowania możliwość kombinowania specjalizowanych komponentów) heterogeniczność a przenośność systemy rozproszone są często heterogeniczne programy równoległe są często pisane na maszyny homogeniczne klastry powodują wzrost znaczenia heterogeniczności Charakterystyka systemów RiR • interoperacyjność zdolność do współpracy komponentów systemu pochodzacych od różnych producentów w tym części programów napisanych w różnych językach) - systemy otwarte • niezawodność software’u (dependability) i sprzętu (reliability) (kontynuacja pracy w obecności błędów, maksymalizacja osiągalności czyli części czasu pracy, w której system jest użyteczny) unikanie/detekcja/naprawa błędów Charakterystyka systemów RiR • techniki naprawy : nadmiarowość (redundancja), checkpointing przywracanie stanu programu zachowanego okresowo w wyznaczonych punktach) • bezpieczeństwo (safety ) - zapobieganie błędom katastrofalnym • odporność na ataki (security) - istotna zwłaszcza w systemach rozproszonych, gdzie wielu użytkowników ma dostęp w wielu punktach systemu Charakterystyka systemów RiR • systemy ogólnego przeznaczenia • systemy specjalizowane (czasu rzeczywistego, DSP, przetwarzania informacji, przetwarzania pewnych wąskich klas problemów) - w innych zastosowaniach wykazują brak użyteczności lub ograniczoną (nieoptymalną) funkcjonalność/ wydajność Modele i paradygmaty • model ( uproszczony lub wyidealizowany opis systemu) - łatwość operowania zbiorem najważniejszych własności, stabilność w czasie modele rzadko odpowiadają sobie 1:1 • paradygmat - model opisujący typowe struktury/wzory programów aplikacyjnych (modele programistyczne systemu a API -(application programming interface), modele abstrakcyjne stosowane w projektowaniu algorytmów) Literatura Leopold C. : Parallel and distributed computing. A survey of models, paradigms, and approaches, John Wiley & Sons, Inc., 2001 Modele i paradygmaty