Zachodniopomorski Uniwersytet Technologiczny w Szczecinie

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

Forma dydaktycznaKODSemestrGodzinyECTSWagaZaliczenie
wykładyW6 30 1,90,50egzamin
laboratoriaL6 30 2,10,50zaliczenie

Wymagania wstępne

KODWymaganie wstępne
W-1Zaliczone przedmioty: Programowanie w językach C, C++, Architektura komputerów, Systemy operacyjne

Cele przedmiotu

KODCel modułu/przedmiotu
C-1Ukształtowanie wiedzy i umięjtności niezbędnych do opracowania aplikacji równolegych dla komputerów wielerdzeniowych
C-2Ukształ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ęć

KODTreść programowaGodziny
laboratoria
T-L-1Kompilacja programu w standardzie OpenMP /C++. Napisanie, kompilacja i sprawdzanie aplikacji z wykorzystaniem programu "parallel".2
T-L-2Napisanie aplikacji z wykorzystaniem pagm OpenMP do przydziału zadań dla wątków, synchronizacji wątków, funkcji bibliotecznych, zmiennych środowiskowych.2
T-L-3Zró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-4Napisanie aplikacji w OpenMP do mnożenia macierzy z wykorzystaniem pragm OpenMP. Badanie przyspieszenia, efektywności i skalowalności opracowanych aplikacji.3
T-L-5Napisanie aplikacji równoległej w OpenMP dla wybranego algorytmu z zakresu metod numerycznych, grafiki lub kryptografii.2
T-L-6Napisanie programu równoległego za pomocą biblioteki Intel TBB dla mnożenia macierzy.2
T-L-7Napisanie aplikacji z wykorzystaniem Intel TBB do przydziału zadań dla wątków, synchronizacji wątków, funkcji bibliotecznych, zmiennych środowiskowych.3
T-L-8Porównanie aplikacji równoległych OpenMP i IntelTBB. Badanie przyspieszenia i skalowalności rozwiązań.3
T-L-9Poznanie podstaw programowania równoległego za pomocą kart graficznych i CUDA. Napisanie programu mnożenia macierzy.2
T-L-10Napisanie aplikacji z wykorzystaniem pagm CUDA do przydziału zadań dla wątków, synchronizacji wątków, funkcji bibliotecznych, zmiennych środowiskowych.3
T-L-11Napisanie programu dla wybranego problemu numerycznego z wykorzystaniem biblioteki CUDA.3
T-L-12Badanie przyspieszenia i skalowalności aplikacji równoległych dla kart graficznych.2
30
wykłady
T-W-1architektura komputerów wielordzeniowych oraz jej związek z wydajnością aplikacji równoległych2
T-W-2podstawowe mierniki jakości aplikacji równoległych (lokalność, granulacja, determinizm, przyspieszenie i efektywność), prawa Amdahl’a i Gustaffson’a2
T-W-3podstawowe transformacje pętli: FAN, PAR, PIPE2
T-W-4poję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-5Zrównoleglenie pętli w OpenMP, szeregowanie iteracji pętli do wątków2
T-W-6konstrukcje podziału pracy między wątki w OpenMP2
T-W-7Mechanizmy synchronizacji w OpenMP2
T-W-8Biblioteki i narzędzia do tworzenia aplikacji równoległych komputerów wielordzeniowych: OpenMP Java, POSIX, biblioteki Microsoft, biblioteki Java, Intel TBB 22
T-W-9podstawowe czynniki mające wpływ na wydajność aplikacji, sposoby pozwalające na tworzenie wydajnych aplikacji2
T-W-10Metodologia PCAM tworzenia algorytmów równoległych2
T-W-11Modele wydajnościowe do aplikacji rónoległych2
T-W-12podstawy programowania w bibliotece CUDA; architektura kart graficznych4
T-W-13standardy CUDA i OpenCL; podsumowanie4
30

Obciążenie pracą studenta - formy aktywności

KODForma aktywnościGodziny
laboratoria
A-L-1udział w laboratoriach30
A-L-2przygotowanie do laboratoriów; praca we własnym zakresie czasowym30
A-L-3Udział w konsultacjach2
62
wykłady
A-W-1udział w wykładach30
A-W-2przygotowanie do egzaminu20
A-W-3Udział w egzaminie3
A-W-4Udział w konsultacjach2
55

Metody nauczania / narzędzia dydaktyczne

KODMetoda nauczania / narzędzie dydaktyczne
M-1Wykad informacyjny/konwersatoryjny
M-2Ćwiczenia laboratoryjne

Sposoby oceny

KODSposób oceny
S-1Ocena formująca: Kompilacja programu w standardzie OpenMP /C++. Napisanie, kompilacja i sprawdzanie aplikacji z wykorzystaniem programu "parallel".
S-2Ocena formująca: Ocena stopnia wykonania zadań praktycznych pod koniec każdych laboratoriów
S-3Ocena formująca: Zaliczenie końcowe poprzez sprawdzenie efektów kształcenia: przedstawienie pytań i ocena odpowiedzi

Zamierzone efekty kształcenia - wiedza

