Wydział Informatyki
Kierunek studiów Data Science Poziom i forma studiów pierwszego stopnia inżynierskie stacjonarne
Specjalność / Ścieżka dyplomowania --- Profil kształcenia ogólnoakademicki
Nazwa przedmiotu Obliczenia równoległe Kod przedmiotu DS1S5OBR
Rodzaj przedmiotu obowiązkowy
Forma zajęć i liczba godzin W Ć L P Ps T S Semestr 5
30 30 Punkty ECTS 4
Przedmioty wprowadzające Język programowania - obieralny (-),   MLOps w technologiach AI (DS1S3MLO),   Programowanie obiektowe (DS1S2POB),   Uczenie maszynowe 2 (DS1S4UM2),  
Cele przedmiotu

Przekazanie wiedzy z zakresu programowania równoległego .
Rozwój praktycznych umiejętności implementacji i optymalizacji rozwiązań równoległych.

Odniesienia do frameworka edukacyjnego mikrokompetencji SFIA
- Programming/Software Development (PROG) - poziom 4: projektowanie i implementacja wydajnych algorytmów równoległych
- Technical Specialism (TECH) - poziom 4: optymalizacja wydajności obliczeń na GPU i systemów wielowątkowych
- High Performance Computing (HPCC) - poziom 3: wykorzystanie klastrów obliczeniowych i systemów rozproszonych

Treści programowe

Kompleksowe wprowadzenie do technik przetwarzania równoległego. Fundamenty architektur równoległych oraz modeli programowania. Programowanie systemów rozproszonych przy pomocy MPI oraz systemów wielordzeniowych przy pomocy OpenMP. Podstawowe algorytmy równoległe. Wstęp do programowania GPU w technologii CUDA.

Wykład:
1. Wprowadzenie
2. Architektury systemów równoległych
3. Komunikacja punkt do punktu w standardzie MPI
4. Nietrywialny przykład MPI - zbiór Mandelbrodta
5. Operacje kolektywane w MPI
6. Podsumowanie MPI
7. Nowe funkcje w MPI 3 i MPI 4
8. Wprowadzenie do OpenMP: zrównoleglanie pętli
9. Synchronizacja w OpenMP
10. Mechanizm zadań w OpenMP
11. Podstawowe algorytmy równoległe: sortowanie, obliczenia macierzowe
12. Metody projektowania i analizy skalowalności algorytmów równoległych
13. Wprowadzenie do CUDA. Organizacja wątków w gridy i bloki
14. Optymalizacja kerneli CUDA – pamięć wspólna
15. Zaliczenie wykładu

Pracownia specjalistyczna:
1. Organizaja pracowni
2. Prosty przykład MPI - program typu pingpong
3. Prosty przykład MPI - program typu pingpong
4. Zaawansowany projekt z MPI
5. Zaawansowany projekt z MPI
6. Zaawansowany projekt z MPI
7. Zaawansowany projekt z MPI
8. Projekt z OpenMP
9. Projekt z OpenMP
10. Projekt z OpenMP
11. Projekt z OpenMP
12. Projekt z CUDA
13. Projekt z CUDA
14. Projekt z CUDA
15. Ocena projektów i zaliczenie przedmiotu

Metody dydaktyczne

praca w grupach,   metoda projektów,   wykład informacyjny,  

Forma zaliczenia

Wykład: zaliczenie pisemne z pytaniami otwartymi
Pracownia specjalistyczna: realizacja zadań indywidualnych; opracowanie zadań projektowych realizowanych w grupach

Symbol efektu uczenia się Zakładane efekty uczenia się Odniesienie do kierunkowych efektów uczenia się
EU1 metody i techniki programowania równoległego w kontekście ML/AI, w tym modele programowania równoległego oraz różnice między przetwarzaniem rozproszonym a wielowątkowym DS1_W03
DS1_W20
EU2 architekturę i specyfikę obliczeń GPU, w tym organizację wątków, pamięć współdzieloną oraz ich zastosowania w optymalizacji obliczeń AI DS1_W04
EU3 metody optymalizacji systemów równoległych, obejmujące analizy wydajności, zarządzanie zasobami oraz strategie skalowania algorytmów DS1_W08
DS1_W21
EU4 implementować równoległe systemy ML/AI, korzystając z technologii takich jak MPI, OpenMP i CUDA, oraz analizować ich wydajność DS1_U04
DS1_U06
EU5 optymalizować wydajność obliczeń równoległych, identyfikując wąskie gardła oraz stosując zaawansowane techniki równoległości DS1_U16
EU6 projektować skalowalne systemy distributed ML, wykorzystując rozproszone frameworki oraz techniki model parallelism i data parallelism DS1_U21
EU7 programować i optymalizować aplikacje działające na systemach wielordzeniowych oraz rozproszonych, dostosowując algorytmy do specyficznych architektur sprzętowych DS1_U05
EU8 świadomego i odpowiedzialnego stosowania metod obliczeń równoległych, uwzględniając ich wpływ na efektywność przetwarzania danych, bezpieczeństwo systemów oraz aspekty etyczne związane z wykorzystaniem AI DS1_K01
DS1_K05
Symbol efektu uczenia się Sposób weryfikacji efektu uczenia się Forma zajęć na której zachodzi weryfikacja
EU1 zaliczenie opisowe i testowe W
EU2 zaliczenie opisowe i testowe W
EU3 zaliczenie opisowe i testowe W
EU4 ocena rozwiązywanych zadań problemowych, ocena projektu Ps
EU5 ocena rozwiązywanych zadań problemowych, ocena projektu Ps
EU6 ocena rozwiązywanych zadań problemowych, ocena projektu Ps
EU7 ocena rozwiązywanych zadań problemowych, ocena projektu Ps
EU8 ocena rozwiązywanych zadań problemowych, ocena projektu Ps
Bilans nakładu pracy studenta (w godzinach) Liczba godz.
Wyliczenie
1 - udziałem w wykładach 30
2 - udziałem w innych formach zajęć 30
3 - indywidualnym wsparciem merytorycznym procesu uczenia się, udziałem w zaliczeniach organizowanych poza planem zajęć 4
4 - przygotowaniem do zaliczenia wykładu 15
5 - przygotowaniem do bieżących zajęć 21
RAZEM: 100
Wskaźniki ilościowe GODZINY ECTS
Nakład pracy studenta związany z zajęciami wymagającymi bezpośredniego udziału nauczyciela 64
(1)+(2)+(3)
2.6
Nakład pracy studenta związany z zajęciami o charakterze praktycznym 51
(2)+(5)
2.0
Literatura podstawowa

1. Z. Czech, Wprowadzenie do obliczeń równoległych, Wydaw. Naukowe PWN, 2013
2. Y. Zamora, R. Robey, Parallel and High Performance Computing, Manning Publications, 2021
3. B. Schmidt, J. Álvaro Gonzalez-Martinez, C. Hundt, M. Schlarb, Parallel Programming, Morgan Kaufmann, 2017
4. N. Matloff, Parallel Computing for Data Science, CRC Press, 2015

Literatura uzupełniająca

1.J. Flux, GPU Mastery Series: Unlocking CUDA's Power using pyCUDA series,‎ Independently published, 2024
2. D. B. Kirk, W. W. Hwu, Programming massively parallel processors: a hands-on approach, 3rd edition, Elsevier/Morgan Kaufmann, 2017

Jednostka realizująca Wydział Informatyki Data opracowania programu
Program opracował(a) dr inż. Krzysztof Jurczuk,dr hab. inż. Wojciech Kwedlo,dr inż. Daniel Reska 2025.06.02