- Nazwa przedmiotu:
- Programowanie równoległe i rozproszone
- Koordynator przedmiotu:
- Ewa Niewiadomska-Szynkiewicz, Andrzej Karbowski, Bartłomiej Kubica
- Status przedmiotu:
- Fakultatywny ograniczonego wyboru
- Poziom kształcenia:
- Studia II stopnia
- Program:
- Informatyka
- Grupa przedmiotów:
- Przedmioty techniczne - zaawansowane
- Kod przedmiotu:
- PORR
- Semestr nominalny:
- 1 / rok ak. 2018/2019
- Liczba punktów ECTS:
- 5
- Liczba godzin pracy studenta związanych z osiągnięciem efektów uczenia się:
- 125 (udział w wykładach 30 godz., wykonanie projektu 30 godz., przygotowanie do kolejnych wykładów 15 godz., przygotowanie do realizacji projektu 25 godz., udział w konsultacjach związanych z tematyką wykładów i realizowanym projektem 3 godz., przygotowanie do egzaminu 20 godz., udział w egzaminie 2 godz.)
- Liczba punktów ECTS na zajęciach wymagających bezpośredniego udziału nauczycieli akademickich:
- 3
- Język prowadzenia zajęć:
- polski
- Liczba punktów ECTS, którą student uzyskuje w ramach zajęć o charakterze praktycznym:
- 2
- Formy zajęć i ich wymiar w semestrze:
-
- Wykład30h
- Ćwiczenia0h
- Laboratorium0h
- Projekt30h
- Lekcje komputerowe0h
- Wymagania wstępne:
- Znajomość języków programowania (C, C++, Java).
Znajomość podstaw programowania równoległego.
- Limit liczby studentów:
- 48
- Cel przedmiotu:
- Celem przedmiotu jest przedstawienie podstawowych wiadomości na temat prowadzenia obliczeń wektorowych, równoległych i rozproszonych na komputerach wielordzeniowych (wykorzystujących ewentualnie rozszerzenia strumieniowe SSE, karty graficzne), superkomputerach, a także w klastrach, gridach i chmurach. W dalszej części wykładu omawiane są przykłady zastosowania obliczeń równoległych do rozwiązywania złożonych zadań analizy numerycznej - klasycznych oraz związanych z Internetem.
Celem projektu jest zdobycie podstawowych praktycznych umiejętności w posługiwaniu się równoległym środowiskiem do obliczeń oraz wykonanie przykładowych obliczeń na maszynach równoległych, wielordzeniowych (także z wykorzystaniem SSE i GPU), jak również w klastrze stacji roboczych. Przewidywane są zadania związane z:
1) Badaniem algorytmów synchronicznych z wykorzystaniem dyrektyw zrównoleglających kompilatora (OpenMP, OpenHMPP, OpenACC) oraz mechanizmu wątków (POSIX lub Java threads) na maszynie równoległej z pamięcią wspólną;
2) Badaniem algorytmów rozproszonych w klastrze z wykorzystaniem oprogramowania: MPI, RPC, Java RMI, UPC;
3) Badaniem efektywności obliczeń hybrydowych - ze zrównolegleniem na wiele rdzeni (SSE, GPU - CUDA i OpenCL);
4) Oceną efektywności różnych narzędzi do zrównoleglania programów napisanych w: Javie, Matlabie, C# uruchamianych na maszynie wielordzeniowej pracującej pod kontrolą systemu UNIX/Linux albo w sieci PC pod kontrolą MS Windows lub Linux.
- Treści kształcenia:
- Zagadnienia podstawowe: klasyfikacja i architektura komputerów równoległych; procesory wielordzeniowe o strukturze symetrycznej i asymetrycznej (CELL), jednostki wykonawcze SSE/Altivec oraz GPU; obliczenia: wektorowe, współbieżne, równoległe, rozproszone, strumieniowe; rodzaje oprogramowania realizującego równoległość, istotne paradygmaty i modele programowania równoległego.
Miary oceny efektywności obliczeń równoległych (współczynniki przyśpieszenia oraz wydajności, prawa Amdahla i Gustafsona-Barsisa, sprawność i skalowalność).
Zagadnienia synchronizacji i wymiany informacji w obliczeniach równoległych, podstawowe mechanizmy: zamek, semafor, monitor, bariera klasyczna i dwuczęściowa, zmienne warunków, komunikaty (przesyłanie: synchroniczne, asynchroniczne, blokujące, nieblokujące, buforowane, itd.).
Wektoryzacja obliczeń we współczesnych komputerach opartych na architekturze x86, sposób wykorzystania jednostek wykonawczych SSE.
Podstawowe informacje o obliczeniach ogólnego przeznaczenia wykorzystujących karty graficzne (GPGPU), pojęcia strumienia i jądra; najważniejsze cechy środowisk oprogramowania: Brook, (MS-R) Accelerator, CUDA, OpenCL.
Elementy programowania na maszynach z pamięcią wspólną, narzędzia: klasyczne narzędzia systemu UNIX, programowania wielowątkowego (wątki POSIX, wątki w językach Java oraz C#), języki dyrektyw OpenMP, OpenHMPP, OpenACC.
Elementy programowania na maszynach z pamięcią lokalną oraz w sieciach komputerowych, klastrach i gridach; narzędzia: środowisko MPI, rodzina narzędzi RPC.
Sposoby realizacji rozproszonych systemów z pamięcią wspólną: Linda, Co-Array Fortran, UPC.
Klastry obliczeniowe - budowa, narzędzia i systemy operacyjne, np.: Mosix, Mosix2, OpenSSI, Kerighed.
Gridy i chmury obliczeniowe, idea i przykłady realizacji: BOINC, Unicor, Globu.
Algorytmy synchroniczne: podstawowe algorytmy algebry liniowej w wersji równoległej, rozwiązywanie układów równań nieliniowych, równoległe metody optymalizacji.
Algorytmy całkowicie lub częściowo asynchroniczne: założenia, zbieżność, zastosowanie do rozwiązywania dużych układów równań liniowych i nieliniowych, optymalizacji statycznej, routingu, szeregowania linków w wyszukiwarkach, itp.
- Metody oceny:
- Zaliczenie egzaminu.
Zaliczenie projektu (równoległa realizacja zadania obliczeniowego).
- Egzamin:
- tak
- Literatura:
- Praca zbiorowa pod red. A. Karbowskiego i E. Niewiadomskiej-Szynkiewicz, Programowanie Równoległe i Rozproszone (pozostali autorzy: J. Błaszczyk, M. Kamola, B. Kubica, K. Malinowski, M. Warchoł), Oficyna Wydawnicza PW, 2009.
Grama A., Kumar V., Gupta A., Karypis G., Introduction to Parallel Computing, 2/E, Addison Wesley , 2003.
Dongarra J, et al., The Sourcebook of Parallel Computing, Morgan Kaufmann (Elsevier), 2003.
Foster I. and Kesselman C. (Eds.), The Grid 2: Blueprint for a New Computing Infrastructure (Second edition), Morgan Kaufmann (Elsevier), 2004.
Bertsekas D.P. i Tsitsiklis J.N.,Parallel and Distributed Computation: Numerical Methods, Athena Scientific, 1997.
- Witryna www przedmiotu:
- https://usosweb.usos.pw.edu.pl/kontroler.php?_action=katalog2/przedmioty/pokazPrzedmiot&prz_kod=103A-INxxx-MSP-PORR
- Uwagi:
Efekty uczenia się
Profil ogólnoakademicki - wiedza
- Charakterystyka PORR_W01
- Ma wiedzę na temat prowadzenia obliczeń wektorowych, równoległych i rozproszonych na komputerach wielordzeniowych (wykorzystujących ewentualnie rozszerzenia strumieniowe SSE, karty graficzne), superkomputerach, a także w klastrach i gridach. Zna podstawowe narzędzia i srodowiska do programowania równoległego i rozproszonego. Ma wiedzę dotyczacą sposobów zrównoleglania zadań analizy numerycznej - klasycznych oraz związanych z Internetem.
Weryfikacja: Egzamin obejmujący materiał z wykładu. Wykonanie zadań projektowych.
Powiązane charakterystyki kierunkowe:
K_W03, K_W04, K_W05, K_W07, K_W08, K_W09, K_W10
Powiązane charakterystyki obszarowe:
I.P7S_WG, III.P7S_WG.o
Profil ogólnoakademicki - umiejętności
- Charakterystyka PORR_U01
- Potrafi pozyskiwać informacje z literatury krajowej i zagranicznej oraz dostępnych baz danych. Potrafi zaprojektować i wykonać system oprogramowania w równoległym i rozproszonym środowisku sprzętowym. Potrafi przeprowadzić testy wykonanego oprogramowania, dokonać jego oceny i przedstawić wyniki w postaci odpowiednio przygotowanej dokumentacji.
Weryfikacja: Ocena wykonanego oprogramowania i dokumentacji z wynikami badań.
Powiązane charakterystyki kierunkowe:
K_U08, K_U09, K_U11, K_U13, K_U01, K_U03, K_U04, K_U05
Powiązane charakterystyki obszarowe:
I.P7S_UW, III.P7S_UW.3.o, III.P7S_UW.1.o, I.P7S_UK, I.P7S_UU
Profil ogólnoakademicki - kompetencje społeczne
- Charakterystyka PORR_K01
- Rozumie, że w informatyce wiedza i umiejętności bardzo szybko stają się przestarzałe. Rozumie potrzebę i zna możliwości dalszego dokształcania się. Potrafi pracować indywidualnie i w zespole informatyków, w tym także potrafi zarządzać swoim czasem oraz podejmować zobowiązania i dotrzymywać terminów.
Weryfikacja: Ocena pracy podczas wykonywania projektu.
Powiązane charakterystyki kierunkowe:
K_K01
Powiązane charakterystyki obszarowe:
I.P7S_KO