Zachodniopomorski Uniwersytet Technologiczny w Szczecinie

Wydział Informatyki - Informatyka (S2)

Sylabus przedmiotu Równoległe programowanie inkrementacyjne:

Informacje podstawowe

Kierunek studiów Informatyka
Forma studiów studia stacjonarne Poziom drugiego stopnia
Tytuł zawodowy absolwenta magister inżynier
Obszary studiów charakterystyki PRK, kompetencje inżynierskie PRK
Profil ogólnoakademicki
Moduł
Przedmiot Równoległe programowanie inkrementacyjne
Specjalność Projektowanie oprogramowania
Jednostka prowadząca Katedra Inżynierii Oprogramowania
Nauczyciel odpowiedzialny Włodzimierz Bielecki <Wlodzimierz.Bielecki@zut.edu.pl>
Inni nauczyciele Marek Pałkowski <Marek.Palkowski@zut.edu.pl>, Maciej Poliwoda <Maciej.Poliwoda@zut.edu.pl>
ECTS (planowane) 4,0 ECTS (formy) 4,0
Forma zaliczenia egzamin Język polski
Blok obieralny Grupa obieralna

Formy dydaktyczne

Forma dydaktycznaKODSemestrGodzinyECTSWagaZaliczenie
wykładyW2 30 2,00,50egzamin
laboratoriaL2 30 2,00,50zaliczenie

Wymagania wstępne

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

Cele przedmiotu

KODCel modułu/przedmiotu
C-1Przyswojenie wiedzy i umiejętności niezbędnych do projektowania aplikacji równolegych oraz oceny ich jakości

Treści programowe z podziałem na formy zajęć

KODTreść programowaGodziny
laboratoria
T-L-1Zależności obecne w programie oraz dobór odpowiednich transformacji kodu2
T-L-2Tworzenie regionu równoległego, określenie liczby wątków w regionie równoległym, określenie zakresu zmiennych w regionie równoległym, zastosowanie redukcji obliczeń w regionie równoległym2
T-L-3Tworzenie aplikacji drobno-ziarnistych, zastosowanie redukcji obliczeń2
T-L-4Tworzenie aplikacji drobno-ziarnistych, zastosowanie różnych sposobów szeregowania iteracji pętli2
T-L-5Tworzenie grubo-ziarnistych aplikacji, zastosowanie redukcji obliczeń2
T-L-6Tworzenie aplikacji równoległych wymagających zastosowania synchronizacji wątków2
T-L-7Obliczenie przyspieszenia i efektywności aplikacji równoległych2
T-L-8Obliczenie górnej granicy przyspieszenia aplikacji równoległych w oparciu o prawo Amdahla2
T-L-9Zastosowanie bazowych technik optymalizacji wydajności aplikacji równoległych2
T-L-10Zastosowanie bazowych technik zwiększenia lokalności aplikacji równoległych2
T-L-11Tworzenie aplikacji równoległych z zastosowaniem dyrektywy task2
T-L-12Synchronizacja zadań utworzonych za pomocą dyrektywy task2
T-L-13Programowanie akceleratorów za pomocą możliwości OpenMP 4.0 oraz OpenMP 4.54
T-L-14Programowanie komputerów SIMD za pomocą możliwości OpenMP 4.0 oraz OpenMP 4.52
30
wykłady
T-W-1Organizacja komputerów o dużej mocy obliczeniowej, podstawowe pojęcia związane z programowaniem równoległym ( zależności, procesy, watki, wielowątkowość, model fork-join).2
T-W-2Podstawowe pojęcia związane z przetwarzaniem rónoległym ( zależności, podstawowe transformacje: FAN, PAR, PIPE), programowanie inkrementacyjne, model obliczeń, region równoległy, tworzenie wątków, automatyczny podział pracy pomiędzy wątki, szeregowanie iteracji pętli, synchronizacja obliczeń, biblioteka czasu rzeczywistego, zmienne środowiskowe)4
T-W-3Programowanie inkrementacyjne, jego zalety, zastosowanie API OpenMP do implementacji programowania inkrementacyjnego, historia, obecne wersje i specyfikacje, kompilatory wspierające OpenMP, model obliczeń, region równoległy, tworzenie wątków, automatyczny podział pracy pomiędzy wątki, szeregowanie iteracji pętli, synchronizacja obliczeń, biblioteka czasu rzeczywistego, zmienne środowiskowe)2
T-W-4Wydajność aplikacji równoległych , zasady i sposoby zwiększenia wydajności2
T-W-5Lokalność aplikacji, sposoby zwiększania lokalności za pomocą API OpenMP2
T-W-6Wytwarzanie aplikacji drobno-ziarnistych za pomocą API OpenMP, wersje 2.5, 3.1,4.6, 5.04
T-W-7Wytwarzanie aplikacji grubo-ziarnistych za pomocą API OpenMP, wersje 2.5, 3.1,4.6, 5.0, 22
T-W-8Programowanie algorytmów nieregularnych i dynamicznych za pomocą API OpenMP, wersja 3.14
T-W-9Synchronizacja zadań dynamicznych za pomocą API OpenMP, wersja 4.52
T-W-10Programowanie akceleratorów za pomocą API OpenMP, programowanie komputerów masywnie równoległych za pomocą wersji 4.52
T-W-11Programowanie komputerów SIMD za pomocą OpenMP, wersja 4.52
T-W-12Nowe możliwości programowania równoległego dostarczane przez API OpenMP 5.02
30

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

KODForma aktywnościGodziny
laboratoria
A-L-1uczestnictwo w zajęciach30
A-L-2opracowanie sprawozdań18
A-L-3udzał w konsultacjach2
50
wykłady
A-W-1uczestnictwo w zajęciach30
A-W-2Przygotowanie do egzaminu18
A-W-3Udział w konsultacjach2
50

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: Ocena stopnia wykonania zadań praktycznych pod koniec każdych laboratoriów
S-2Ocena formująca: Zaliczenie końcowe poprzez sprawdzenie efektów kształcenia: przedstawienie pytań i ocena odpowiedzi

Zamierzone efekty uczenia się - wiedza

Zamierzone efekty uczenia sięOdniesienie do efektów kształcenia dla kierunku studiówOdniesienie do efektów zdefiniowanych dla obszaru kształceniaOdniesienie do efektów uczenia się prowadzących do uzyskania tytułu zawodowego inżynieraCel przedmiotuTreści programoweMetody nauczaniaSposób oceny
I_2A_D02.02_W01
ma wiedzę w zakresie inkremntacyjnego tworzenia oprogramowania równoległyego
I_2A_W02C-1T-W-6, T-W-5, T-W-3, T-W-8, T-W-11, T-W-9, T-W-4, T-W-10, T-W-2, T-W-12, T-W-1, T-W-7M-1S-2

Zamierzone efekty uczenia się - umiejętności

Zamierzone efekty uczenia sięOdniesienie do efektów kształcenia dla kierunku studiówOdniesienie do efektów zdefiniowanych dla obszaru kształceniaOdniesienie do efektów uczenia się prowadzących do uzyskania tytułu zawodowego inżynieraCel przedmiotuTreści programoweMetody nauczaniaSposób oceny
I_2A_D02.02_U01
Potrafi wytwarzać oprogramowanie rónoległe z zastosowaniem API OpenMP i
I_2A_U01C-1T-L-14, T-L-1, T-L-11, T-L-8, T-L-4, T-L-7, T-L-9, T-L-13, T-L-2, T-L-6, T-L-5, T-L-3, T-L-12, T-L-10M-2S-1

Zamierzone efekty uczenia się - inne kompetencje społeczne i personalne

Zamierzone efekty uczenia sięOdniesienie do efektów kształcenia dla kierunku studiówOdniesienie do efektów zdefiniowanych dla obszaru kształceniaOdniesienie do efektów uczenia się prowadzących do uzyskania tytułu zawodowego inżynieraCel przedmiotuTreści programoweMetody nauczaniaSposób oceny
I_2A_D02.02_K01
Potrafi wytwarzać oprogramowanie w zespole
I_2A_K04C-1T-W-5, T-L-9, T-W-12, T-W-11, T-L-5, T-W-7, T-L-8, T-L-7, T-L-3, T-L-4, T-W-6, T-W-2, T-L-12, T-W-8, T-W-1, T-W-10, T-L-11, T-L-14, T-L-2, T-W-3, T-W-4, T-W-9, T-L-6, T-L-13, T-L-1, T-L-10M-2S-1

