- Nazwa przedmiotu:
- Programowanie równoległe i rozproszone
- Koordynator przedmiotu:
- Rajmund Kożuszek
- Status przedmiotu:
- Fakultatywny dowolnego wyboru
- Poziom kształcenia:
- Studia II stopnia
- Program:
- Informatyka
- Grupa przedmiotów:
- Przedmioty techniczne - zaawansowane
- Kod przedmiotu:
- PORR
- Semestr nominalny:
- 2 / rok ak. 2021/2022
- Liczba punktów ECTS:
- 4
- Liczba godzin pracy studenta związanych z osiągnięciem efektów uczenia się:
- 1. liczba godzin kontaktowych – 62 godz., w tym
obecność na wykładach 30 godz.,
obecność na zajęciach projektowych 30 godz.,
obecność na egzaminie 2 godz.
2. praca własna studenta – 55 godz., w tym
realizacja projektu 35 godz.,
opracowanie wyników projektu i przygotowanie prezentacji 5 godz.,
przygotowanie do egzaminu 15 godz.
Łączny nakład pracy studenta wynosi 117 godz., co odpowiada 4 pkt. ECTS.
- Liczba punktów ECTS na zajęciach wymagających bezpośredniego udziału nauczycieli akademickich:
- 2,12 pkt. ECTS, co odpowiada 62 godz. kontaktowym
- Język prowadzenia zajęć:
- polski
- Liczba punktów ECTS, którą student uzyskuje w ramach zajęć o charakterze praktycznym:
- 2,39 pkt. ECTS, co odpowiada 35 godz. realizacji projektu plus 5 godz. przygotowania prezentacji plus 30 godz. spotkań projektowych
- Formy zajęć i ich wymiar w semestrze:
-
- Wykład30h
- Ćwiczenia0h
- Laboratorium0h
- Projekt30h
- Lekcje komputerowe0h
- Wymagania wstępne:
- (-)
- Limit liczby studentów:
- 45
- Cel przedmiotu:
- Celem jest przedstawienie podstawowych wiadomości na temat prowadzenia obliczeń wektorowych, równoległych i rozproszonych na komputerach wielordzeniowych (wykorzystujących ewentualnie rozszerzenia strumieniowe SSE, AVX, karty graficzne), superkomputerach, klastrach, gridach i chmurach.
- Treści kształcenia:
- Wykład:
Zagadnienia podstawowe: klasyfikacja i architektura komputerów równoległych; procesory wielordzeniowe, jednostki wykonawcze SSE, AVX, 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, dane specyficzne wątków, 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/AVX. Podstawowe informacje o obliczeniach ogólnego przeznaczenia wykorzystujących karty graficzne (GPGPU), pojęcia strumienia i jądra; najważniejsze cechy środowisk oprogramowania: CUDA, OpenCL. OpenACC. Elementy programowania na maszynach z pamięcią wspólną, narzędzia: klasyczne narzędzia systemu UNIX, programowania wielowątkowego (wątki POSIX, wątki standardu C11, wątki w językach Java oraz C#), język dyrektyw OpenMP. Elementy programowania na maszynach z pamięcią lokalną oraz w sieciach komputerowych, klastrach, gridach, chmurach; narzędzia: środowisko MPI, rodzina narzędzi RPC (w tym dokładniej gRPC). Przetwarzanie Big Data – modele, paradygmat MapReduce, środowiska i platformy (Hadoop, Apach Spark). Modele przetwarzania w chmurze, architektura chmury obliczeniowej, technologie (OpenStack). 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.
Projekt:
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/AVX 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) oraz mechanizmu wątków (POSIX, C11 lub Java threads) na maszynie równoległej z pamięcią wspólną; 2) badaniem algorytmów rozproszonych w klastrze z wykorzystaniem oprogramowania: MPI, gRPC, Java RMI; 3) badaniem efektywności obliczeń hybrydowych - ze zrównolegleniem na wiele rdzeni oraz simdyzacją (SSE/AVX, GPU); 4) oceną efektywności różnych narzędzi do zrównoleglania programów napisanych w: Javie, Matlabie, C#, Pythonie Go uruchamianych na maszynie wielordzeniowej pracującej pod kontrolą systemu UNIX/Linux albo w sieci PC pod kontrolą MS Windows; 5) oceną różnych platform przetwarzania Big data (Hadoop, Apache Spark).
- Metody oceny:
- Projekt jest realizowany w grupach 2-3 osobowych. Projekt obejmuje implementację sekwencyjnej wersji podanego algorytmu oraz jego 2 lub 3 (w zależności od liczności grupy) wersji równoległych oraz przeprowadzenie eksperymentalnej oceny efektywności wykonanych implementacji. Wymagane jest wykonanie wersji wykorzystującej narzędzia do programowania na maszynach z pamięcią wspólną i lokalną. Wyniki prac są podsumowane w sprawozdaniu i prezentowane przez studentów w czasie ostatniego terminu zajęć wykładowych (wymagane prezentacje). Zakłada się, że zajęcia projektowe z udziałem prowadzącego to 2 godziny tygodniowo (konsultacje). Realizacja projektu, przygotowanie sprawozdania i prezentacji to 40 godz. w semestrze.
- Egzamin:
- tak
- Literatura:
- 1. Karbowski, E. Niewiadomska-Szynkiewicz (red.), Programowanie Równoległe i Rozproszone Oficyna Wydawnicza PW, 2009.
2. Trobec, R., Slivnik, B., Bulić, P. i Robič, B., Introduction to Parallel Computing: From Algorithms to Programming on State-of-the-Art Platforms, Springer, 2018.
3. Czech, Z.J., Wprowadzenie do obliczeń równoległych, Wyd. 2, PWN, 2019.
4. 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=103B-INISY-MSP-PORR
- Uwagi:
- (-)
Efekty uczenia się