Zamierzone efekty kształceniaOdniesienie do efektów kształcenia dla kierunku studiówOdniesienie do efektów zdefiniowanych dla obszaru kształceniaOdniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżynieraCel przedmiotuTreści programoweMetody nauczaniaSposób oceny
ZIP_1A_O1/4_W01
ma wiedzę na temat rozwoju współczesnych architektur
ZIP_1A_W16T1A_W05T-L-9, T-W-12, T-W-13, T-W-11S-3
ZIP_1A_O1/4_W02
ma wiedzę z prowadzenia sprawozdań badawczych
ZIP_1A_W04T1A_W02, T1A_W03, T1A_W07InzA_W02C-1T-L-7, T-W-12, T-L-10, T-L-5, T-L-4M-1S-3
ZIP_1A_O1/4_W03
ma wiedzę z podstaw programowania i przetwarzania współbieżnego
ZIP_1A_W15T1A_W04C-1T-L-1, T-L-6, T-L-4M-1S-3

Zamierzone efekty kształcenia - umiejętności

Zamierzone efekty kształceniaOdniesienie do efektów kształcenia dla kierunku studiówOdniesienie do efektów zdefiniowanych dla obszaru kształceniaOdniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżynieraCel przedmiotuTreści programoweMetody nauczaniaSposób oceny
ZIP_1A_O1/4_U01
umiejętność badania jakości kodu równolewgłego
ZIP_1A_U22, ZIP_1A_U02T1A_U09, T1A_U11, T1A_U15InzA_U02, InzA_U07C-1T-L-12, T-W-1, T-W-2, T-L-5, T-L-3M-2S-2
ZIP_1A_O1/4_U02
ma umiejętność poszukiwania źródeł informacji i wdrażania zdobytej wiedzy w praktyce
ZIP_1A_U23, ZIP_1A_U05T1A_U01, T1A_U09InzA_U02C-1T-W-11, T-W-13, T-L-1M-2S-2
ZIP_1A_O1/4_U03
ma umiejętność tworzenia kodu równoległego inwidualnie lub w zespole
ZIP_1A_U12T1A_U02C-1T-L-7, T-W-8, T-L-5M-2S-2
ZIP_1A_O1/4_U04
ma umiejętność wyszukania błędów oraz testowania jakości w kodzie równoległym
ZIP_1A_U19T1A_U14InzA_U06C-1T-W-4, T-W-8, T-W-5M-2S-2

Zamierzone efekty kształcenia - inne kompetencje społeczne i personalne

Zamierzone efekty kształceniaOdniesienie do efektów kształcenia dla kierunku studiówOdniesienie do efektów zdefiniowanych dla obszaru kształceniaOdniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżynieraCel przedmiotuTreści programoweMetody nauczaniaSposób oceny
ZIP_1A_O1/4_K01
ma świadomość rozwoju programowania i architektur komputerowych
ZIP_1A_K01, ZIP_1A_K07T1A_K01, T1A_K06InzA_K02C-1T-W-9, T-W-1M-2S-2
ZIP_1A_O1/4_K03
posiada świadomość trudu projektowania rozwiązań programowych z uwzględnieniem jakości kodu
ZIP_1A_K03T1A_K03, T1A_K04, T1A_K05C-1T-L-7, T-W-7, T-L-8M-2S-2

Kryterium oceny - wiedza

