Programowanie równoległe i rozproszone
Programowanie równoległe i rozproszone
W świecie analizy ogromnej ilości danych, intensywnych obliczeń modelowych i systemów przetwarzających sygnały w czasie rzeczywistym – wydajność ma znaczenie kluczowe. Ten kurs pozwoli Ci wejść na poziom obliczeń, gdzie tradycyjne wykonywanie programów przestaje wystarczać, a zaczyna liczyć się optymalizacja, równoległość i skalowalność.
Poznasz technologie i paradygmaty stosowane w architekturach wielordzeniowych, klastrach obliczeniowych, superkomputerach oraz środowiskach chmurowych. Nauczysz się świadomie wykorzystywać GPU, jednostki wektorowe AVX oraz modele współbieżności umożliwiające znaczące skrócenie czasu analizy danych, symulacji i rekonstrukcji sygnałów.
Podczas zajęć:
-
przeanalizujesz modele równoległości i rozproszenia (OpenMP, MPI, CUDA, OpenACC),
-
zrozumiesz zasady synchronizacji, komunikacji i współdzielenia zasobów,
-
przećwiczysz optymalizację wydajności (Amdahl, Gustafson–Barsis, skalowalność),
-
nauczysz się projektować i testować aplikacje działające w środowiskach HPC i gridowych.
Efekty uczenia się
Wiedza – zrozumiesz:
-
jak działają architektury wielordzeniowe, klastrowe i akcelerowane GPU,
-
w jaki sposób rozproszenie obliczeń redukuje czas analizy i symulacji,
-
zasady wektoryzacji, współbieżności, synchronizacji i zarządzania pamięcią,
-
modele programowania dla HPC i chmur (MPI, OpenMP, CUDA, RPC).
Umiejętności – nauczysz się:
-
optymalizować kod pod kątem wydajności i skalowalności,
-
oceniać, kiedy zyska się na równoległości, a kiedy na rozproszeniu lub wektoryzacji,
-
projektować algorytmy obliczeń synchronicznych i asynchronicznych,
-
wdrażać rozwiązania wykorzystujące GPU, akceleratory i przetwarzanie strumieniowe.
Kompetencje społeczne – rozwiniesz:
-
świadomość wpływu nowoczesnych technologii obliczeniowych na rozwój analityki biomedycznej,
-
odpowiedzialność za dobór narzędzi obliczeniowych i ich wpływ na wiarygodność oraz czas przetwarzania danych,
-
gotowość do współpracy w zespołach projektowych realizujących analizy w środowiskach HPC, klastrach i chmurach.