- Nazwa przedmiotu:
- Programowanie równoległe i rozproszone
- Koordynator przedmiotu:
- dr hab. inż. Andrzej Karbowski
- Status przedmiotu:
- Fakultatywny ograniczonego wyboru
- Poziom kształcenia:
- Studia II stopnia
- Program:
- Informatyka
- Grupa przedmiotów:
- Przedmioty kierunkowe
- Kod przedmiotu:
- PRRUZ
- Semestr nominalny:
- 2 / rok ak. 2019/2020
- Liczba punktów ECTS:
- 5
- Liczba godzin pracy studenta związanych z osiągnięciem efektów uczenia się:
- 120 - 30 godzin wykładów, 30 godzin ćwiczeń projektowych, liczonych w mierze tradycyjnej oraz około 60 godzin pracy własnej
- 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:
- Matematyka wyższa na poziomie studiów technicznych I stopnia, programowanie strukturalne, systemy operacyjne
- Limit liczby studentów:
- 30
- 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, AVX, karty graficzne), superkomputerach, a także w klastrach i gridach. W dalszej części wykładu omówione będą przykłady zastosowania obliczeń równoległych do rozwiązywania złożonych zadań analizy numerycznej - klasycznych oraz związanych z Internetem.
- Treści kształcenia:
- 1. Zagadnienia podstawowe: klasyfikacja i architektura komputerów równoległych; procesory wielordzeniowe o strukturze symetrycznej i asymetrycznej, dodatkowe 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.
2. Miary efektywności obliczeń równoległych (współczynniki przyśpieszenia oraz wydajności, prawa Amdahla i Gustafsona-Barsisa, sprawność i skalowalność)
3. Zagadnienia synchronizacji i wymiany informacji w obliczeniach równoległych, podstawowe mechanizmy: zamek, semafor, monitor, bariera klasyczna i dwuczęściowa, zmienne warunków, komunikaty (synchroniczne, asynchroniczne, blokujące, nieblokujące, buforowane, itd.).
4. 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, OpenACC, OpenMP od wersji 4.
5. 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ęzyk dyrektyw OpenMP,
6. 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ą: UPC
7. Algorytmy synchroniczne: podstawowe algorytmy algebry liniowej w wersji równoległej, rozwiązywanie układów równań nieliniowych, równoległe metody optymalizacji
8. 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:
- Oceny punktowe z dwóch zadań projektowych. Ocena indywidualnego zadania od 0 do 30 punktów. Łączna liczba punktów 60, do zaliczenia wymagane 31 lub więcej punktów. Egzamin obejmujący rozwiązanie zadań rachunkowych oraz odpowiedzi na pytania. Ocena od 0 do 40 punktów. Egzamin uważany jest za zdany po uzyskaniu 21 lub więcej punktów. W razie potrzeby przeprowadzany jest uzupełniający egzamin ustny. Zaliczenie przedmiotu wymaga zaliczenia projektu i zdania egzaminu. Oceny końcowe wystawiane są zgodnie z ogólnie przyjętą skalą, w szczególności ocena 3 (dst) po uzyskaniu 52 do 60 punktów.
- Egzamin:
- tak
- Literatura:
- 1. 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.
2. Bertsekas D.P. i Tsitsiklis J.N.,Parallel and Distributed Computation: Numerical Methods, Athena Scientific, 1997.
3. Zbigniew J. Czech Wprowadzenie do obliczeń równoległych (wydanie II), Wydawnictwo Naukowe PWN, 2013
- Witryna www przedmiotu:
- https://red.okno.pw.edu.pl/witryna/wybor_przedmiotu.php?sub_ed=961
- Uwagi:
Efekty uczenia się
Profil ogólnoakademicki - wiedza
- Charakterystyka T2A_W02, T2A_W03, T2A_W05, T2A_W07
- Podstawowe informacje o możliwościach zwiększenia efektywności działania programów dzięki wykorzystaniu rozwiązań jakich dostarcza współczesna technologia, których podstawą są procesory wielordzeniowe, ich wektorowe jednostki wykonawcze, sieć oraz akceleratory oparte na kartach graficznych.
Weryfikacja: Egzamin
Powiązane charakterystyki kierunkowe:
K2_W02, K2_W03, K2_W04, K2_W07, K2_W09, K1_W01
Powiązane charakterystyki obszarowe:
I.P7S_WG, III.P7S_WG.o, I.P7S_WK
Profil ogólnoakademicki - umiejętności
- Charakterystyka T2A_U01, T2A_U02, T2A_U05, T2A_U08, T2A_U10, T2A_U12, T2A_U15, T2A_U16, T2A_U18,
- Po kursie PRR student nabędzie umiejętności oceny w jakim stopniu można poprawić efektywność (czas działania) aplikacji oraz przy pomocy jakich środków umożliwiających wektoryzację, zrównoleglenie lub rozproszenie obliczeń.
Weryfikacja: Egzamin i projekt
Powiązane charakterystyki kierunkowe:
K2_U09, K2_U11, K2_U12, K2_U14, K1_U02, K1_U03, K2_U01, K2_U07, K2_U08
Powiązane charakterystyki obszarowe:
III.P7S_UW.3.o, I.P7S_UW, III.P7S_UW.4.o, I.P7S_UK, III.P7S_UW.1.o, III.P7S_UW.2.o
Profil ogólnoakademicki - kompetencje społeczne
- Charakterystyka T2A_K04, T2A_K06
- Znajomość zależnych od nowoczesnych technologii informacyjnych sposobów zwiększenia efektywności działania firm, instytucji, organizacji, itp.
Weryfikacja: Opinia współpracowników, przełożonych, klientów.
Powiązane charakterystyki kierunkowe:
K2_K01, K2_K02, K1_K01
Powiązane charakterystyki obszarowe:
I.P7S_KO, I.P7S_KK, I.P7S_KR
Profil praktyczny - wiedza
- Charakterystyka T2P_W02, T2P_W03, T2P_W04, T2P_W05, T2P_W06, T2P_W07
- Znajomość podstawowych narzędzi, standardów przemysłowych stosowanych na całym świecie, programowania równoległego i rozproszonego, w tym:
a) dla maszyn z pamięcią wspólną - języka dyrektyw zrównoleglających OpenMP, wątków POSIX
b) dla klastrów i gridów oraz maszyn z pamięcią lokalną - standardu MPI (Message Passing Interface)
c) dla środowisk hybrydowych - języka wirtualnej pamięci wspólnej Unified Parallel C
Weryfikacja: Poprawne, zgodne z oczekiwaniami działanie odnośnych aplikacji.
Powiązane charakterystyki kierunkowe:
Powiązane charakterystyki obszarowe:
Profil praktyczny - umiejętności
- Charakterystyka T2P_U01, T2P_U02, T2P_U03, T2P_U04, T2P_U05, T2P_U07, T2P_U08, T2P_U12, T2A_U15, T2P_U16, T2P_U18, T
- 1. Umiejętność pisania aplikacji równoległych działających na komputerach z pamięcią wspólną, opartych na wątkach
2. Umiejętność pisania aplikacji równoległych działających na komputerach z pamięcią lokalną oraz w sieciach opartych na przesyłaniu komunikatów
3. Umiejętność skorzystania z akceleratorów opartych na kartach graficznych oraz uniwersalnych
Weryfikacja: Projekt
Powiązane charakterystyki kierunkowe:
Powiązane charakterystyki obszarowe:
Profil praktyczny - kompetencje społeczne
- Charakterystyka T2P_K01, T2P_K04, T2P_K06
- Przyczynienie się do usprawnienia działania firm, instytucji, organizacji dzięki poprawie efektywności (przyśpieszeniu obliczeń, reakcji na wprowadzane dane, itp.) wykorzystywanych przez nie programów komputerowych.
Weryfikacja: Lepsze oceny instytucji, organizacji, wyższe dochody firmy, itp.
Powiązane charakterystyki kierunkowe:
Powiązane charakterystyki obszarowe: