POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI i TECHNIK INFORMACYJNYCH Algorytmy i Struktury Danych www.pk.edu.pl/~zk/aisd_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl
Wykład 12: Wstęp do obliczeń równoległych Dlaczego obliczenia równoległe? Charakterystyka systemów równoległych Pojęcia pokrewne Organizacja obliczeń równoległych Przykład obliczeń równoległych sito Eratostenesa Jak ocenić jakość obliczeń równoległych? definicje miar jakości Zależności pomiędzy miarami jakości Przykład oceny jakości systemu równoległego Bariera: inherentna sekwencyjność problemów Programowanie równoległe. Języki. Przenośność. Dalszy rozwój systemów równoległych
Dlaczego obliczenia równoległe? równoległość = skrócenie czasu obliczeń obliczenia równoległe (parallel computing) są domeną obszaru informatyki zwanego przetwarzaniem równoległym (parallel processing) 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 przez lata rynek zbytu, a w konsekwencji upadek wielu doskonałych firm perspektywa procesory wielordzeniowe (multicore processors) i klastry obliczeniowe jako nowa platforma obliczeń równoległych
Charakterystyka systemów równoległych 1
Charakterystyka systemów równoległych 2
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 - 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ą ze sobą w jednym celu)
Organizacja obliczeń równoległych 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ą (ang. shared memory)
Przykład 1 sito Eratostenesa
Przykład 1 modele obliczeń
Przykład 1 modele obliczeń
Przykład 1 obliczenia z równoległym sterowaniem
Jakość obliczeń równoległych definicje miar jakości (1)
Jakość obliczeń równoległych definicje miar jakości (2)
Jakość obliczeń równoległych zależności pomiędzy miarami jakości
Przykład 2 równoległe dodawanie 16 liczb (operacja jednostkowa : dodawanie)
Przykład 2 równoległe dodawanie 16 liczb (operacje jednostkowe : dodawanie+ skośne przesyłanie danych )
Inherentna sekwencyjność problemów graf zależności kolejnościowych
Programowanie równoległe - zagadnienia równoległość niejawna kompilatory automatycznie zrównoleglają niezależne od siebie obliczenia na podstawie zwykłej sekwencyjnej specyfikacji oraz języków operujących na tablicach takich jak High- Performance Fortran (1992), zaprojektowany na bazie Fortran-90 równoległość jawna równoległe języki programowania zawierają instrukcje równoległe; są to rozszerzenia popularnych języków sekwencyjnych lub języki dedykowane takie jak : jezyki z równoległymi danymi (C*, pc++), języki z dzielonymi zmiennymi (Concurrent Pascal, Sequent C), języki oparte na komunikujących się procesach (Ada, Occam oraz C i Fortran z interfejsem MPI), języki oparte na programowaniu funkcjonalnym (projekty uniwersyteckie)
Przenośność programów równoległych HPF poprawna implementacja gwarantuje przenośność MPI (Message Passing Interface) środowisko z wymianą komunikatów, zapewnia: 1. komunikację pomiędzy parami procesów obliczeniowych (blokujące/nieblokujące wysyłanie/odbiór); 2. komunikację zbiorową pomiędzy procesami(nadawanie, zbieranie itp.); 3. agregację obliczeń; 4. zarządzanie grupami procesów (tworzenie i modyfikacje grup); 5. specyfikacja komunikatorów (interkomunikatory, intrakomunikatory); 6. wirtualne topologie (siatka, drzewo). PVM (Parallel Virtual Machine) platforma programistyczna umożliwiająca wykonywanie równoległych aplikacji na niezależnych od siebie, heterogenicznych komputerach o różnych konfiguracjach.
Argumenty za dalszym rozwojem systemów równoległych rosnące zapotrzebowanie na moc obliczeniową - modelowanie klimatu/pogody, symulacje astro-fizyczne, 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 klastrów oraz efektywnością energetyczną procesorów wielordzeniowych (!)
Literatura 1. Leopold C. : Parallel and distributed computing, Wiley-Interscience 2001. 2. Parhami B. : Introduction to parallel processing, Plenum Press 1999.