Karta Przedmiotu
| Politechnika Białostocka | Wydział Informatyki | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Kierunek studiów | Data Science |
Poziom i forma studiów |
pierwszego stopnia stacjonarne |
||||||||||||||||||||||||
| Grupa przedmiotów / specjalność |
Profil kształcenia | ogólnoakademicki | |||||||||||||||||||||||||
| Nazwa przedmiotu | Obliczenia równoległe | Kod przedmiotu | DS1S5OBR | ||||||||||||||||||||||||
| Rodzaj zajęć | obowiązkowy | ||||||||||||||||||||||||||
| Formy zajęć i liczba godzin | W | Ć | L | P | Ps | T | S | Semestr | 5 | ||||||||||||||||||
| 30 | 30 | Punkty ECTS | 4 | ||||||||||||||||||||||||
| Program obowiązuje od | 2025/2026 | ||||||||||||||||||||||||||
| 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 |
||||||||||||||||||||||||||
| Ramowe 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. | ||||||||||||||||||||||||||
| Inne informacje o przedmiocie | przedmiot ma związek z prowadzoną na Uczelni działalnością naukową | ||||||||||||||||||||||||||
| Wyliczenie: | Nakład pracy studenta związany z: | Godzin ogółem |
W tym kontaktowych |
W tym praktycznych |
|||||||||||||||||||||||
| udziałem w wykładach | 30 | 30 | |||||||||||||||||||||||||
| udziałem w innych formach zajęć | 30 | 30 | 30 | ||||||||||||||||||||||||
| indywidualnym wsparciem merytorycznym procesu uczenia się, udziałem w zaliczeniach organizowanych poza planem zajęć | 4 | 4 | |||||||||||||||||||||||||
| przygotowaniem do zaliczenia wykładu | 15 | ||||||||||||||||||||||||||
| przygotowaniem do bieżących zajęć | 21 | 21 | |||||||||||||||||||||||||
| Razem godzin: | 100 | 64 | 51 | ||||||||||||||||||||||||
| Razem punktów ECTS: | 4 | 2.6 | 2.0 | ||||||||||||||||||||||||
| Zakładane kierunkowe efekty uczenia się | Wiedza | Umiejętności | Kompetencje społeczne |
||||||||||||||||||||||||
| DS1_W03 | DS1_U04 | DS1_K01 | |||||||||||||||||||||||||
| DS1_W04 | DS1_U05 | DS1_K05 | |||||||||||||||||||||||||
| DS1_W08 | DS1_U06 | ||||||||||||||||||||||||||
| DS1_W20 | DS1_U16 | ||||||||||||||||||||||||||
| DS1_W21 | DS1_U21 | ||||||||||||||||||||||||||
| Cele i treści ramowe sformułował(a) | dr hab. inż. Wojciech Kwedlo, dr inż. Daniel Reska, dr inż. Paweł Tadejko | Data: | 29/05/2025 | ||||||||||||||||||||||||
| Realizacja w roku akademickim | 2027/2028 | ||||||||||||||||||||||||||
| Treści programowe | |||||||||||||||||||||||||||
| 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 (realizacja stacjonarna) |
|||||||||||||||||||||||||||
| W | wykład problemowy; wykład konwersatoryjny; wykład z prezentacją multimedialną | ||||||||||||||||||||||||||
| Ps | zadania indywidualne; zadania projektowe w grupach; dyskusja rozwiązań | ||||||||||||||||||||||||||
| Metody dydaktyczne (realizacja zdalna) |
|||||||||||||||||||||||||||
| W | wykład problemowy; wykład konwersatoryjny; wykład z prezentacją multimedialną | ||||||||||||||||||||||||||
| - | |||||||||||||||||||||||||||
| Forma zaliczenia | |||||||||||||||||||||||||||
| W | zaliczenie pisemne z pytaniami otwartymi | ||||||||||||||||||||||||||
| Ps | realizacja zadań indywidualnych; opracowanie zadań projektowych realizowanych w grupach | ||||||||||||||||||||||||||
| Warunki zaliczenia | |||||||||||||||||||||||||||
| W | Uzyskanie min. 30% z każdego E1-E3, a po spełnieniu tego warunku ostateczna ocena wynika z sumy uzyskanych punktów. Kryteria oceny: [ 0 – 50]% punktów – 2.0 (50 – 60]% punktów – 3.0 (60 – 70]% punktów – 3.5 (70 – 80]% punktów – 4.0 (80 – 90]% punktów – 4.5 (90 – 100]% punktów – 5.0 |
||||||||||||||||||||||||||
| Ps | Uzyskanie min. 30% z każdego E4-E7, a po spełnieniu tego warunku ostateczna ocena wynika z sumy uzyskanych punktów. Kryteria oceny: [ 0 – 50]% punktów – 2.0 (50 – 60]% punktów – 3.0 (60 – 70]% punktów – 3.5 (70 – 80]% punktów – 4.0 (80 – 90]% punktów – 4.5 (90 – 100]% punktów – 5.0 |
||||||||||||||||||||||||||
| Symbol efektu | Zakładane efekty uczenia się | Odniesienie do efektów uczenia się zdefiniowanych dla kierunku studiów | |||||||||||||||||||||||||
| Wiedza | Umiejętności | Kompetencje społeczne |
|||||||||||||||||||||||||
| Wiedza: student zna i rozumie | |||||||||||||||||||||||||||
| E1 | 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 | ||||||||||||||||||||||||||
| E2 | architekturę i specyfikę obliczeń GPU, w tym organizację wątków, pamięć współdzieloną oraz ich zastosowania w optymalizacji obliczeń AI | ||||||||||||||||||||||||||
| E3 | metody optymalizacji systemów równoległych, obejmujące analizy wydajności, zarządzanie zasobami oraz strategie skalowania algorytmów | ||||||||||||||||||||||||||
| Umiejętności: student potrafi | |||||||||||||||||||||||||||
| E4 | implementować równoległe systemy ML/AI, korzystając z technologii takich jak MPI, OpenMP i CUDA, oraz analizować ich wydajność | ||||||||||||||||||||||||||
| E5 | optymalizować wydajność obliczeń równoległych, identyfikując wąskie gardła oraz stosując zaawansowane techniki równoległości | ||||||||||||||||||||||||||
| E6 | projektować skalowalne systemy distributed ML, wykorzystując rozproszone frameworki oraz techniki model parallelism i data parallelism | ||||||||||||||||||||||||||
| E7 | programować i optymalizować aplikacje działające na systemach wielordzeniowych oraz rozproszonych, dostosowując algorytmy do specyficznych architektur sprzętowych | ||||||||||||||||||||||||||
| Kompetencje społeczne: student jest gotów do | |||||||||||||||||||||||||||
| E8 | ś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 | ||||||||||||||||||||||||||
| Symbol efektu | Sposób weryfikacji efektu uczenia się | Forma zajęć na której zachodzi weryfikacja | |||||||||||||||||||||||||
| E1 | zaliczenie opisowe i testowe | W | |||||||||||||||||||||||||
| E2 | zaliczenie opisowe i testowe | W | |||||||||||||||||||||||||
| E3 | zaliczenie opisowe i testowe | W | |||||||||||||||||||||||||
| E4 | ocena rozwiązywanych zadań problemowych, ocena projektu | Ps | |||||||||||||||||||||||||
| E5 | ocena rozwiązywanych zadań problemowych, ocena projektu | Ps | |||||||||||||||||||||||||
| E6 | ocena rozwiązywanych zadań problemowych, ocena projektu | Ps | |||||||||||||||||||||||||
| E7 | ocena rozwiązywanych zadań problemowych, ocena projektu | Ps | |||||||||||||||||||||||||
| E8 | ocena rozwiązywanych zadań problemowych, ocena projektu | Ps | |||||||||||||||||||||||||
| 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 | ||||||||||||||||||||||||||
| Koordynator przedmiotu: | dr inż. Krzysztof Jurczuk, dr hab. inż. Wojciech Kwedlo, dr inż. Daniel Reska | Data: | 02/06/2025 | ||||||||||||||||||||||||