Efekt kształceniaOcenaKryterium oceny
ZIP_1A_O1/4_W01
ma wiedzę na temat rozwoju współczesnych architektur
2,0nie umie zdefiniować pojcia maszyny równoległej, nie zna procesorów wielordzeniowych
3,0umie zdefiniować pojęcie maszyny równoległej i procesora wielordzeniowego
3,5ma wiedzę na 3.0 oraz umie wyjaśnić pojęcia SISD, SIMD oraz MIMD
4,0ma wiedzę na 3.0 oraz umie wyjaśnić pojęcia SISD, SIMD oraz MIMD z przykładami
4,5ma wiedzę na 4.0 oraz zna taksonomię Flynna
5,0ma wiedzę na 4.5 oraz zna technologię GPGPU (CUDA i OpenCL)
ZIP_1A_O1/4_W02
ma wiedzę z prowadzenia sprawozdań badawczych
2,0nie zna podstawowych charakterystyk jakości oprogramowania równoległego
3,0umie wyjaśnić pojęcie przyspieszenia i efektywności
3,5umie wyjaśnić pojęcie przyspieszenia i efektywności oraz skalowalności
4,0umie wyjaśnić pojęcie przyspieszenia i efektywności oraz skalowalności i lokalności
4,5umie wyjaśnić pojęcie przyspieszenia i efektywności oraz skalowalności i lokalności włącznie z prawem Amdahla
5,0umie wyjaśnić pojęcie przyspieszenia i efektywności oraz skalowalności i lokalności włącznie z prawem Amdahla i Gustavsona
ZIP_1A_O1/4_W03
ma wiedzę z podstaw programowania i przetwarzania współbieżnego
2,0nie umie wyjaśnić pojęcia wątek, równoległość i współbieżność
3,0umie wyjaśnić pojęcia wątek, równoległość i współbieżność
3,5umie wyjaśnić pojęcia wątek, równoległość i współbieżność oraz zna podstawy modelu PCAM
4,0umie wyjaśnić pojęcia wątek, równoległość i współbieżność oraz zna szczegóły modelu PCAM
4,5ma wiedzę na 4.0 oraz umie opisać mechanizmy synchronizacji
5,0ma 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łceniaOcenaKryterium oceny
ZIP_1A_O1/4_U01
umiejętność badania jakości kodu równolewgłego
2,0nie potrafi określić jakości kodu równoległego
3,0potrafi obliczyć przyspieszenie i efektywność z uzyskanyc wyników czasowych
3,5ma wiedzę na 3.0 oraz potrafi ocenić skalowalność dla wielu procesorów
4,0ma wiedzę na 3.5 i potrafi określić lokalność napisanego programu
4,5ma wiedzę na 4.0 i umie określić wpływ harmonogramowania instrukcji na wyniki czasowe
5,0ma wiedzę na 4.5 i umiejętnie przedstawia wyniki badań oraz wnioski za pomocą tabel i wykresów
ZIP_1A_O1/4_U02
ma umiejętność poszukiwania źródeł informacji i wdrażania zdobytej wiedzy w praktyce
2,0nie potrafi odnaleźć specyfikacji technicznych i przedstawić potrzebnych informacji z dokumentacji
3,0potrafi odnaleźć specyfikacji technicznych i przedstawić potrzebnych informacji z dokumentacji
3,5potrafi odnaleźć specyfikacji technicznych i przedstawić potrzebnych informacji z dokumentacji oraz umie czytać opisy funkcji programistycznych
4,0ma wiedzę na 3.5 oraz sprawnie porusza się po podręcznikach programistycznych
4,5ma wiedzę na 4.0 oraz sprawnie porusza się po samouczkach (tutorials)
5,0ma wiedzę na 4.5 oraz umie korzystać z narzędzi wersjonujących
ZIP_1A_O1/4_U03
ma umiejętność tworzenia kodu równoległego inwidualnie lub w zespole
2,0nie zna podstaw openMP i intel TBB
3,0zna podstawowe pragmy openmp i Intel TBB
3,5zna podstawowe pragmy openmp i Intel TBB oraz potrafi napisać program równoległy z grupą
4,0zna podstawowe pragmy openmp i Intel TBB oraz potrafi z grupą napisać program równoległy oraz sporządzić sprawozdanie z badań
4,5zna podstawowe pragmy openmp i Intel TBB oraz potrafi napisać program równoległy z grupą i samodzielnie
5,0zna 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/4_U04
ma umiejętność wyszukania błędów oraz testowania jakości w kodzie równoległym
2,0nie potrafi odnaleźć usterek w kodzie równoleglym
3,0potrafi odnaleźć usterek w kodzie równoleglym za pomocą jego testowania i weryfikacji
3,5ma wiedzę na 3.0 oraz umiejętnie korzysta z podstawowych technik testowania
4,0ma wiedzę na 3.0 oraz umiejętnie korzysta z zaawansowanych technik testowania
4,5ma wiedzę na 4.0 i potrafi debugować kod sekwencyjny
5,0ma wiedzę na 4.5 i potrafi debugować kod równoległy i sekwkenycjny

Kryterium oceny - inne kompetencje społeczne i personalne

Efekt kształceniaOcenaKryterium oceny
ZIP_1A_O1/4_K01
ma świadomość rozwoju programowania i architektur komputerowych
2,0nie zna trendów rozwoju mikroporcesorów
3,0zna trendy rozwoju mikroporcesorów w aspekcie maszyn równoległych
3,5ma wiedzę na 3.0 oraz zna pojęcia rdzeni i wątków
4,0ma wiedzę na 3.5 oraz potrafi opisać rozwój kart graficznych
4,5ma wiedzę na 3.5 oraz potrafi opisać rozwój kart graficznych i urządzań wbudowanych
5,0ma wiedzę na 3.5 oraz potrafi opisać rozwój kart graficznych i urządzań wbudowanych oraz MID
ZIP_1A_O1/4_K03
posiada świadomość trudu projektowania rozwiązań programowych z uwzględnieniem jakości kodu
2,0nie zna różńic między programowaniem sekwenycjnym i rownoległym
3,0zna różńice między programowaniem sekwenycjnym i rownoległym
3,5zna różńic między programowaniem sekwenycjnym i rownoległym z uwzględneniem synchronizacji
4,0zna różńic między programowaniem sekwenycjnym i rownoległym z uwzględneniem synchronizacji i komunikacji
4,5zna różńic między programowaniem sekwenycjnym i rownoległym z uwzględneniem synchronizacji i komunikacji oraz skalowalności i lokalności
5,0ma wiedzę 4.5 oraz umiejętnie z niej korzysta w praktyce (tworzeniu oprogramowania równoległego)

Literatura podstawowa

  1. Wlodzimierz Bielecki, Przetwarzanie równoległe i rozproszone, Politechnika Szczecińska, Szczecin, 2007
  2. Bielecki Włodzimierz, Marek Pałkowski, Ekstrakcja drobno- i gruboziarnistej równoległości w pętlach programowych, Wydawnictwo ZUT, Szczecin, 2011
  3. Rohit Chandra i inni, Parallel Programming in OpenMP, Academic Press, London, 2001

