Programowanie równoległe 4010-PR
Programowanie równoległe (30 godz. wykład + 30 godz. laboratorium)
1. Modele komputerów równoległych: klasyfikacja komputerów wg Flynna, komputery z pamięcią współdzieloną i rozproszoną, wydajność komputerów.
2. Podstawowe modele programowania równoległego: programowanie w modelu przekazywania komunikatów i w modelu z pamięcią współdzieloną.
3. Przykłady algorytmów równoległych.
4. Przegląd języków i bibliotek do programowania równoległego.
5. Programowanie w językach PGAS (Partitioned Global Adress Space) takich jak CAF czy UPC.
6. Implementacja algorytmów z wykorzystaniem Message Passing Interface (MPI).
7. Implementacja algorytmów z wykorzystaniem OpenMP.
8. Programowanie równoległe w Javie.
9. Złożoność algorytmów równoległych.
10. Klasyczne problemy współbieżności i poprawność programów.
Koordynatorzy przedmiotu
W cyklu 2023L: | W cyklu 2023Z: |
Rodzaj przedmiotu
Efekty kształcenia
Znajomość zasad tworzenia aplikacji równoległych. Znajomość podstawowych algorytmów równoległych i oceny ich złożoności. Znajomość współczesnych metod programowania równoległego.
Wiedza:
K_W02: zna zaawansowane metody projektowania i analizowania złożoności obliczeniowej algorytmów i programów sekwencyjnych, równoległych i rozproszonych
K_W05: zna biegle co najmniej jeden język programowania oraz biblioteki algorytmów i struktur danych; ma wiedzę na temat praktycznych uwarunkowań wydajnych implementacji algorytmów
K_W07: ma wiedzę o aktualnych kierunkach rozwoju i o najnowszych odkryciach w zakresie technologii sieciowych i architektur komputerów
Umiejętności:
K_U09: potrafi posługiwać się nowoczesnymi technikami informatyczno-komunikacyjnymi do komunikacji z innymi
K_U13: potrafi ocenić przydatność i możliwość wykorzystania nowych rozwiązań sprzętowych i programistycznych do rozwiązywania problemów obliczeniowych w wybranej dziedzinie zastosowań
K_U14: zna dobrze zasady bezpieczeństwa i higieny pracy w zawodzie informatyka
K_U16: analizuje złożoność algorytmów; rozróżnia pojęcie złożoności problemu od pojęcia złożoności obliczeniowej algorytmów dla tego problemu, potrafi określić zastosowania algorytmu do rozwiązywania problemów obliczeniowych.
K_U17: potrafi dokonać analizy problemu i określić algorytmy i metody obliczeniowe przydatne do jego rozwiązania
K_U18: projektuje i analizuje algorytmy rozproszone; potrafi uzasadnić ich poprawność i przeanalizować złożoność
K_U20: projektuje wydajne algorytmy i uzasadnia ich poprawność; rozumie wpływ architektury komputera na sposób wykonywania algorytmów i umie to wykorzystać do ich strojenia
Kompetencje społeczne:
K_K02: nawiązuje i utrzymuje współpracę z innymi; dąży do realizacji celów zespołu poprzez odpowiednie zaplanowanie i organizację pracy swojej i innych
K_K03: nawiązuje i utrzymuje współpracę z innymi; dąży do realizacji celów zespołu poprzez odpowiednie zaplanowanie i organizację pracy swojej i innych
K_K05: jest nastawiony na jak najlepsze wykonanie zadania; dba o szczegół; jest systematyczny
K_K07: jest nastawiony na nieustanne zdobywanie nowej wiedzy, umiejętności i doświadczeń; ma chęć ciągłego doskonalenie się i podnoszenia kompetencji zawodowych
K_K10: zna i przestrzega zasady i normy obowiązujące w zawodzie informatyka, w tym normy etyczne; rozumie społeczną rolę zawodu informatyka
Kryteria oceniania
Egzamin z przedmiotu polega na samodzielnym wykonaniu projektów zaliczeniowych i przesłaniu ich poprzez platformę OLAT.
Egzamin można zaliczyć w różny sposób:
- standardowy: wykonanie trzech zadań S1, S2 i S3 (za wykonanie wszystkich zadań ocena 5, za mniej odpowiednio niżej),
- ambitny: wykonanie jednego z zadań "dla ambitnych".
Do każdego zadania należy załączyć pliki z kodem źródłowym oraz sprawozdanie. Sprawozdanie musi obejmować następujące elementy:
- krótki opis zastosowanego algorytmu/algorytmów i zastosowanych narzędzi,
- ewentualny opis napotkanych problemów i zastosowanych rozwiązań,
- czasy wykonanania dla przynajmniej 1, 2, 4, 8 i 16 wątków/procesów oraz uzyskane przyspieszenia względem wykonania dla 1 wątku/procesu - oprócz wyników "surowych" mile widziane wykresy,
- opis uzyskanych wyników, wnioski,
- polecenie, przy pomocy którego wykonana była kompilacja,
- skrytpt SLURM i nazwa klastra/superkomutera, na którym były wykonane obliczenia.
Praktyki zawodowe
Nie dotyczy.