Kryterium oceny - wiedza

Efekt uczenia sięOcenaKryterium oceny
I_2A_D02.02_W01
ma wiedzę w zakresie inkremntacyjnego tworzenia oprogramowania równoległyego
2,0
3,0ma podstawowe wiedzę w zakresie inkremntacyjnego tworzenia oprogramowania równoległyego
3,5
4,0
4,5
5,0

Kryterium oceny - umiejętności

Efekt uczenia sięOcenaKryterium oceny
I_2A_D02.02_U01
Potrafi wytwarzać oprogramowanie rónoległe z zastosowaniem API OpenMP i
2,0
3,0Potrafi wytwarzać oprogramowanie równoległe za pomocą API OpenMP implementujące proste algorytmy
3,5
4,0
4,5
5,0

Kryterium oceny - inne kompetencje społeczne i personalne

Efekt uczenia sięOcenaKryterium oceny
I_2A_D02.02_K01
Potrafi wytwarzać oprogramowanie w zespole
2,0
3,0udział w wytwarzaniu oprogramowania w zespole
3,5
4,0
4,5
5,0

Literatura podstawowa

  1. W. Bielecki, Przetwarzanie równoległe i rozproszone, Politechnika Szczecińska S, Szczecin, 2007
  2. Chapman, Jost, and Van Der Pas, Using OpenMP, MIT Press C, ambridge, 2007
  3. Ruud van der Pas, Christian Terboven, Eric Stotzer, Using OpenMP—The Next Step: Affinity, Accelerators, Tasking, and SIMD, MIT Press, 2017

Treści programowe - laboratoria

KODTreść programowaGodziny
T-L-1Zależności obecne w programie oraz dobór odpowiednich transformacji kodu2
T-L-2Tworzenie regionu równoległego, określenie liczby wątków w regionie równoległym, określenie zakresu zmiennych w regionie równoległym, zastosowanie redukcji obliczeń w regionie równoległym2
T-L-3Tworzenie aplikacji drobno-ziarnistych, zastosowanie redukcji obliczeń2
T-L-4Tworzenie aplikacji drobno-ziarnistych, zastosowanie różnych sposobów szeregowania iteracji pętli2
T-L-5Tworzenie grubo-ziarnistych aplikacji, zastosowanie redukcji obliczeń2
T-L-6Tworzenie aplikacji równoległych wymagających zastosowania synchronizacji wątków2
T-L-7Obliczenie przyspieszenia i efektywności aplikacji równoległych2
T-L-8Obliczenie górnej granicy przyspieszenia aplikacji równoległych w oparciu o prawo Amdahla2
T-L-9Zastosowanie bazowych technik optymalizacji wydajności aplikacji równoległych2
T-L-10Zastosowanie bazowych technik zwiększenia lokalności aplikacji równoległych2
T-L-11Tworzenie aplikacji równoległych z zastosowaniem dyrektywy task2
T-L-12Synchronizacja zadań utworzonych za pomocą dyrektywy task2
T-L-13Programowanie akceleratorów za pomocą możliwości OpenMP 4.0 oraz OpenMP 4.54
T-L-14Programowanie komputerów SIMD za pomocą możliwości OpenMP 4.0 oraz OpenMP 4.52
30

Treści programowe - wykłady

KODTreść programowaGodziny
T-W-1Organizacja komputerów o dużej mocy obliczeniowej, podstawowe pojęcia związane z programowaniem równoległym ( zależności, procesy, watki, wielowątkowość, model fork-join).2
T-W-2Podstawowe pojęcia związane z przetwarzaniem rónoległym ( zależności, podstawowe transformacje: FAN, PAR, PIPE), programowanie inkrementacyjne, model obliczeń, region równoległy, tworzenie wątków, automatyczny podział pracy pomiędzy wątki, szeregowanie iteracji pętli, synchronizacja obliczeń, biblioteka czasu rzeczywistego, zmienne środowiskowe)4
T-W-3Programowanie inkrementacyjne, jego zalety, zastosowanie API OpenMP do implementacji programowania inkrementacyjnego, historia, obecne wersje i specyfikacje, kompilatory wspierające OpenMP, model obliczeń, region równoległy, tworzenie wątków, automatyczny podział pracy pomiędzy wątki, szeregowanie iteracji pętli, synchronizacja obliczeń, biblioteka czasu rzeczywistego, zmienne środowiskowe)2
T-W-4Wydajność aplikacji równoległych , zasady i sposoby zwiększenia wydajności2
T-W-5Lokalność aplikacji, sposoby zwiększania lokalności za pomocą API OpenMP2
T-W-6Wytwarzanie aplikacji drobno-ziarnistych za pomocą API OpenMP, wersje 2.5, 3.1,4.6, 5.04
T-W-7Wytwarzanie aplikacji grubo-ziarnistych za pomocą API OpenMP, wersje 2.5, 3.1,4.6, 5.0, 22
T-W-8Programowanie algorytmów nieregularnych i dynamicznych za pomocą API OpenMP, wersja 3.14
T-W-9Synchronizacja zadań dynamicznych za pomocą API OpenMP, wersja 4.52
T-W-10Programowanie akceleratorów za pomocą API OpenMP, programowanie komputerów masywnie równoległych za pomocą wersji 4.52
T-W-11Programowanie komputerów SIMD za pomocą OpenMP, wersja 4.52
T-W-12Nowe możliwości programowania równoległego dostarczane przez API OpenMP 5.02
30

Formy aktywności - laboratoria

KODForma aktywnościGodziny
A-L-1uczestnictwo w zajęciach30
A-L-2opracowanie sprawozdań18
A-L-3udzał w konsultacjach2
50
(*) 1 punkt ECTS, odpowiada około 30 godzinom aktywności studenta

Formy aktywności - wykłady