Literatura dodatkowa

  1. NVIDIA Corp., Specyfikacja techniczna bibliteki CUDA, nvidia.com, 2011
  2. Intel, Specyfikacja techniczna Intel TBB, intel.com, 2011

Treści programowe - laboratoria

KODTreść programowaGodziny
T-L-1Kompilacja programu w standardzie OpenMP /C++. Napisanie, kompilacja i sprawdzanie aplikacji z wykorzystaniem programu "parallel".2
T-L-2Napisanie aplikacji z wykorzystaniem pagm OpenMP do przydziału zadań dla wątków, synchronizacji wątków, funkcji bibliotecznych, zmiennych środowiskowych.2
T-L-3Zró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-4Napisanie aplikacji w OpenMP do mnożenia macierzy z wykorzystaniem pragm OpenMP. Badanie przyspieszenia, efektywności i skalowalności opracowanych aplikacji.3
T-L-5Napisanie aplikacji równoległej w OpenMP dla wybranego algorytmu z zakresu metod numerycznych, grafiki lub kryptografii.2
T-L-6Napisanie programu równoległego za pomocą biblioteki Intel TBB dla mnożenia macierzy.2
T-L-7Napisanie aplikacji z wykorzystaniem Intel TBB do przydziału zadań dla wątków, synchronizacji wątków, funkcji bibliotecznych, zmiennych środowiskowych.3
T-L-8Porównanie aplikacji równoległych OpenMP i IntelTBB. Badanie przyspieszenia i skalowalności rozwiązań.3
T-L-9Poznanie podstaw programowania równoległego za pomocą kart graficznych i CUDA. Napisanie programu mnożenia macierzy.2
T-L-10Napisanie aplikacji z wykorzystaniem pagm CUDA do przydziału zadań dla wątków, synchronizacji wątków, funkcji bibliotecznych, zmiennych środowiskowych.3
T-L-11Napisanie programu dla wybranego problemu numerycznego z wykorzystaniem biblioteki CUDA.3
T-L-12Badanie przyspieszenia i skalowalności aplikacji równoległych dla kart graficznych.2
30

Treści programowe - wykłady

KODTreść programowaGodziny
T-W-1architektura komputerów wielordzeniowych oraz jej związek z wydajnością aplikacji równoległych2
T-W-2podstawowe mierniki jakości aplikacji równoległych (lokalność, granulacja, determinizm, przyspieszenie i efektywność), prawa Amdahl’a i Gustaffson’a2
T-W-3podstawowe transformacje pętli: FAN, PAR, PIPE2
T-W-4poję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-5Zrównoleglenie pętli w OpenMP, szeregowanie iteracji pętli do wątków2
T-W-6konstrukcje podziału pracy między wątki w OpenMP2
T-W-7Mechanizmy synchronizacji w OpenMP2
T-W-8Biblioteki i narzędzia do tworzenia aplikacji równoległych komputerów wielordzeniowych: OpenMP Java, POSIX, biblioteki Microsoft, biblioteki Java, Intel TBB 22
T-W-9podstawowe czynniki mające wpływ na wydajność aplikacji, sposoby pozwalające na tworzenie wydajnych aplikacji2
T-W-10Metodologia PCAM tworzenia algorytmów równoległych2
T-W-11Modele wydajnościowe do aplikacji rónoległych2
T-W-12podstawy programowania w bibliotece CUDA; architektura kart graficznych4
T-W-13standardy CUDA i OpenCL; podsumowanie4
30

Formy aktywności - laboratoria

KODForma aktywnościGodziny
A-L-1udział w laboratoriach30
A-L-2przygotowanie do laboratoriów; praca we własnym zakresie czasowym30
A-L-3Udział w konsultacjach2
62
(*) 1 punkt ECTS, odpowiada około 30 godzinom aktywności studenta

Formy aktywności - wykłady

