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
laboratoriaL2 30 2,00,50zaliczenie
wykładyW2 30 2,00,50egzamin

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 kodu4
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łym4
T-L-3Tworzenie aplikacji drobno-ziarnistych z zastosowaniem redukcji obliczeń oraz różnych sposobów szeregowania pętli4
T-L-4Tworzenie grubo-ziarnistych aplikacji z zastosowaniem dyrektywy sections2
T-L-5Tworzenie aplikacji równoległych wymagających zastosowania synchronizacji wątków2
T-L-6Obliczenie górnej granicy przyspieszenia aplikacji równoległych w oparciu o prawo Amdahla2
T-L-7Wytwarzanie aplikacji z zastosowaniem klauzuli "reduction" zdefiniowanej przez użytkownika2
T-L-8Tworzenie aplikacji równoległych z zastosowaniem dyrektywy task2
T-L-9Synchronizacja zadań utworzonych za pomocą dyrektywy task2
T-L-10Zrównoleglenie pętli doacross2
T-L-11Programowanie akceleratorów za pomocą możliwości OpenMP 4.0 oraz OpenMP 4.54
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ń staycznych oraz 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 4.x i 5.x2
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-1, T-W-3, T-W-2, T-W-4, T-W-5, T-W-6, T-W-8, T-W-9, T-W-10, T-W-11, T-W-12, 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-1, T-L-2, T-L-3, T-L-4, T-L-5, T-L-6, T-L-7, T-L-8, T-L-9, T-L-10, T-L-11M-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-1, T-W-3, T-W-2, T-W-4, T-W-5, T-W-6, T-W-8, T-W-9, T-W-10, T-W-11, T-W-12, T-W-7, T-L-1, T-L-2, T-L-3, T-L-4, T-L-5, T-L-6, T-L-7, T-L-8, T-L-9, T-L-10, T-L-11M-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 kodu4
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łym4
T-L-3Tworzenie aplikacji drobno-ziarnistych z zastosowaniem redukcji obliczeń oraz różnych sposobów szeregowania pętli4
T-L-4Tworzenie grubo-ziarnistych aplikacji z zastosowaniem dyrektywy sections2
T-L-5Tworzenie aplikacji równoległych wymagających zastosowania synchronizacji wątków2
T-L-6Obliczenie górnej granicy przyspieszenia aplikacji równoległych w oparciu o prawo Amdahla2
T-L-7Wytwarzanie aplikacji z zastosowaniem klauzuli "reduction" zdefiniowanej przez użytkownika2
T-L-8Tworzenie aplikacji równoległych z zastosowaniem dyrektywy task2
T-L-9Synchronizacja zadań utworzonych za pomocą dyrektywy task2
T-L-10Zrównoleglenie pętli doacross2
T-L-11Programowanie akceleratorów za pomocą możliwości OpenMP 4.0 oraz OpenMP 4.54
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ń staycznych oraz 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 4.x i 5.x2
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-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-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-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-4Wydajność aplikacji równoległych , zasady i sposoby zwiększenia wydajności
T-W-5Lokalność aplikacji, sposoby zwiększania lokalności za pomocą API OpenMP
T-W-6Wytwarzanie aplikacji drobno-ziarnistych za pomocą API OpenMP, wersje 2.5, 3.1,4.6, 5.0
T-W-8Programowanie algorytmów nieregularnych i dynamicznych za pomocą API OpenMP, wersja 3.1
T-W-9Synchronizacja zadań staycznych oraz dynamicznych za pomocą API OpenMP, wersja 4.5
T-W-10Programowanie akceleratorów za pomocą API OpenMP, programowanie komputerów masywnie równoległych za pomocą wersji 4.5
T-W-11Programowanie komputerów SIMD za pomocą OpenMP, wersja 4.5
T-W-12Nowe możliwości programowania równoległego dostarczane przez API OpenMP 4.x i 5.x
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-1Zależności obecne w programie oraz dobór odpowiednich transformacji kodu
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-3Tworzenie aplikacji drobno-ziarnistych z zastosowaniem redukcji obliczeń oraz różnych sposobów szeregowania pętli
T-L-4Tworzenie grubo-ziarnistych aplikacji z zastosowaniem dyrektywy sections
T-L-5Tworzenie aplikacji równoległych wymagających zastosowania synchronizacji wątków
T-L-6Obliczenie górnej granicy przyspieszenia aplikacji równoległych w oparciu o prawo Amdahla
T-L-7Wytwarzanie aplikacji z zastosowaniem klauzuli "reduction" zdefiniowanej przez użytkownika
T-L-8Tworzenie aplikacji równoległych z zastosowaniem dyrektywy task
T-L-9Synchronizacja zadań utworzonych za pomocą dyrektywy task
T-L-10Zrównoleglenie pętli doacross
T-L-11Programowanie akceleratorów za pomocą możliwości OpenMP 4.0 oraz OpenMP 4.5
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-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-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-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-4Wydajność aplikacji równoległych , zasady i sposoby zwiększenia wydajności
T-W-5Lokalność aplikacji, sposoby zwiększania lokalności za pomocą API OpenMP
T-W-6Wytwarzanie aplikacji drobno-ziarnistych za pomocą API OpenMP, wersje 2.5, 3.1,4.6, 5.0
T-W-8Programowanie algorytmów nieregularnych i dynamicznych za pomocą API OpenMP, wersja 3.1
T-W-9Synchronizacja zadań staycznych oraz dynamicznych za pomocą API OpenMP, wersja 4.5
T-W-10Programowanie akceleratorów za pomocą API OpenMP, programowanie komputerów masywnie równoległych za pomocą wersji 4.5
T-W-11Programowanie komputerów SIMD za pomocą OpenMP, wersja 4.5
T-W-12Nowe możliwości programowania równoległego dostarczane przez API OpenMP 4.x i 5.x
T-W-7Wytwarzanie aplikacji grubo-ziarnistych za pomocą API OpenMP, wersje 2.5, 3.1,4.6, 5.0, 2
T-L-1Zależności obecne w programie oraz dobór odpowiednich transformacji kodu
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-3Tworzenie aplikacji drobno-ziarnistych z zastosowaniem redukcji obliczeń oraz różnych sposobów szeregowania pętli
T-L-4Tworzenie grubo-ziarnistych aplikacji z zastosowaniem dyrektywy sections
T-L-5Tworzenie aplikacji równoległych wymagających zastosowania synchronizacji wątków
T-L-6Obliczenie górnej granicy przyspieszenia aplikacji równoległych w oparciu o prawo Amdahla
T-L-7Wytwarzanie aplikacji z zastosowaniem klauzuli "reduction" zdefiniowanej przez użytkownika
T-L-8Tworzenie aplikacji równoległych z zastosowaniem dyrektywy task
T-L-9Synchronizacja zadań utworzonych za pomocą dyrektywy task
T-L-10Zrównoleglenie pętli doacross
T-L-11Programowanie akceleratorów za pomocą możliwości OpenMP 4.0 oraz OpenMP 4.5
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