KODForma aktywnościGodziny
A-W-1uczestnictwo w zajęciach30
A-W-2Przygotowanie do egzaminu18
A-W-3Udział w konsultacjach2
50
(*) 1 punkt ECTS, odpowiada około 30 godzinom aktywności studenta
PoleKODZnaczenie kodu
Zamierzone efekty uczenia sięI_2A_D02.02_W01ma wiedzę w zakresie inkremntacyjnego tworzenia oprogramowania równoległyego
Odniesienie do efektów kształcenia dla kierunku studiówI_2A_W02Ma wiedzę z zakresu zaawansowanych technik programowania systemów informatycznych w wybranym obszarze zastosowań
Cel przedmiotuC-1Przyswojenie wiedzy i umiejętności niezbędnych do projektowania aplikacji równolegych oraz oceny ich jakości
Treści programoweT-W-6Wytwarzanie aplikacji drobno-ziarnistych za pomocą API OpenMP, wersje 2.5, 3.1,4.6, 5.0
T-W-5Lokalność aplikacji, sposoby zwiększania lokalności za pomocą API OpenMP
T-W-3Programowanie inkrementacyjne, jego zalety, zastosowanie API OpenMP do implementacji programowania inkrementacyjnego, historia, obecne wersje i specyfikacje, kompilatory wspierające OpenMP, model obliczeń, region równoległy, tworzenie wątków, automatyczny podział pracy pomiędzy wątki, szeregowanie iteracji pętli, synchronizacja obliczeń, biblioteka czasu rzeczywistego, zmienne środowiskowe)
T-W-8Programowanie algorytmów nieregularnych i dynamicznych za pomocą API OpenMP, wersja 3.1
T-W-11Programowanie komputerów SIMD za pomocą OpenMP, wersja 4.5
T-W-9Synchronizacja zadań dynamicznych za pomocą API OpenMP, wersja 4.5
T-W-4Wydajność aplikacji równoległych , zasady i sposoby zwiększenia wydajności
T-W-10Programowanie akceleratorów za pomocą API OpenMP, programowanie komputerów masywnie równoległych za pomocą wersji 4.5
T-W-2Podstawowe pojęcia związane z przetwarzaniem rónoległym ( zależności, podstawowe transformacje: FAN, PAR, PIPE), programowanie inkrementacyjne, model obliczeń, region równoległy, tworzenie wątków, automatyczny podział pracy pomiędzy wątki, szeregowanie iteracji pętli, synchronizacja obliczeń, biblioteka czasu rzeczywistego, zmienne środowiskowe)
T-W-12Nowe możliwości programowania równoległego dostarczane przez API OpenMP 5.0
T-W-1Organizacja komputerów o dużej mocy obliczeniowej, podstawowe pojęcia związane z programowaniem równoległym ( zależności, procesy, watki, wielowątkowość, model fork-join).
T-W-7Wytwarzanie aplikacji grubo-ziarnistych za pomocą API OpenMP, wersje 2.5, 3.1,4.6, 5.0, 2
Metody nauczaniaM-1Wykad informacyjny/konwersatoryjny
Sposób ocenyS-2Ocena formująca: Zaliczenie końcowe poprzez sprawdzenie efektów kształcenia: przedstawienie pytań i ocena odpowiedzi
Kryteria ocenyOcenaKryterium oceny
2,0
3,0ma podstawowe wiedzę w zakresie inkremntacyjnego tworzenia oprogramowania równoległyego
3,5
4,0
4,5
5,0
PoleKODZnaczenie kodu
Zamierzone efekty uczenia sięI_2A_D02.02_U01Potrafi wytwarzać oprogramowanie rónoległe z zastosowaniem API OpenMP i
Odniesienie do efektów kształcenia dla kierunku studiówI_2A_U01Potrafi prawidłowo zaplanować, przeprowadzić eksperyment badawczy, dokonać analizy i prezentacji uzyskanych wyników
Cel przedmiotuC-1Przyswojenie wiedzy i umiejętności niezbędnych do projektowania aplikacji równolegych oraz oceny ich jakości
Treści programoweT-L-14Programowanie komputerów SIMD za pomocą możliwości OpenMP 4.0 oraz OpenMP 4.5
T-L-1Zależności obecne w programie oraz dobór odpowiednich transformacji kodu
T-L-11Tworzenie aplikacji równoległych z zastosowaniem dyrektywy task
T-L-8Obliczenie górnej granicy przyspieszenia aplikacji równoległych w oparciu o prawo Amdahla
T-L-4Tworzenie aplikacji drobno-ziarnistych, zastosowanie różnych sposobów szeregowania iteracji pętli
T-L-7Obliczenie przyspieszenia i efektywności aplikacji równoległych
T-L-9Zastosowanie bazowych technik optymalizacji wydajności aplikacji równoległych
T-L-13Programowanie akceleratorów za pomocą możliwości OpenMP 4.0 oraz OpenMP 4.5
T-L-2Tworzenie regionu równoległego, określenie liczby wątków w regionie równoległym, określenie zakresu zmiennych w regionie równoległym, zastosowanie redukcji obliczeń w regionie równoległym
T-L-6Tworzenie aplikacji równoległych wymagających zastosowania synchronizacji wątków
T-L-5Tworzenie grubo-ziarnistych aplikacji, zastosowanie redukcji obliczeń
T-L-3Tworzenie aplikacji drobno-ziarnistych, zastosowanie redukcji obliczeń
T-L-12Synchronizacja zadań utworzonych za pomocą dyrektywy task
T-L-10Zastosowanie bazowych technik zwiększenia lokalności aplikacji równoległych
Metody nauczaniaM-2Ćwiczenia laboratoryjne
Sposób ocenyS-1Ocena formująca: Ocena stopnia wykonania zadań praktycznych pod koniec każdych laboratoriów
Kryteria ocenyOcenaKryterium oceny
2,0
3,0Potrafi wytwarzać oprogramowanie równoległe za pomocą API OpenMP implementujące proste algorytmy
3,5
4,0
4,5
5,0
PoleKODZnaczenie kodu
Zamierzone efekty uczenia sięI_2A_D02.02_K01Potrafi wytwarzać oprogramowanie w zespole
Odniesienie do efektów kształcenia dla kierunku studiówI_2A_K04Potrafi myśleć i działać w sposób kreatywny i przedsiębiorczy
Cel przedmiotuC-1Przyswojenie wiedzy i umiejętności niezbędnych do projektowania aplikacji równolegych oraz oceny ich jakości
Treści programoweT-W-5Lokalność aplikacji, sposoby zwiększania lokalności za pomocą API OpenMP
T-L-9Zastosowanie bazowych technik optymalizacji wydajności aplikacji równoległych
T-W-12Nowe możliwości programowania równoległego dostarczane przez API OpenMP 5.0
T-W-11Programowanie komputerów SIMD za pomocą OpenMP, wersja 4.5
T-L-5Tworzenie grubo-ziarnistych aplikacji, zastosowanie redukcji obliczeń
T-W-7Wytwarzanie aplikacji grubo-ziarnistych za pomocą API OpenMP, wersje 2.5, 3.1,4.6, 5.0, 2
T-L-8Obliczenie górnej granicy przyspieszenia aplikacji równoległych w oparciu o prawo Amdahla
T-L-7Obliczenie przyspieszenia i efektywności aplikacji równoległych
T-L-3Tworzenie aplikacji drobno-ziarnistych, zastosowanie redukcji obliczeń
T-L-4Tworzenie aplikacji drobno-ziarnistych, zastosowanie różnych sposobów szeregowania iteracji pętli
T-W-6Wytwarzanie aplikacji drobno-ziarnistych za pomocą API OpenMP, wersje 2.5, 3.1,4.6, 5.0
T-W-2Podstawowe pojęcia związane z przetwarzaniem rónoległym ( zależności, podstawowe transformacje: FAN, PAR, PIPE), programowanie inkrementacyjne, model obliczeń, region równoległy, tworzenie wątków, automatyczny podział pracy pomiędzy wątki, szeregowanie iteracji pętli, synchronizacja obliczeń, biblioteka czasu rzeczywistego, zmienne środowiskowe)
T-L-12Synchronizacja zadań utworzonych za pomocą dyrektywy task
T-W-8Programowanie algorytmów nieregularnych i dynamicznych za pomocą API OpenMP, wersja 3.1
T-W-1Organizacja komputerów o dużej mocy obliczeniowej, podstawowe pojęcia związane z programowaniem równoległym ( zależności, procesy, watki, wielowątkowość, model fork-join).
T-W-10Programowanie akceleratorów za pomocą API OpenMP, programowanie komputerów masywnie równoległych za pomocą wersji 4.5
T-L-11Tworzenie aplikacji równoległych z zastosowaniem dyrektywy task
T-L-14Programowanie komputerów SIMD za pomocą możliwości OpenMP 4.0 oraz OpenMP 4.5
T-L-2Tworzenie regionu równoległego, określenie liczby wątków w regionie równoległym, określenie zakresu zmiennych w regionie równoległym, zastosowanie redukcji obliczeń w regionie równoległym
T-W-3Programowanie inkrementacyjne, jego zalety, zastosowanie API OpenMP do implementacji programowania inkrementacyjnego, historia, obecne wersje i specyfikacje, kompilatory wspierające OpenMP, model obliczeń, region równoległy, tworzenie wątków, automatyczny podział pracy pomiędzy wątki, szeregowanie iteracji pętli, synchronizacja obliczeń, biblioteka czasu rzeczywistego, zmienne środowiskowe)
T-W-4Wydajność aplikacji równoległych , zasady i sposoby zwiększenia wydajności
T-W-9Synchronizacja zadań dynamicznych za pomocą API OpenMP, wersja 4.5
T-L-6Tworzenie aplikacji równoległych wymagających zastosowania synchronizacji wątków
T-L-13Programowanie akceleratorów za pomocą możliwości OpenMP 4.0 oraz OpenMP 4.5
T-L-1Zależności obecne w programie oraz dobór odpowiednich transformacji kodu
T-L-10Zastosowanie bazowych technik zwiększenia lokalności aplikacji równoległych
Metody nauczaniaM-2Ćwiczenia laboratoryjne
Sposób ocenyS-1Ocena formująca: Ocena stopnia wykonania zadań praktycznych pod koniec każdych laboratoriów
Kryteria ocenyOcenaKryterium oceny
2,0
3,0udział w wytwarzaniu oprogramowania w zespole
3,5
4,0
4,5
5,0