Wydział Informatyki - Zarządzanie i inżynieria produkcji (S1)
Sylabus przedmiotu Podstawy programowania równoległego i rozproszonego:
Informacje podstawowe
Kierunek studiów | Zarządzanie i inżynieria produkcji | ||
---|---|---|---|
Forma studiów | studia stacjonarne | Poziom | pierwszego stopnia |
Tytuł zawodowy absolwenta | inżynier | ||
Obszary studiów | nauk technicznych, studiów inżynierskich | ||
Profil | ogólnoakademicki | ||
Moduł | — | ||
Przedmiot | Podstawy programowania równoległego i rozproszonego | ||
Specjalność | e- technologie w produkcji i zarządzaniu | ||
Jednostka prowadząca | Katedra Inżynierii Oprogramowania | ||
Nauczyciel odpowiedzialny | Marek Pałkowski <Marek.Palkowski@zut.edu.pl> | ||
Inni nauczyciele | |||
ECTS (planowane) | 4,0 | ECTS (formy) | 4,0 |
Forma zaliczenia | egzamin | Język | polski |
Blok obieralny | 1 | Grupa obieralna | 1 |
Formy dydaktyczne
Wymagania wstępne
KOD | Wymaganie wstępne |
---|---|
W-1 | Zaliczone przedmioty: Programowanie w językach C, C++, Architektura komputerów, Systemy operacyjne |
Cele przedmiotu
KOD | Cel modułu/przedmiotu |
---|---|
C-1 | Ukształtowanie wiedzy i umięjtności niezbędnych do opracowania aplikacji równolegych dla komputerów wielerdzeniowych |
C-2 | Ukształtowanie świadomego rozumowania dokształcania się i odpowiedzialności za wspólne realizowanie projektów w zakresie programowania współbieżnego |
Treści programowe z podziałem na formy zajęć
KOD | Treść programowa | Godziny |
---|---|---|
laboratoria | ||
T-L-1 | Kompilacja programu w standardzie OpenMP /C++. Napisanie, kompilacja i sprawdzanie aplikacji z wykorzystaniem programu "parallel". | 2 |
T-L-2 | Napisanie aplikacji z wykorzystaniem pagm OpenMP do przydziału zadań dla wątków, synchronizacji wątków, funkcji bibliotecznych, zmiennych środowiskowych. | 2 |
T-L-3 | Zrównoleglenie pętli programowych w OpenMP przy pomocy pragmy "for". Przydział i podział przestrzeni iteracji pętli do wątków w regionie równoległym. | 3 |
T-L-4 | Napisanie aplikacji w OpenMP do mnożenia macierzy z wykorzystaniem pragm OpenMP. Badanie przyspieszenia, efektywności i skalowalności opracowanych aplikacji. | 3 |
T-L-5 | Napisanie aplikacji równoległej w OpenMP dla wybranego algorytmu z zakresu metod numerycznych, grafiki lub kryptografii. | 2 |
T-L-6 | Napisanie programu równoległego za pomocą biblioteki Intel TBB dla mnożenia macierzy. | 2 |
T-L-7 | Napisanie aplikacji z wykorzystaniem Intel TBB do przydziału zadań dla wątków, synchronizacji wątków, funkcji bibliotecznych, zmiennych środowiskowych. | 3 |
T-L-8 | Porównanie aplikacji równoległych OpenMP i IntelTBB. Badanie przyspieszenia i skalowalności rozwiązań. | 3 |
T-L-9 | Poznanie podstaw programowania równoległego za pomocą kart graficznych i CUDA. Napisanie programu mnożenia macierzy. | 2 |
T-L-10 | Napisanie aplikacji z wykorzystaniem pagm CUDA do przydziału zadań dla wątków, synchronizacji wątków, funkcji bibliotecznych, zmiennych środowiskowych. | 3 |
T-L-11 | Napisanie programu dla wybranego problemu numerycznego z wykorzystaniem biblioteki CUDA. | 3 |
T-L-12 | Badanie przyspieszenia i skalowalności aplikacji równoległych dla kart graficznych. | 2 |
30 | ||
wykłady | ||
T-W-1 | architektura komputerów wielordzeniowych oraz jej związek z wydajnością aplikacji równoległych | 2 |
T-W-2 | podstawowe mierniki jakości aplikacji równoległych (lokalność, granulacja, determinizm, przyspieszenie i efektywność), prawa Amdahl’a i Gustaffson’a | 2 |
T-W-3 | podstawowe transformacje pętli: FAN, PAR, PIPE | 2 |
T-W-4 | pojęcie wątku, podstawowe konstrukcje aplikacji równoległych w OpenMP: region równoległy, powołaniei zakończenia wątków, model obliczeń | 2 |
T-W-5 | Zrównoleglenie pętli w OpenMP, szeregowanie iteracji pętli do wątków | 2 |
T-W-6 | konstrukcje podziału pracy między wątki w OpenMP | 2 |
T-W-7 | Mechanizmy synchronizacji w OpenMP | 2 |
T-W-8 | Biblioteki i narzędzia do tworzenia aplikacji równoległych komputerów wielordzeniowych: OpenMP Java, POSIX, biblioteki Microsoft, biblioteki Java, Intel TBB 2 | 2 |
T-W-9 | podstawowe czynniki mające wpływ na wydajność aplikacji, sposoby pozwalające na tworzenie wydajnych aplikacji | 2 |
T-W-10 | Metodologia PCAM tworzenia algorytmów równoległych | 2 |
T-W-11 | Modele wydajnościowe do aplikacji rónoległych | 2 |
T-W-12 | podstawy programowania w bibliotece CUDA; architektura kart graficznych | 4 |
T-W-13 | standardy CUDA i OpenCL; podsumowanie | 4 |
30 |
Obciążenie pracą studenta - formy aktywności
KOD | Forma aktywności | Godziny |
---|---|---|
laboratoria | ||
A-L-1 | udział w laboratoriach | 30 |
A-L-2 | przygotowanie do laboratoriów; praca we własnym zakresie czasowym | 30 |
A-L-3 | Udział w konsultacjach | 2 |
62 | ||
wykłady | ||
A-W-1 | udział w wykładach | 30 |
A-W-2 | przygotowanie do egzaminu | 20 |
A-W-3 | Udział w egzaminie | 3 |
A-W-4 | Udział w konsultacjach | 2 |
55 |
Metody nauczania / narzędzia dydaktyczne
KOD | Metoda nauczania / narzędzie dydaktyczne |
---|---|
M-1 | Wykad informacyjny/konwersatoryjny |
M-2 | Ćwiczenia laboratoryjne |
Sposoby oceny
KOD | Sposób oceny |
---|---|
S-1 | Ocena formująca: Kompilacja programu w standardzie OpenMP /C++. Napisanie, kompilacja i sprawdzanie aplikacji z wykorzystaniem programu "parallel". |
S-2 | Ocena formująca: Ocena stopnia wykonania zadań praktycznych pod koniec każdych laboratoriów |
S-3 | Ocena formująca: Zaliczenie końcowe poprzez sprawdzenie efektów kształcenia: przedstawienie pytań i ocena odpowiedzi |
Zamierzone efekty kształcenia - wiedza
Zamierzone efekty kształcenia | Odniesienie do efektów kształcenia dla kierunku studiów | Odniesienie do efektów zdefiniowanych dla obszaru kształcenia | Odniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżyniera | Cel przedmiotu | Treści programowe | Metody nauczania | Sposób oceny |
---|---|---|---|---|---|---|---|
ZIP_1A_O1/04_W01 ma wiedzę na temat rozwoju współczesnych architektur | ZIP_1A_W16 | T1A_W05 | — | — | T-L-9, T-W-11, T-W-12, T-W-13 | — | S-3 |
ZIP_1A_O1/04_W02 ma wiedzę z prowadzenia sprawozdań badawczych | ZIP_1A_W04 | T1A_W02, T1A_W03, T1A_W07 | InzA_W02 | C-1 | T-L-4, T-L-5, T-L-7, T-L-10, T-W-12 | M-1 | S-3 |
ZIP_1A_O1/04_W03 ma wiedzę z podstaw programowania i przetwarzania współbieżnego | ZIP_1A_W15 | T1A_W04 | — | C-1 | T-L-1, T-L-4, T-L-6 | M-1 | S-3 |
Zamierzone efekty kształcenia - umiejętności
Zamierzone efekty kształcenia | Odniesienie do efektów kształcenia dla kierunku studiów | Odniesienie do efektów zdefiniowanych dla obszaru kształcenia | Odniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżyniera | Cel przedmiotu | Treści programowe | Metody nauczania | Sposób oceny |
---|---|---|---|---|---|---|---|
ZIP_1A_O1/04_U01 umiejętność badania jakości kodu równolewgłego | ZIP_1A_U02, ZIP_1A_U22 | T1A_U09, T1A_U11, T1A_U15 | InzA_U02, InzA_U07 | C-1 | T-L-3, T-L-5, T-L-12, T-W-1, T-W-2 | M-2 | S-2 |
ZIP_1A_O1/04_U02 ma umiejętność poszukiwania źródeł informacji i wdrażania zdobytej wiedzy w praktyce | ZIP_1A_U05, ZIP_1A_U23 | T1A_U01, T1A_U09 | InzA_U02 | C-1 | T-L-1, T-W-11, T-W-13 | M-2 | S-2 |
ZIP_1A_O1/04_U03 ma umiejętność tworzenia kodu równoległego inwidualnie lub w zespole | ZIP_1A_U12 | T1A_U02 | — | C-1 | T-L-5, T-L-7, T-W-8 | M-2 | S-2 |
ZIP_1A_O1/04_U04 ma umiejętność wyszukania błędów oraz testowania jakości w kodzie równoległym | ZIP_1A_U19 | T1A_U14 | InzA_U06 | C-1 | T-W-4, T-W-5, T-W-8 | M-2 | S-2 |
Zamierzone efekty kształcenia - inne kompetencje społeczne i personalne
Zamierzone efekty kształcenia | Odniesienie do efektów kształcenia dla kierunku studiów | Odniesienie do efektów zdefiniowanych dla obszaru kształcenia | Odniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżyniera | Cel przedmiotu | Treści programowe | Metody nauczania | Sposób oceny |
---|---|---|---|---|---|---|---|
ZIP_1A_O1/04_K01 ma świadomość rozwoju programowania i architektur komputerowych | ZIP_1A_K01, ZIP_1A_K07 | T1A_K01, T1A_K06 | InzA_K02 | C-1 | T-W-1, T-W-9 | M-2 | S-2 |
ZIP_1A_O1/04_K02 posiada świadomość trudu projektowania rozwiązań programowych z uwzględnieniem jakości kodu | ZIP_1A_K03 | T1A_K03, T1A_K04, T1A_K05 | — | C-1 | T-L-7, T-L-8, T-W-7 | M-2 | S-2 |
Kryterium oceny - wiedza
Efekt kształcenia | Ocena | Kryterium oceny |
---|---|---|
ZIP_1A_O1/04_W01 ma wiedzę na temat rozwoju współczesnych architektur | 2,0 | nie umie zdefiniować pojcia maszyny równoległej, nie zna procesorów wielordzeniowych |
3,0 | umie zdefiniować pojęcie maszyny równoległej i procesora wielordzeniowego | |
3,5 | ma wiedzę na 3.0 oraz umie wyjaśnić pojęcia SISD, SIMD oraz MIMD | |
4,0 | ma wiedzę na 3.0 oraz umie wyjaśnić pojęcia SISD, SIMD oraz MIMD z przykładami | |
4,5 | ma wiedzę na 4.0 oraz zna taksonomię Flynna | |
5,0 | ma wiedzę na 4.5 oraz zna technologię GPGPU (CUDA i OpenCL) | |
ZIP_1A_O1/04_W02 ma wiedzę z prowadzenia sprawozdań badawczych | 2,0 | nie zna podstawowych charakterystyk jakości oprogramowania równoległego |
3,0 | umie wyjaśnić pojęcie przyspieszenia i efektywności | |
3,5 | umie wyjaśnić pojęcie przyspieszenia i efektywności oraz skalowalności | |
4,0 | umie wyjaśnić pojęcie przyspieszenia i efektywności oraz skalowalności i lokalności | |
4,5 | umie wyjaśnić pojęcie przyspieszenia i efektywności oraz skalowalności i lokalności włącznie z prawem Amdahla | |
5,0 | umie wyjaśnić pojęcie przyspieszenia i efektywności oraz skalowalności i lokalności włącznie z prawem Amdahla i Gustavsona | |
ZIP_1A_O1/04_W03 ma wiedzę z podstaw programowania i przetwarzania współbieżnego | 2,0 | nie umie wyjaśnić pojęcia wątek, równoległość i współbieżność |
3,0 | umie wyjaśnić pojęcia wątek, równoległość i współbieżność | |
3,5 | umie wyjaśnić pojęcia wątek, równoległość i współbieżność oraz zna podstawy modelu PCAM | |
4,0 | umie wyjaśnić pojęcia wątek, równoległość i współbieżność oraz zna szczegóły modelu PCAM | |
4,5 | ma wiedzę na 4.0 oraz umie opisać mechanizmy synchronizacji | |
5,0 | ma wiedzę na 4.0 oraz umie opisać mechanizmy synchronizacji i ryzyko związane z programowaniem równoległym (zakleszczenia, głodzenie wątków, itd.) |
Kryterium oceny - umiejętności
Efekt kształcenia | Ocena | Kryterium oceny |
---|---|---|
ZIP_1A_O1/04_U01 umiejętność badania jakości kodu równolewgłego | 2,0 | nie potrafi określić jakości kodu równoległego |
3,0 | potrafi obliczyć przyspieszenie i efektywność z uzyskanyc wyników czasowych | |
3,5 | ma wiedzę na 3.0 oraz potrafi ocenić skalowalność dla wielu procesorów | |
4,0 | ma wiedzę na 3.5 i potrafi określić lokalność napisanego programu | |
4,5 | ma wiedzę na 4.0 i umie określić wpływ harmonogramowania instrukcji na wyniki czasowe | |
5,0 | ma wiedzę na 4.5 i umiejętnie przedstawia wyniki badań oraz wnioski za pomocą tabel i wykresów | |
ZIP_1A_O1/04_U02 ma umiejętność poszukiwania źródeł informacji i wdrażania zdobytej wiedzy w praktyce | 2,0 | nie potrafi odnaleźć specyfikacji technicznych i przedstawić potrzebnych informacji z dokumentacji |
3,0 | potrafi odnaleźć specyfikacji technicznych i przedstawić potrzebnych informacji z dokumentacji | |
3,5 | potrafi odnaleźć specyfikacji technicznych i przedstawić potrzebnych informacji z dokumentacji oraz umie czytać opisy funkcji programistycznych | |
4,0 | ma wiedzę na 3.5 oraz sprawnie porusza się po podręcznikach programistycznych | |
4,5 | ma wiedzę na 4.0 oraz sprawnie porusza się po samouczkach (tutorials) | |
5,0 | ma wiedzę na 4.5 oraz umie korzystać z narzędzi wersjonujących | |
ZIP_1A_O1/04_U03 ma umiejętność tworzenia kodu równoległego inwidualnie lub w zespole | 2,0 | nie zna podstaw openMP i intel TBB |
3,0 | zna podstawowe pragmy openmp i Intel TBB | |
3,5 | zna podstawowe pragmy openmp i Intel TBB oraz potrafi napisać program równoległy z grupą | |
4,0 | zna podstawowe pragmy openmp i Intel TBB oraz potrafi z grupą napisać program równoległy oraz sporządzić sprawozdanie z badań | |
4,5 | zna podstawowe pragmy openmp i Intel TBB oraz potrafi napisać program równoległy z grupą i samodzielnie | |
5,0 | zna podstawowe pragmy openmp i Intel TBB oraz potrafi z grupą i samodzielnie napisać program równoległy oraz sporządzić sprawozdanie z badań | |
ZIP_1A_O1/04_U04 ma umiejętność wyszukania błędów oraz testowania jakości w kodzie równoległym | 2,0 | nie potrafi odnaleźć usterek w kodzie równoleglym |
3,0 | potrafi odnaleźć usterek w kodzie równoleglym za pomocą jego testowania i weryfikacji | |
3,5 | ma wiedzę na 3.0 oraz umiejętnie korzysta z podstawowych technik testowania | |
4,0 | ma wiedzę na 3.0 oraz umiejętnie korzysta z zaawansowanych technik testowania | |
4,5 | ma wiedzę na 4.0 i potrafi debugować kod sekwencyjny | |
5,0 | ma wiedzę na 4.5 i potrafi debugować kod równoległy i sekwkenycjny |
Kryterium oceny - inne kompetencje społeczne i personalne
Efekt kształcenia | Ocena | Kryterium oceny |
---|---|---|
ZIP_1A_O1/04_K01 ma świadomość rozwoju programowania i architektur komputerowych | 2,0 | nie zna trendów rozwoju mikroporcesorów |
3,0 | zna trendy rozwoju mikroporcesorów w aspekcie maszyn równoległych | |
3,5 | ma wiedzę na 3.0 oraz zna pojęcia rdzeni i wątków | |
4,0 | ma wiedzę na 3.5 oraz potrafi opisać rozwój kart graficznych | |
4,5 | ma wiedzę na 3.5 oraz potrafi opisać rozwój kart graficznych i urządzań wbudowanych | |
5,0 | ma wiedzę na 3.5 oraz potrafi opisać rozwój kart graficznych i urządzań wbudowanych oraz MID | |
ZIP_1A_O1/04_K02 posiada świadomość trudu projektowania rozwiązań programowych z uwzględnieniem jakości kodu | 2,0 | nie zna różńic między programowaniem sekwenycjnym i rownoległym |
3,0 | zna różńice między programowaniem sekwenycjnym i rownoległym | |
3,5 | zna różńic między programowaniem sekwenycjnym i rownoległym z uwzględneniem synchronizacji | |
4,0 | zna różńic między programowaniem sekwenycjnym i rownoległym z uwzględneniem synchronizacji i komunikacji | |
4,5 | zna różńic między programowaniem sekwenycjnym i rownoległym z uwzględneniem synchronizacji i komunikacji oraz skalowalności i lokalności | |
5,0 | ma wiedzę 4.5 oraz umiejętnie z niej korzysta w praktyce (tworzeniu oprogramowania równoległego) |
Literatura podstawowa
- Wlodzimierz Bielecki, Przetwarzanie równoległe i rozproszone, Politechnika Szczecińska, Szczecin, 2007
- Bielecki Włodzimierz, Marek Pałkowski, Ekstrakcja drobno- i gruboziarnistej równoległości w pętlach programowych, Wydawnictwo ZUT, Szczecin, 2011
- Rohit Chandra i inni, Parallel Programming in OpenMP, Academic Press, London, 2001
Literatura dodatkowa
- NVIDIA Corp., Specyfikacja techniczna bibliteki CUDA, nvidia.com, 2011
- Intel, Specyfikacja techniczna Intel TBB, intel.com, 2011