KODForma aktywnościGodziny
A-W-1udział w wykładach30
A-W-2przygotowanie do egzaminu20
A-W-3Udział w egzaminie3
A-W-4Udział w konsultacjach2
55
(*) 1 punkt ECTS, odpowiada około 30 godzinom aktywności studenta
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaZIP_1A_O1/4_W01ma wiedzę na temat rozwoju współczesnych architektur
Odniesienie do efektów kształcenia dla kierunku studiówZIP_1A_W16ma podstawową wiedzę o trendach rozwojowych w obszarze reprezentowanej dyscypliny inżynierskiej
Odniesienie do efektów zdefiniowanych dla obszaru kształceniaT1A_W05ma podstawową wiedzę o trendach rozwojowych z zakresu dziedzin nauki i dyscyplin naukowych, właściwych dla studiowanego kierunku studiów
Treści programoweT-L-9Poznanie podstaw programowania równoległego za pomocą kart graficznych i CUDA. Napisanie programu mnożenia macierzy.
T-W-12podstawy programowania w bibliotece CUDA; architektura kart graficznych
T-W-13standardy CUDA i OpenCL; podsumowanie
T-W-11Modele wydajnościowe do aplikacji rónoległych
Sposób ocenyS-3Ocena formująca: Zaliczenie końcowe poprzez sprawdzenie efektów kształcenia: przedstawienie pytań i ocena odpowiedzi
Kryteria ocenyOcenaKryterium oceny
2,0nie umie zdefiniować pojcia maszyny równoległej, nie zna procesorów wielordzeniowych
3,0umie zdefiniować pojęcie maszyny równoległej i procesora wielordzeniowego
3,5ma wiedzę na 3.0 oraz umie wyjaśnić pojęcia SISD, SIMD oraz MIMD
4,0ma wiedzę na 3.0 oraz umie wyjaśnić pojęcia SISD, SIMD oraz MIMD z przykładami
4,5ma wiedzę na 4.0 oraz zna taksonomię Flynna
5,0ma wiedzę na 4.5 oraz zna technologię GPGPU (CUDA i OpenCL)
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaZIP_1A_O1/4_W02ma wiedzę z prowadzenia sprawozdań badawczych
Odniesienie do efektów kształcenia dla kierunku studiówZIP_1A_W04ma widzę z zakresu planowania i przeprowadzania prostych eksperymentów badawczych (w tym symulacji komputerowej)
Odniesienie do efektów zdefiniowanych dla obszaru kształceniaT1A_W02ma podstawową wiedzę w zakresie kierunków studiów powiązanych ze studiowanym kierunkiem studiów
T1A_W03ma uporządkowaną, podbudowaną teoretycznie wiedzę ogólną obejmującą kluczowe zagadnienia z zakresu studiowanego kierunku studiów
T1A_W07zna podstawowe metody, techniki, narzędzia i materiały stosowane przy rozwiązywaniu prostych zadań inżynierskich z zakresu studiowanego kierunku studiów
Odniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżynieraInzA_W02zna podstawowe metody, techniki, narzędzia i materiały stosowane przy rozwiązywaniu prostych zadań inżynierskich z zakresu studiowanego kierunku studiów
Cel przedmiotuC-1Ukształtowanie wiedzy i umięjtności niezbędnych do opracowania aplikacji równolegych dla komputerów wielerdzeniowych
Treści programoweT-L-7Napisanie aplikacji z wykorzystaniem Intel TBB do przydziału zadań dla wątków, synchronizacji wątków, funkcji bibliotecznych, zmiennych środowiskowych.
T-W-12podstawy programowania w bibliotece CUDA; architektura kart graficznych
T-L-10Napisanie aplikacji z wykorzystaniem pagm CUDA do przydziału zadań dla wątków, synchronizacji wątków, funkcji bibliotecznych, zmiennych środowiskowych.
T-L-5Napisanie aplikacji równoległej w OpenMP dla wybranego algorytmu z zakresu metod numerycznych, grafiki lub kryptografii.
T-L-4Napisanie aplikacji w OpenMP do mnożenia macierzy z wykorzystaniem pragm OpenMP. Badanie przyspieszenia, efektywności i skalowalności opracowanych aplikacji.
Metody nauczaniaM-1Wykad informacyjny/konwersatoryjny
Sposób ocenyS-3Ocena formująca: Zaliczenie końcowe poprzez sprawdzenie efektów kształcenia: przedstawienie pytań i ocena odpowiedzi
Kryteria ocenyOcenaKryterium oceny
2,0nie zna podstawowych charakterystyk jakości oprogramowania równoległego
3,0umie wyjaśnić pojęcie przyspieszenia i efektywności
3,5umie wyjaśnić pojęcie przyspieszenia i efektywności oraz skalowalności
4,0umie wyjaśnić pojęcie przyspieszenia i efektywności oraz skalowalności i lokalności
4,5umie wyjaśnić pojęcie przyspieszenia i efektywności oraz skalowalności i lokalności włącznie z prawem Amdahla
5,0umie wyjaśnić pojęcie przyspieszenia i efektywności oraz skalowalności i lokalności włącznie z prawem Amdahla i Gustavsona
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaZIP_1A_O1/4_W03ma wiedzę z podstaw programowania i przetwarzania współbieżnego
Odniesienie do efektów kształcenia dla kierunku studiówZIP_1A_W15ma szczegółową wiedzę związaną z niektórymi obszarami reprezentowanej dyscypliny inżynierskiej
Odniesienie do efektów zdefiniowanych dla obszaru kształceniaT1A_W04ma szczegółową wiedzę związaną z wybranymi zagadnieniami z zakresu studiowanego kierunku studiów
Cel przedmiotuC-1Ukształtowanie wiedzy i umięjtności niezbędnych do opracowania aplikacji równolegych dla komputerów wielerdzeniowych
Treści programoweT-L-1Kompilacja programu w standardzie OpenMP /C++. Napisanie, kompilacja i sprawdzanie aplikacji z wykorzystaniem programu "parallel".
T-L-6Napisanie programu równoległego za pomocą biblioteki Intel TBB dla mnożenia macierzy.
T-L-4Napisanie aplikacji w OpenMP do mnożenia macierzy z wykorzystaniem pragm OpenMP. Badanie przyspieszenia, efektywności i skalowalności opracowanych aplikacji.
Metody nauczaniaM-1Wykad informacyjny/konwersatoryjny
Sposób ocenyS-3Ocena formująca: Zaliczenie końcowe poprzez sprawdzenie efektów kształcenia: przedstawienie pytań i ocena odpowiedzi
Kryteria ocenyOcenaKryterium oceny
2,0nie umie wyjaśnić pojęcia wątek, równoległość i współbieżność
3,0umie wyjaśnić pojęcia wątek, równoległość i współbieżność
3,5umie wyjaśnić pojęcia wątek, równoległość i współbieżność oraz zna podstawy modelu PCAM
4,0umie wyjaśnić pojęcia wątek, równoległość i współbieżność oraz zna szczegóły modelu PCAM
4,5ma wiedzę na 4.0 oraz umie opisać mechanizmy synchronizacji
5,0ma 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.)
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaZIP_1A_O1/4_U01umiejętność badania jakości kodu równolewgłego
Odniesienie do efektów kształcenia dla kierunku studiówZIP_1A_U22potrafi wykorzystać w zadaniach inżynierskich metody analityczne, symulacyjne i eksperymentalne
ZIP_1A_U02ma umiejętności w zakresie eksploatacji oraz nadzorowania obiektów i systemów zarządzania operacyjnego
Odniesienie do efektów zdefiniowanych dla obszaru kształceniaT1A_U09potrafi wykorzystać do formułowania i rozwiązywania zadań inżynierskich metody analityczne, symulacyjne oraz eksperymentalne
T1A_U11ma przygotowanie niezbędne do pracy w środowisku przemysłowym oraz zna zasady bezpieczeństwa związane z tą pracą
T1A_U15potrafi ocenić przydatność rutynowych metod i narzędzi służących do rozwiązania prostego zadania inżynierskiego o charakterze praktycznym, charakterystycznego dla studiowanego kierunku studiów oraz wybrać i zastosować właściwą metodę i narzędzia
Odniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżynieraInzA_U02potrafi wykorzystać do formułowania i rozwiązywania zadań inżynierskich metody analityczne, symulacyjne oraz eksperymentalne
InzA_U07potrafi ocenić przydatność rutynowych metod i narzędzi służących do rozwiązania prostego zadania inżynierskiego o charakterze praktycznym, charakterystycznego dla studiowanego kierunku studiów oraz wybrać i zastosować właściwą metodę i narzędzia
Cel przedmiotuC-1Ukształtowanie wiedzy i umięjtności niezbędnych do opracowania aplikacji równolegych dla komputerów wielerdzeniowych
Treści programoweT-L-12Badanie przyspieszenia i skalowalności aplikacji równoległych dla kart graficznych.
T-W-1architektura komputerów wielordzeniowych oraz jej związek z wydajnością aplikacji równoległych
T-W-2podstawowe mierniki jakości aplikacji równoległych (lokalność, granulacja, determinizm, przyspieszenie i efektywność), prawa Amdahl’a i Gustaffson’a
T-L-5Napisanie aplikacji równoległej w OpenMP dla wybranego algorytmu z zakresu metod numerycznych, grafiki lub kryptografii.
T-L-3Zró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.
Metody nauczaniaM-2Ćwiczenia laboratoryjne
Sposób ocenyS-2Ocena formująca: Ocena stopnia wykonania zadań praktycznych pod koniec każdych laboratoriów
Kryteria ocenyOcenaKryterium oceny
2,0nie potrafi określić jakości kodu równoległego
3,0potrafi obliczyć przyspieszenie i efektywność z uzyskanyc wyników czasowych
3,5ma wiedzę na 3.0 oraz potrafi ocenić skalowalność dla wielu procesorów
4,0ma wiedzę na 3.5 i potrafi określić lokalność napisanego programu
4,5ma wiedzę na 4.0 i umie określić wpływ harmonogramowania instrukcji na wyniki czasowe
5,0ma wiedzę na 4.5 i umiejętnie przedstawia wyniki badań oraz wnioski za pomocą tabel i wykresów
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaZIP_1A_O1/4_U02ma umiejętność poszukiwania źródeł informacji i wdrażania zdobytej wiedzy w praktyce
Odniesienie do efektów kształcenia dla kierunku studiówZIP_1A_U23potrafi pozyskiwać informacje z literatury, baz danych oraz innych źródeł, integrować je, dokonywać ich interpretacji oraz wyciągać wnioski i formułować opinie
ZIP_1A_U05ma umiejętności w zakresie realizacji i wdrażania prac badawczo-rozwojowych w zakresie innowacji technologicznych
Odniesienie do efektów zdefiniowanych dla obszaru kształceniaT1A_U01potrafi pozyskiwać informacje z literatury, baz danych oraz innych właściwie dobranych źródeł, także w języku angielskim lub innym języku obcym uznawanym za język komunikacji międzynarodowej w zakresie studiowanego kierunku studiów; potrafi integrować uzyskane informacje, dokonywać ich interpretacji, a także wyciągać wnioski oraz formułować i uzasadniać opinie
T1A_U09potrafi wykorzystać do formułowania i rozwiązywania zadań inżynierskich metody analityczne, symulacyjne oraz eksperymentalne
Odniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżynieraInzA_U02potrafi wykorzystać do formułowania i rozwiązywania zadań inżynierskich metody analityczne, symulacyjne oraz eksperymentalne
Cel przedmiotuC-1Ukształtowanie wiedzy i umięjtności niezbędnych do opracowania aplikacji równolegych dla komputerów wielerdzeniowych
Treści programoweT-W-11Modele wydajnościowe do aplikacji rónoległych
T-W-13standardy CUDA i OpenCL; podsumowanie
T-L-1Kompilacja programu w standardzie OpenMP /C++. Napisanie, kompilacja i sprawdzanie aplikacji z wykorzystaniem programu "parallel".
Metody nauczaniaM-2Ćwiczenia laboratoryjne
Sposób ocenyS-2Ocena formująca: Ocena stopnia wykonania zadań praktycznych pod koniec każdych laboratoriów
Kryteria ocenyOcenaKryterium oceny
2,0nie potrafi odnaleźć specyfikacji technicznych i przedstawić potrzebnych informacji z dokumentacji
3,0potrafi odnaleźć specyfikacji technicznych i przedstawić potrzebnych informacji z dokumentacji
3,5potrafi odnaleźć specyfikacji technicznych i przedstawić potrzebnych informacji z dokumentacji oraz umie czytać opisy funkcji programistycznych
4,0ma wiedzę na 3.5 oraz sprawnie porusza się po podręcznikach programistycznych
4,5ma wiedzę na 4.0 oraz sprawnie porusza się po samouczkach (tutorials)
5,0ma wiedzę na 4.5 oraz umie korzystać z narzędzi wersjonujących
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaZIP_1A_O1/4_U03ma umiejętność tworzenia kodu równoległego inwidualnie lub w zespole
Odniesienie do efektów kształcenia dla kierunku studiówZIP_1A_U12ma umiejętności w zakresie pracy indywidualnej i w zespole
Odniesienie do efektów zdefiniowanych dla obszaru kształceniaT1A_U02potrafi porozumiewać się przy użyciu różnych technik w środowisku zawodowym oraz w innych środowiskach
Cel przedmiotuC-1Ukształtowanie wiedzy i umięjtności niezbędnych do opracowania aplikacji równolegych dla komputerów wielerdzeniowych
Treści programoweT-L-7Napisanie aplikacji z wykorzystaniem Intel TBB do przydziału zadań dla wątków, synchronizacji wątków, funkcji bibliotecznych, zmiennych środowiskowych.
T-W-8Biblioteki i narzędzia do tworzenia aplikacji równoległych komputerów wielordzeniowych: OpenMP Java, POSIX, biblioteki Microsoft, biblioteki Java, Intel TBB 2
T-L-5Napisanie aplikacji równoległej w OpenMP dla wybranego algorytmu z zakresu metod numerycznych, grafiki lub kryptografii.
Metody nauczaniaM-2Ćwiczenia laboratoryjne
Sposób ocenyS-2Ocena formująca: Ocena stopnia wykonania zadań praktycznych pod koniec każdych laboratoriów
Kryteria ocenyOcenaKryterium oceny
2,0nie zna podstaw openMP i intel TBB
3,0zna podstawowe pragmy openmp i Intel TBB
3,5zna podstawowe pragmy openmp i Intel TBB oraz potrafi napisać program równoległy z grupą
4,0zna podstawowe pragmy openmp i Intel TBB oraz potrafi z grupą napisać program równoległy oraz sporządzić sprawozdanie z badań
4,5zna podstawowe pragmy openmp i Intel TBB oraz potrafi napisać program równoległy z grupą i samodzielnie
5,0zna podstawowe pragmy openmp i Intel TBB oraz potrafi z grupą i samodzielnie napisać program równoległy oraz sporządzić sprawozdanie z badań
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaZIP_1A_O1/4_U04ma umiejętność wyszukania błędów oraz testowania jakości w kodzie równoległym
Odniesienie do efektów kształcenia dla kierunku studiówZIP_1A_U19potrafi zidentyfikować i rozwiązać podstawowy problem techniczny, technologiczny lub organizacyjny związany z procesem produkcji
Odniesienie do efektów zdefiniowanych dla obszaru kształceniaT1A_U14potrafi dokonać identyfikacji i sformułować specyfikację prostych zadań inżynierskich o charakterze praktycznym, charakterystycznych dla studiowanego kierunku studiów
Odniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżynieraInzA_U06potrafi dokonać identyfikacji i sformułować specyfikację prostych zadań inżynierskich o charakterze praktycznym, charakterystycznych dla studiowanego kierunku studiów
Cel przedmiotuC-1Ukształtowanie wiedzy i umięjtności niezbędnych do opracowania aplikacji równolegych dla komputerów wielerdzeniowych
Treści programoweT-W-4pojęcie wątku, podstawowe konstrukcje aplikacji równoległych w OpenMP: region równoległy, powołaniei zakończenia wątków, model obliczeń
T-W-8Biblioteki i narzędzia do tworzenia aplikacji równoległych komputerów wielordzeniowych: OpenMP Java, POSIX, biblioteki Microsoft, biblioteki Java, Intel TBB 2
T-W-5Zrównoleglenie pętli w OpenMP, szeregowanie iteracji pętli do wątków
Metody nauczaniaM-2Ćwiczenia laboratoryjne
Sposób ocenyS-2Ocena formująca: Ocena stopnia wykonania zadań praktycznych pod koniec każdych laboratoriów
Kryteria ocenyOcenaKryterium oceny
2,0nie potrafi odnaleźć usterek w kodzie równoleglym
3,0potrafi odnaleźć usterek w kodzie równoleglym za pomocą jego testowania i weryfikacji
3,5ma wiedzę na 3.0 oraz umiejętnie korzysta z podstawowych technik testowania
4,0ma wiedzę na 3.0 oraz umiejętnie korzysta z zaawansowanych technik testowania
4,5ma wiedzę na 4.0 i potrafi debugować kod sekwencyjny
5,0ma wiedzę na 4.5 i potrafi debugować kod równoległy i sekwkenycjny
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaZIP_1A_O1/4_K01ma świadomość rozwoju programowania i architektur komputerowych
Odniesienie do efektów kształcenia dla kierunku studiówZIP_1A_K01ma świadomość potrzeby dokształcania ze szczególnym uwzględnieniem samokształcenia się
ZIP_1A_K07potrafi myśleć i działać w sposób kreatywny i przedsiębiorczy, jest zdolny podjąć obowiązki dalszego rozwoju nauki i gospodarki
Odniesienie do efektów zdefiniowanych dla obszaru kształceniaT1A_K01rozumie potrzebę uczenia się przez całe życie; potrafi inspirować i organizować proces uczenia się innych osób
T1A_K06potrafi myśleć i działać w sposób przedsiębiorczy
Odniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżynieraInzA_K02potrafi myśleć i działać w sposób przedsiębiorczy
Cel przedmiotuC-1Ukształtowanie wiedzy i umięjtności niezbędnych do opracowania aplikacji równolegych dla komputerów wielerdzeniowych
Treści programoweT-W-9podstawowe czynniki mające wpływ na wydajność aplikacji, sposoby pozwalające na tworzenie wydajnych aplikacji
T-W-1architektura komputerów wielordzeniowych oraz jej związek z wydajnością aplikacji równoległych
Metody nauczaniaM-2Ćwiczenia laboratoryjne
Sposób ocenyS-2Ocena formująca: Ocena stopnia wykonania zadań praktycznych pod koniec każdych laboratoriów
Kryteria ocenyOcenaKryterium oceny
2,0nie zna trendów rozwoju mikroporcesorów
3,0zna trendy rozwoju mikroporcesorów w aspekcie maszyn równoległych
3,5ma wiedzę na 3.0 oraz zna pojęcia rdzeni i wątków
4,0ma wiedzę na 3.5 oraz potrafi opisać rozwój kart graficznych
4,5ma wiedzę na 3.5 oraz potrafi opisać rozwój kart graficznych i urządzań wbudowanych
5,0ma wiedzę na 3.5 oraz potrafi opisać rozwój kart graficznych i urządzań wbudowanych oraz MID
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaZIP_1A_O1/4_K03posiada świadomość trudu projektowania rozwiązań programowych z uwzględnieniem jakości kodu
Odniesienie do efektów kształcenia dla kierunku studiówZIP_1A_K03ma kompetencje w zakresie świadomej odpowiedzialności za wspólnie realizowane zadania
Odniesienie do efektów zdefiniowanych dla obszaru kształceniaT1A_K03potrafi współdziałać i pracować w grupie, przyjmując w niej różne role
T1A_K04potrafi odpowiednio określić priorytety służące realizacji określonego przez siebie lub innych zadania
T1A_K05prawidłowo identyfikuje i rozstrzyga dylematy związane z wykonywaniem zawodu
Cel przedmiotuC-1Ukształtowanie wiedzy i umięjtności niezbędnych do opracowania aplikacji równolegych dla komputerów wielerdzeniowych
Treści programoweT-L-7Napisanie aplikacji z wykorzystaniem Intel TBB do przydziału zadań dla wątków, synchronizacji wątków, funkcji bibliotecznych, zmiennych środowiskowych.
T-W-7Mechanizmy synchronizacji w OpenMP
T-L-8Porównanie aplikacji równoległych OpenMP i IntelTBB. Badanie przyspieszenia i skalowalności rozwiązań.
Metody nauczaniaM-2Ćwiczenia laboratoryjne
Sposób ocenyS-2Ocena formująca: Ocena stopnia wykonania zadań praktycznych pod koniec każdych laboratoriów
Kryteria ocenyOcenaKryterium oceny
2,0nie zna różńic między programowaniem sekwenycjnym i rownoległym
3,0zna różńice między programowaniem sekwenycjnym i rownoległym
3,5zna różńic między programowaniem sekwenycjnym i rownoległym z uwzględneniem synchronizacji
4,0zna różńic między programowaniem sekwenycjnym i rownoległym z uwzględneniem synchronizacji i komunikacji
4,5zna różńic między programowaniem sekwenycjnym i rownoległym z uwzględneniem synchronizacji i komunikacji oraz skalowalności i lokalności
5,0ma wiedzę 4.5 oraz umiejętnie z niej korzysta w praktyce (tworzeniu oprogramowania równoległego)