Programowanie równoległe 4010-PRa
Szczegółowy opis przedmiotu został zamieszczony na poziomie danego cyklu dydaktycznego w sekcji Opis.
|
W cyklu 2025Z:
1. Wprowadzenie do programowania równoległego - prawo Moore'a, superkomputery, taksonomia Flynna (2 godz., wykład) Kolejność podejmowanych zagadnień oraz szczegółowość ich realizacji może ulec nieznacznym zmianom. |
W cyklu 2025L:
1. Wprowadzenie do programowania równoległego - prawo Moore'a, superkomputery, taksonomia Flynna (2 godz., wykład) 9. OpenMP - funkcje w C, zmienne private, shared oraz firstprivate, operator redukcji, tablice dwuwymiarowe (2 godz., lab.) 10. OpenMP - pętle równoległe, nieiteratywny podział pracy (2 godz., wykład) 11. OpenMP - pętle równoległe, pomiar czasu, nieiteratywny podział pracy (2 godz., lab.) 12. OpenMP - koordynacja wątków, race condition, deadlock, false sharing, thread safety, dobre praktyki (2 godz., wykład) 13. OpenMP - obliczenia typu stencil (6 godz., lab.) 14. MPI - wstęp, hello world, typy danych w MPI (2 godz., wykład) 15. MPI - komunikacja blokująca typu point-to-point (2 godz., lab.) 16. MPI - hello world, komunikacja blokująca typu point-to-point (2 godz., lab.) 17. MPI - komunikacja nieblokująca, pomiar czasu (2 godz., wykład) 18. MPI - komunikacja nieblokująca (2 godz., lab.) 19. MPI - implementacja wzorca klient-serwer (2 godz., lab.) 20. MPI - Null Mpi Process, operacje kolektywne (2 godz., wykład) 21. MPI - non-circular shift, operacje kolektywne i obsługa plików: implementacja równoległego wyszukiwania tekstu w pliku tekstowym (4 godz., lab.) 22. PCJ - wstęp, Hello World, Execution Builder (2 godz., wykład) 23. PCJ - Hello World z PCJ - kompilacja i uruchomienie programu (2 godz., lab.) 24. PCJ - metody informujące o ilości zadań i węzłów, zmienne udostępniane (2 godz., wykład) 25. PCJ - generowanie losowej macierzy, obliczanie sum wierszy, używanie Properties do przekazywania argumentów wywołania (2 godz., lab.) 26. PCJ - synchroniczne i asynchroniczne operacje one-sided i kolektywne (2 godz., wykład) 27. PCJ - implementacja all-broadcast i all-reduce (2 godz., lab.) Kolejność podejmowanych zagadnień oraz szczegółowość ich realizacji może ulec nieznacznym zmianom. |
W cyklu 2026Z:
1. Wprowadzenie do programowania równoległego - prawo Moore'a, superkomputery, taksonomia Flynna (2 godz., wykład) Kolejność podejmowanych zagadnień oraz szczegółowość ich realizacji może ulec nieznacznym zmianom. |
Koordynatorzy przedmiotu
Rodzaj przedmiotu
Tryb prowadzenia
Założenia (opisowo)
Efekty uczenia się
Kierunkowe efekty uczenia z odniesieniem do charakterystyk drugiego stopnia PRK:
student zna i rozumie:
K_W02 - w sposób pogłębiony wybrane zaawansowane metody projektowania i analizowania złożoności obliczeniowej algorytmów równoległych i rozproszonych,
K_W05 - w sposób pogłębiony co najmniej jeden język programowania oraz wybrane biblioteki algorytmów i struktur danych,
K_W06 - w sposób pogłębiony praktyczne uwarunkowania wydajnych implementacji algorytmów,
student potrafi:
K_U07 - ocenić przydatność oraz potencjał zastosowania nowych rozwiązań sprzętowych i programistycznych w kontekście rozwiązywania problemów obliczeniowych w wybranej dziedzinie nauk,
K_U09 - dokonać analizy wybranych problemów i określić algorytmy i metody obliczeniowe przydatne do ich rozwiązywania,
K_U10 - zaprojektować, przeanalizować oraz uzasadnić poprawność algorytmów rozproszonych dla wybranych problemów,
K_U12 - zaprojektować wydajny algorytm, uzasadnić jego poprawność oraz wykonać jego strojenie uwzględniając wpływ architektury komputera na sposób wykonywania algorytmu,
student jest gotów do:
K_K01 - nawiązywania i utrzymywania współpracy oraz dążenia do realizacji celów zespołu poprzez odpowiednie zaplanowanie i organizację pracy
oraz przedmiotowe efekty uczenia się:
student zna i rozumie:
• W1 - zna metody projektowania algorytmów równoległych i rozproszonych z uwzględnieniem metod dekompozycji oraz wybranych wzorców projektowych oraz metody analizowania złożoności algorytmów, rozróżnia pojęcie złożoności problemu od złożoności algorytmu [K_W02]
• W2 - zna język C oraz biblioteki OpenMP, MPI i PCJ reprezentujące trzy modele programowania; zna różnice pomiędzy tymi modelami, ich ograniczenia, wady i zalety [K_W05]
• W3 - rozumie ograniczenia wydajności algorytmów i programów spowodowane komunikacją, synchronizacją i występowaniem części, które muszą być zrealizowane w sposób sekwencyjny [K_W06]
student potrafi:
• U1 - potrafi dobrać model programistyczny do rozwiązania problemu obliczeniowego uwzględniając rozmiar problemu i dostępną architekturę [K_U07]
• U2 - potrafi dobrać algorytmy i metody obliczeniowe, w tym stosowne funkcje z bibliotek (OpenMP, MPI i PCJ) do rozwiązania wybranych problemów [K_U09]
• U3 -potrafi przeanalizować algorytm pod kątem jego poprawności i możliwości zastosowania do wybranych problemów [K_U10]
• U4 - potrafi projektować i implementować algorytmy równoległe i rozproszone dobierając odpowiednie narzędzia dostosowane do architektury; potrafi zmierzyć i ocenić uzyskane przyspieszenia oraz wykorzystać wyniki do poprawy parametrów narzędzi [K_U12]
student jest gotów do:
• K1 - rozwiązuje zadania indywidualnie i zespołowo dbając o właściwą organizację pracy i jej jakość oraz o szczegóły implementacji rozwiązań; myśli twórczo i przeprowadza wraz z członkami zespołu krytyczną ocenę proponowanych rozwiązań [K_K01]
Kryteria oceniania
1. Zaliczenie przedmiotu kończy się jedną wspólną oceną ze wszystkich zajęć (wykład + laboratorium} realizowanych w ramach przedmiotu.
2. Zwolnienie lekarskie nie zwalnia ze znajomości materiału. Uprawnia jedynie do zindywidualizowanej formy zaliczenia.
3. Osoby, które otrzymały zgodę na indywidualny tok studiów, mają obowiązek zgłosić się koordynatora przedmiotu w celu ustalenia sposobu realizacji wszystkich efektów uczenia się przypisanych do zajęć. W przypadku braku możliwości realizacji wyżej wymienionych efektów koordynator może odmówić zaliczenia przedmiotu.
4. Obecności na zajęciach jest obowiązkowa. W sytuacjach uzasadnionych nieobecności, student zobowiązany jest do niezwłocznego kontaktu z koordynatorem przedmiotu.
5. W zakresie korzystania z narzędzi sztucznej inteligencji (SI) przy przygotowywaniu prac zaliczeniowych obowiązują zasady określone w "Regulaminie korzystania z narzędzi sztucznej inteligencji w procesie kształcenia na kierunku inżynieria obliczeniowa".
W ramach niniejszego przedmiotu dopuszcza się korzystanie z narzędzi SI na poziomie 3 - "Redakcja wspomagana przez SI", zgodnie z zasadami określonymi w Regulaminie, o którym mowa powyżej.
Student określa zakres wykorzystania narzędzi SI w przygotowaniu pracy, składając oświadczenie zgodne z obowiązującym wzorem.
6. Szczegółowe kryteria oceniania zostały zamieszczone na poziomie danego cyklu dydaktycznego w sekcji Uwagi.
Praktyki zawodowe
Nie dotyczy.
Literatura
Literatura przedmiotu została zamieszczona na poziomie danego cyklu dydaktycznego w sekcji Literatura.
|
W cyklu 2025Z:
Materiały zamieszczone na platformie OLAT: |
W cyklu 2025L:
• Materiały zamieszczone na platformie OLAT • Pacheco, Peter S. and Matthew Malensek (2022). An introduction to parallel programming. Second edition. Cambridge, MA: Morgan Kaufmann, an imprint of Elsevier. isbn: 978-0-12-804605-0 • Rauber, Thomas and Gudula Rünger (2010). Parallel Programming. Berlin, Heidelberg: Springer Berlin Heidelberg. isbn: 978-3-642-04817-3. doi: 10.1007/978-3-642-04818-0 • Trobec, Roman et al. (2018). Introduction to Parallel Computing. Cham: Springer International Publishing. isbn: 978-3-319-98832-0. doi: 10.1007/978-3-319-98833-7 • OpenMP Application Programming Interface: Version 5.2 November 2021 url: https://www.openmp.org/wp-content/uploads/OpenMP-API-Specification-5-2.pdf • MPI: A Message-Passing Interface Standard: Version 4.1 (2023). url: https://www.mpi-forum.org/docs/mpi-4.1/mpi41-report.pdf Parallel Computing in Java - Manual (2022). url: https://pcj.icm.edu.pl/manual |
W cyklu 2026Z:
• Materiały zamieszczone na platformie OLAT |
Uwagi
|
W cyklu 2025Z:
Student uzyskuje zaliczenie zajęć na podstawie: Warunkiem zaliczenia przedmiotu jest również oddanie poprzez system OLAT połowy zadań wykonywanych w trakcie zajęć. Zadania można oddawać tylko podczas zajęć będąc na nich fizycznie obecnym. Zaliczenie laboratoriów polega na samodzielnym wykonaniu projektów i przesłaniu ich poprzez platformę OLAT. Laboratoria można zaliczyć na dwa sposoby: |
W cyklu 2025L:
Student uzyskuje zaliczenie zajęć na podstawie: 1. zaliczenia laboratoriów (100 pkt) - weryfikacja efektów W2, U1, U2, U3, U4, K1 2. egzaminu pisemnego (100 pkt) - weryfikacja efektów W1, W2, W3 Aby zaliczyć przedmiot z każdej części należy uzyskać przynajmniej 50 punktów. Ocena końcowa jest wystawiana na podstawie średniej arytmetycznej punktów wg skali: 2: 0-50 3: 51-60 3,5: 61-70 4: 71-80 4,5: 81-90 5: 91-100 Możliwe jest podwyższenie oceny pozytywnej o pół oceny w przypadku dużej aktywności studenta na zajęciach (odpowiedzi na pytania, pomysły rozwiązań, udział w dyskusji, pomoc kolegom w rozwiązywaniu problemów, pytania). Warunkiem zaliczenia przedmiotu jest również oddanie poprzez system OLAT połowy zadań wykonywanych w trakcie zajęć. Zadania można oddawać tylko podczas zajęć będąc na nich fizycznie obecnym. Zaliczenie laboratoriów polega na samodzielnym wykonaniu projektów i przesłaniu ich poprzez platformę OLAT. Laboratoria można zaliczyć na dwa sposoby: A. standardowy: wykonanie trzech zadań S1, S2 i S3 (za poprawne i kompletne wykonanie wszystkich zadań ocena 5, za mniej odpowiednio niżej), B. 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, • opis napotkanych problemów i zastosowanych rozwiązań, • czasy wykonania 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" należy zamieścić wykresy, • opis uzyskanych wyników, wnioski, • polecenia, przy pomocy których wykonana była kompilacja, • skrypt SLURM i nazwa klastra/superkomputera, na którym były wykonane obliczenia. Student może zostać wezwany na rozmowę dotyczącą wysłanych zadań albo pisemne odpowiedzenie na pytania dotyczące tych zadań w celu weryfikacji samodzielności wykonania zadań oraz stopnia zrozumienia użytych rozwiązań. Wynik może skutkować obniżeniem liczby uzyskanych punktów nawet do 0 oraz pozbawieniem możliwości poprawienia projektów. Student ma obowiązek dogłębnie rozumieć wysłane do oceny zadania. |
W cyklu 2026Z:
Student uzyskuje zaliczenie zajęć na podstawie: Aby zaliczyć przedmiot z każdej części należy uzyskać przynajmniej 50 punktów. Ocena końcowa jest wystawiana na podstawie średniej arytmetycznej punktów wg skali: Warunkiem zaliczenia przedmiotu jest również oddanie poprzez system OLAT połowy zadań wykonywanych w trakcie zajęć. Zadania można oddawać tylko podczas zajęć będąc na nich fizycznie obecnym. Zaliczenie laboratoriów polega na samodzielnym wykonaniu projektów i przesłaniu ich poprzez platformę OLAT. Laboratoria można zaliczyć na dwa sposoby: Student może zostać wezwany na rozmowę dotyczącą wysłanych zadań albo pisemne odpowiedzenie na pytania dotyczące tych zadań w celu weryfikacji samodzielności wykonania zadań oraz stopnia zrozumienia użytych rozwiązań. Wynik może skutkować obniżeniem liczby uzyskanych punktów nawet do 0 oraz pozbawieniem możliwości poprawienia projektów. Student ma obowiązek dogłębnie rozumieć wysłane do oceny zadania. |