Zachodniopomorski Uniwersytet Technologiczny w Szczecinie

Wydział Informatyki - Informatyka (S2)
specjalność: projektowanie i zarządzanie projektami informatycznymi

Sylabus przedmiotu Programowanie równoległe i rozproszone - Przedmiot obieralny II:

Informacje podstawowe

Kierunek studiów Informatyka
Forma studiów studia stacjonarne Poziom drugiego stopnia
Tytuł zawodowy absolwenta magister
Obszary studiów nauki techniczne
Profil ogólnoakademicki
Moduł
Przedmiot Programowanie równoległe i rozproszone - Przedmiot obieralny II
Specjalność projektowanie i zarządzanie projektami informatycznymi
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 zaliczenie Język polski
Blok obieralny 9 Grupa obieralna 1

Formy dydaktyczne

Forma dydaktycznaKODSemestrGodzinyECTSWagaZaliczenie
wykładyW3 30 2,50,50zaliczenie
laboratoriaL3 30 1,50,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-1Uksztatowanie wiedzy i umiejtnoci 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-1Wprowadzenie do napisania prostych programów w języku C/C++ z OpenMP Kompilacja, uruchomienie i testowanie aplikacji. Wyświetlenie specyfikacji procesorów z komendy poleceń w systemie Linux. Mierzenie czasu wykonywania kodu za pomocą funkcji omp_get_wtime(). Wyjaśnienie kwestii nie zrównoleglania operacji wejścia/wyjścia oraz pojęć wątek, proces, rywalizacja między wątkami oraz sekcja krytyczna.2
T-L-2Napisanie programu obliczającego równolegle mnożenie macierzy. Wykorzystanie dyrektywy #pragma omp paralel i for. Ustawienie żądanej liczby wątków: klauzula num_thrreads(), funkcje omp_get_num_threads(), omp_set_num_threads(). Porównanie wyników czasowych dla 1, 2, 4 oraz 8 wątków i dla różnych rozmiarów macierzy.2
T-L-3Modyfikacja programu mnożenia macierzy – zamiana czytania kolumnami na wiersze w jednej z macierzy wejściowej. Wyjaśnienie pojęcia lokalności, pamięci kieszeniowej i RAM. Wyjaśnienie pojęcie przyspieszenia, w tym liniowego i superliniowego oraz pojęcia lokalności. Porównanie wyników czasowych z wynikami uzyskanymi w laboratorium 2. Wykonanie sprawozdania na podstawie wyników z laboratorium 2 i 3, tabele z wynikami czasowymi i wykresy przyspieszeń, analiza porównawcza oraz wnioski. Ocena 1.2
T-L-4Skompilowanie programu wyliczającego zbiór Mandelbrota (fraktal). Wyjaśnienie zagadnienia zrównoleglenia tego kodu. Modyfikacja kodu: - przesunięcie operacji zapisu plikowego poza pętle - prywatyzacja zmiennych. Porównanie plików wyjściowych wersji sekwencyjnej i równoległej. Zmierzenie czasu kodu dla wielu wątków oraz policzenie przyspieszenia.2
T-L-5Wprowadzenie pojęcia harmogramowania iteracji. Zapoznanie się z klauzulą schedule i jej parametrami w pragmie omp for. Interpretacja wyników: student ma za zadanie zrozumieć dlaczego domyślny podział nie jest efektywny dla większej liczby wątków niż 2. Wyjaśnienie działania kodu (tło fraktala liczy się krótko). Zapoznanie się z pojęciami równoważenie obciążenia (load balancing) i czasy przestojów (idle- time). Strojenie klauzuli schedule, zapoznanie się z harmonogramowaniem dynamicznym i wielkością paczki (chunk size). Wykonanie sprawozdania. Ocena nr 22
T-L-6Zapoznanie się z kodem obliczania fraktala BuddaBrot. Dobranie rozmiaru obliczeń w zależności od jego parametrów wejściowych. Zrównoleglenie kodu z wykorzystaniem pragm omp paralell i for: - usekwencyjnienie części kodu – zmierzenie czasu tej części i szacowanie wpływu na końcowe przyspieszenie według Prawa Amdahla. - zamiana standardowej funkcji losującej na rand_r i wyjaśnienie dlaczego potrzebna jest specjalna implementacja dla kodu współbieżnego. Zaliczeniem jest program oraz aktywność w rozwiązywaniu zadań w czasie laboratorium. Ocena nr 3.2
T-L-7Zapoznanie się z algorytmem Conoway’a („Gra w życie”). Własna implementacja powyższego zadania dla jednej kolonii. Sposób wizualizacji zależny od studenta (tekstowy, graficzny, animacja). Przetwarzanie równoległe w wyliczeniu nowej tablicy (pragma omp paralell for). Zastąpienie dwóch tablic jedną wykorzystując operację modulo. Wykorzystanie klauzuli omp single, omp barier w celu wizualizacji poprzez jeden wątek.2
T-L-8Wykonanie implementacji dla wielu kolonii w algorytmie Conoway’a. Student sam dobiera (modyfikuje) reguły gry dla wielu kolonii (krzyżowanie, zwalczanie). Wprowadzenie pojęcie blokady i ich implementacja w OpenMP: funkcje omp_set_lock, omp_unset_lock i typ omp_lock_t. Zrównoleglenie za pomocą pragmy pragma omp paralell sections. Każda kolonia realizowana jest poprzez osobny wątek (section). Kolonie zaczynają od innego miejsca w tablicy. Za pomocą funkcji blokowania wprowadzenie poprawnej implementacji rywalizacji wątków. Każdy wątek równolegle oblicza tablicę (równoległość zagnieżdżona). Zapoznanie się z funkcjami omp_set_nested i omp_get_nested. Zaliczeniem jest program oraz aktywność w rozwiązywaniu zadań z laboratorium 7 i 8, a także zrozumienie pojęć rywalizacji wątków i zagnieżdżenia. Ocena 4.2
T-L-9Zapoznanie się z algorytmami filtry graficzne bazujące na maskach (rozmywający, wyostrzający). Implementacja aplikacji dla plików wejściowych w formacie graficznym PPM. Zapis poszczególnych plików w formacie PPM. Zrównoleglenie aplikacji Laboratorium 9 (pragmy omp paralell for). Zmierzenie czasu i obliczenie przyspieszenia. Zaliczeniem jest program oraz aktywność w rozwiązywaniu zadań w czasie laboratorium. Ocena 5.2
T-L-10Własna implementacja pragma omp paralell for z harmonogramowaniem dynamicznym. Zapoznanie się z sekcją krytyczną. Wykorzystanie pragm omp paralell. Wykorzystanie pragmy omp critical. Zrozumienie podziału przestrzenie iteracji pomiędzy wątkami (uproszczenie zadania: liczba iteracji jest podzielna przez liczbę wątków). Wprowadzenie dodatkowych zmiennych wyliczających prywatne granice wątka. Rywalizacja wątków o kolejną paczkę za pomocą omp critical. Zastosowanie implementacji na programie z Laboratorium 2. Zaliczeniem jest program oraz aktywność w rozwiązywaniu zadań w czasie laboratorium. Ocena 6.2
T-L-11Równoległa implementacja rysowania trójkąta Sierpińskiego. Format wyjściowy: PPM. Wprowadzenie pojęcia: równoległość drobno- i gruboziarnista oraz częstość występowania synchronizacji. Zrównoleglenie: - narysowanie głównego trójkąta - wyliczenie potomnych trójkątów - narysowanie potomnych trójkątów (równolegle) - dla każdego potomnego trójkąta wyliczenie potomnych i dodatnie do tej samej puli - narysowanie wszystkich potomnych trójkątów (równolegle), itd. Zastosowanie pragm omp barrier oraz single. Przykładowo: rysowanie jeden wątek | single obliczanie potomków 3 | rysowanie trójkątów 3 wątki, bariera | single obliczanie potomków 3*3 | rysowanie trójkątów 9 wątki, bariera, … Zaliczeniem jest program oraz aktywność w rozwiązywaniu zadań w czasie laboratorium. Ocena 7.2
T-L-12Równoległa implementacja przejścia przez labirynt. Format wyjściowy: tekstowy lub animacja. Zrównoleglenie na tej samej zasadzie co w zadaniu nr 11. Potomkami są tym razem nowe ścieżki gdy wątek natrafi na rozwidlenie ścieżek. Aplikacja kończy się po odwiedzeniu wszystkich korytarzy. Zastosowanie pragm omp barrier oraz single. Wątki przemierzające labirynt synchronizowane są co jeden krok, jeżeli napotykany jest nowy korytarz, dodajemy do puli kolejny wątek. Możliwość zapętlenia: wątki natrafiają na odwiedzony korytarz, traktują go jako ścianę. Możliwość kolizji: wątek powinien zakładać blokadę co każdy krok gdyż daną komórkę może odwiedzać inny wątek w tym samym czasie. Zaliczeniem laboratorium jest sprawozdanie, w którym należy wyjaśnić zastosowany model współbieżności w tym zadaniu. Ocena 8.2
T-L-13Własna implementacja równoległa generatora obrazów ASCII. Format wejściowy: PPM, format wyjściowy: plik tekstowy. Przyporządkowanie każdemu odcieniowi innego znaku ASCII w obrębie bloku pikseli. Zrównoleglenie kodu za pomocą pragmy omp paralell for. Zastosowanie aplikacji na obrazach o dużych rozmiarach. Zmierzenie czasu, przyspieszenia. Zapoznanie się z pojęciem efektywności. Zapoznanie się z pojęciem skalowalności. Zaliczeniem laboratorium jest sprawozdanie, w którym należy przedstawić wynik czasowe oraz przyspieszenie , efektywność oraz skalowalność. Ocena 9.2
T-L-14Prezentacja sprawozdań: Grupy studentów 2-3 osobowe prezentują inne narzędzia do zrównoleglania kodu, modele współbieżności oraz programowanie koprocesorów. Tematy: Temat 1: Intel Threading Building Blocks Temat 2: C++ 11 Threads Temat 3: Posix Threads Temat 4: Intel Xeon Phi Czas prezentacji: 20 minut. Ocena 10.2
T-L-15Prezentacja kompilatora automatycznie zrównoleglających kod do Openmp TRACO i Pluto. Panel ćwiczeniowy i dyskusyjny. Zaliczenie i oddawanie zaległych programów i sprawozdań. Wystawienie oceny końcowej.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-3Pojęcie zaleznośći, rodzaje zależności w programach2
T-W-4podstawowe transformacje pętli: FAN, PAR, PIPE2
T-W-5poję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-6Zrównoleglenie pętli w OpenMP, szeregowanie iteracji pętli do wątków2
T-W-7konstrukcje podziału pracy między wątki w OpenMP2
T-W-8Mechanizmy synchronizacji w OpenMP2
T-W-9Mechanizm zadań w OpenMP(tasking)4
T-W-10Biblioteki i narzędzia do tworzenia aplikacji równoległych komputerów wielordzeniowych: FORTRAN, OpenMP Java, POSIX, biblioteki Microsoft, biblioteki Java, Intel TBB2
T-W-11podstawowe czynniki mające wpływ na wydajność aplikacji, sposoby pozwalające na tworzenie wydajnych aplikacji2
T-W-12Metodologia PCAM tworzenia algorytmów równoległych4
T-W-13Modele wydajnościowe do aplikacji rónoległych2
30

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

KODForma aktywnościGodziny
laboratoria
A-L-1udział w laboratoriach30
A-L-2przygotowanie do laboratoriów8
A-L-3Udzał w konsultacjach i zaliczeniu formy zajęć2
40
wykłady
A-W-1Udział w wykładach30
A-W-2Przygotowanie do zaliczenia35
A-W-3Udzał w konsultacjach i zaliczeniu formy zajęć2
67

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 kształcenia - wiedza

Zamierzone efekty kształceniaOdniesienie do efektów kształcenia dla kierunku studiówOdniesienie do efektów zdefiniowanych dla obszaru kształceniaCel przedmiotuTreści programoweMetody nauczaniaSposób oceny
I_2A_D16/O3/2-3_W01
ma wiedzę w zakresie tworzenia algorytmów równoległych
I_2A_W04C-1T-W-2, T-W-5, T-W-10M-1S-2
I_2A_D16/O3/2-3_W02
zna API i biblioteki do tworzenia aplikacji równoległych dla komputerów wielordzeniowych
I_2A_W10C-2T-W-2, T-W-6, T-W-9M-1S-2
I_2A_D16/O3/2-3_W03
zna podstawowe metody gromadzenia i przetwarzania danych i informacji w oparciu o komputery równoległe
I_2A_W04C-1T-W-1, T-W-2, T-W-4, T-W-9, T-W-12M-1S-2

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łceniaCel przedmiotuTreści programoweMetody nauczaniaSposób oceny
I_2A_D16/O3/2-3_U01
potrafi wykorzystać narzędzia i poszukiwać wiedzy o nich
I_2A_U02, I_2A_U08C-1T-W-1, T-W-9, T-W-13M-2S-1
I_2A_D16/O3/2-3_U02
potrafi wykorzystać dotychczasową wiedzę i dobrać nowo powstałe narzędzia
I_2A_U04C-2T-W-12, T-L-2, T-L-4M-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łceniaCel przedmiotuTreści programoweMetody nauczaniaSposób oceny
I_2A_D16/O3/2-3_K01
rozumie korzyśi wynikające z przetwarzania równoległego
I_2A_K03C-2T-W-6, T-W-9, T-W-13, T-L-2M-2S-1

Kryterium oceny - wiedza

Efekt kształceniaOcenaKryterium oceny
I_2A_D16/O3/2-3_W01
ma wiedzę w zakresie tworzenia algorytmów równoległych
2,0nie potrrafi zdefiniować programu współbieżnego, współbieżności oraz rozróżnić równoległość od współbieżności
3,0rozumie pojęcie współbieżności, potrafi wyjaśnić definicję programu równoległego i odróżnić go od współbieżnego
3,5ma więdze na 3.0 oraz umie zdefiniować trudności w tworzeniu oprogramowania współbieżnego i równoległego oraz algorytmów, potrafi przedstawić podstawowe mechanizmy synchronizacji
4,0ma wiedzę na 3.5 oraz umiejętnie określa trudności w tworzeniu programów współbieżnych z odpowiednim doborem metod synchronizacji
4,5ma wiedzę na 4.0 oraz potrafi zdefiniować zagrożenia w tworzeniu oprogramowania współbieżnego
5,0ma wiedzę na 4.5 i potrafi wyjaśnić trudności w testowaniu oprogramowania współbieżnego
I_2A_D16/O3/2-3_W02
zna API i biblioteki do tworzenia aplikacji równoległych dla komputerów wielordzeniowych
2,0nie potrafi opisać pragmy parallel i for
3,0potrafi w podstawowym zakresie określić pragmę parallel i for
3,5potrafi w podstawowym zakresie określić pragmę parallel, for i sections
4,0potrafi w podstawowym zakresie określić pragmę parallel, for i sections oraz zna pragmy barrier i atomic
4,5ma wiedzę na 4.0 i zna definicje funkcji openmp
5,0ma wiedzę na 4.5 i zna mechanizmy lock w openmp
I_2A_D16/O3/2-3_W03
zna podstawowe metody gromadzenia i przetwarzania danych i informacji w oparciu o komputery równoległe
2,0nie umie wyjaśnić taksonomi Flynna
3,0potrafi wyjaśnić taksonomię Flynna
3,5potrafi wyjaśnić taksonomię Flynna i podać przykładowe architektury
4,0ma wiedzę 3.5 i opisać rozwój architektur równoległych
4,5ma wiedzę 4.0 i potrafi opisać architektury ze względu na dostęp do pamięci
5,0ma wiedzę na 4.5 i umie opisać model PCAM

Kryterium oceny - umiejętności

Efekt kształceniaOcenaKryterium oceny
I_2A_D16/O3/2-3_U01
potrafi wykorzystać narzędzia i poszukiwać wiedzy o nich
2,0nie potrafi odnaleźć informacji na temat narzędzi oraz pisania programów
3,0zna podstawowe słowa klucz, narzędzia i źródła wiedzy o nich
3,5potrafi odnaleźć informacje o poszczególnych funkcjach w dokumentacji narzędzia
4,0potrafi odnaleźć informacje o poszczególnych funkcjach w dokumentacji narzędzia i zastosować je w własnych projektach
4,5potrafi odnaleźć informacje o poszczególnych funkcjach w dokumentacji narzędzia i zastosować je w własnych projektach oraz zna alternetywne rozwiązania
5,0potrafi odnaleźć informacje o poszczególnych funkcjach w dokumentacji narzędzia i zastosować je w własnych projektach, zna alternetywne rozwiązania i jest zdolny do wyboru najbardziej odpowiedniego
I_2A_D16/O3/2-3_U02
potrafi wykorzystać dotychczasową wiedzę i dobrać nowo powstałe narzędzia
2,0nie zna podstaw programowania i kompilatorów
3,0umie skompilować program w środowisku GCC i zna podstawy openmp i tbb
3,5umie skompilować program w środowisku GCC i zna podstawy openmp i tbb oraz zna podstawowe funkcje języka C z zakresu programowania systemów operacyjnych
4,0ma wiedzę na 3.5 i potrafi wykorzystać tą wiedzę do programowania aplikacji równoległych
4,5ma wiedzę na 4.0 i potrafi wykorzystać tą wiedzę do programowania aplikacji równoległych z wyborem odpowiednich funkcji
5,0wiedza 4.5 oraz umie porównać rezultaty z różnych narzędzi i funkcji

Kryterium oceny - inne kompetencje społeczne i personalne

Efekt kształceniaOcenaKryterium oceny
I_2A_D16/O3/2-3_K01
rozumie korzyśi wynikające z przetwarzania równoległego
2,0nie zna podstawowych różnic między programowaniem sekwencyjnym i równoległym
3,0ma wiedzę na temat podstawowych różnic między programowaniem sekwencyjnym i równoległym
3,5ma wiedzę na temat podstawowych różnic między programowaniem sekwencyjnym i równoległym i potrafi określić problem programowania równoległego
4,0ma wiedzę na temat podstawowych różnic między programowaniem sekwencyjnym i równoległym i potrafi określić problem programowania równoległego oraz dobrać narzędzia do jego rozwiązania
4,5ma wiedzę na temat podstawowych różnic między programowaniem sekwencyjnym i równoległym i potrafi określić problem programowania równoległego oraz dobrać narzędzia do jego rozwiązania a także określić korzyści z maszyn równoległych
5,0ma wiedzę na 4.5 i potrafi określić jakość znajomych mu rozwiązań

Literatura podstawowa

  1. W. Bielecki, Essentials of parallel and distributed computing, Politechnika Szczecińska, Szczecin, 2002
  2. W. Bielecki, Przetwarzanie równoległe i rozproszone, Programowanie komputerów wielordzeniowych, Szczecin, 2007, Politechnika Szczecińska, 2007
  3. Rohit Chandra et al., Parallel Programming in OpenMP, Programowanie komputerów wielordzeniowych, Londyn, 2001
  4. Chapman, Jost, and Van Der Pas, Using OpenMP, The MIT Press Cambridge, 2008

Treści programowe - laboratoria

KODTreść programowaGodziny
T-L-1Wprowadzenie do napisania prostych programów w języku C/C++ z OpenMP Kompilacja, uruchomienie i testowanie aplikacji. Wyświetlenie specyfikacji procesorów z komendy poleceń w systemie Linux. Mierzenie czasu wykonywania kodu za pomocą funkcji omp_get_wtime(). Wyjaśnienie kwestii nie zrównoleglania operacji wejścia/wyjścia oraz pojęć wątek, proces, rywalizacja między wątkami oraz sekcja krytyczna.2
T-L-2Napisanie programu obliczającego równolegle mnożenie macierzy. Wykorzystanie dyrektywy #pragma omp paralel i for. Ustawienie żądanej liczby wątków: klauzula num_thrreads(), funkcje omp_get_num_threads(), omp_set_num_threads(). Porównanie wyników czasowych dla 1, 2, 4 oraz 8 wątków i dla różnych rozmiarów macierzy.2
T-L-3Modyfikacja programu mnożenia macierzy – zamiana czytania kolumnami na wiersze w jednej z macierzy wejściowej. Wyjaśnienie pojęcia lokalności, pamięci kieszeniowej i RAM. Wyjaśnienie pojęcie przyspieszenia, w tym liniowego i superliniowego oraz pojęcia lokalności. Porównanie wyników czasowych z wynikami uzyskanymi w laboratorium 2. Wykonanie sprawozdania na podstawie wyników z laboratorium 2 i 3, tabele z wynikami czasowymi i wykresy przyspieszeń, analiza porównawcza oraz wnioski. Ocena 1.2
T-L-4Skompilowanie programu wyliczającego zbiór Mandelbrota (fraktal). Wyjaśnienie zagadnienia zrównoleglenia tego kodu. Modyfikacja kodu: - przesunięcie operacji zapisu plikowego poza pętle - prywatyzacja zmiennych. Porównanie plików wyjściowych wersji sekwencyjnej i równoległej. Zmierzenie czasu kodu dla wielu wątków oraz policzenie przyspieszenia.2
T-L-5Wprowadzenie pojęcia harmogramowania iteracji. Zapoznanie się z klauzulą schedule i jej parametrami w pragmie omp for. Interpretacja wyników: student ma za zadanie zrozumieć dlaczego domyślny podział nie jest efektywny dla większej liczby wątków niż 2. Wyjaśnienie działania kodu (tło fraktala liczy się krótko). Zapoznanie się z pojęciami równoważenie obciążenia (load balancing) i czasy przestojów (idle- time). Strojenie klauzuli schedule, zapoznanie się z harmonogramowaniem dynamicznym i wielkością paczki (chunk size). Wykonanie sprawozdania. Ocena nr 22
T-L-6Zapoznanie się z kodem obliczania fraktala BuddaBrot. Dobranie rozmiaru obliczeń w zależności od jego parametrów wejściowych. Zrównoleglenie kodu z wykorzystaniem pragm omp paralell i for: - usekwencyjnienie części kodu – zmierzenie czasu tej części i szacowanie wpływu na końcowe przyspieszenie według Prawa Amdahla. - zamiana standardowej funkcji losującej na rand_r i wyjaśnienie dlaczego potrzebna jest specjalna implementacja dla kodu współbieżnego. Zaliczeniem jest program oraz aktywność w rozwiązywaniu zadań w czasie laboratorium. Ocena nr 3.2
T-L-7Zapoznanie się z algorytmem Conoway’a („Gra w życie”). Własna implementacja powyższego zadania dla jednej kolonii. Sposób wizualizacji zależny od studenta (tekstowy, graficzny, animacja). Przetwarzanie równoległe w wyliczeniu nowej tablicy (pragma omp paralell for). Zastąpienie dwóch tablic jedną wykorzystując operację modulo. Wykorzystanie klauzuli omp single, omp barier w celu wizualizacji poprzez jeden wątek.2
T-L-8Wykonanie implementacji dla wielu kolonii w algorytmie Conoway’a. Student sam dobiera (modyfikuje) reguły gry dla wielu kolonii (krzyżowanie, zwalczanie). Wprowadzenie pojęcie blokady i ich implementacja w OpenMP: funkcje omp_set_lock, omp_unset_lock i typ omp_lock_t. Zrównoleglenie za pomocą pragmy pragma omp paralell sections. Każda kolonia realizowana jest poprzez osobny wątek (section). Kolonie zaczynają od innego miejsca w tablicy. Za pomocą funkcji blokowania wprowadzenie poprawnej implementacji rywalizacji wątków. Każdy wątek równolegle oblicza tablicę (równoległość zagnieżdżona). Zapoznanie się z funkcjami omp_set_nested i omp_get_nested. Zaliczeniem jest program oraz aktywność w rozwiązywaniu zadań z laboratorium 7 i 8, a także zrozumienie pojęć rywalizacji wątków i zagnieżdżenia. Ocena 4.2
T-L-9Zapoznanie się z algorytmami filtry graficzne bazujące na maskach (rozmywający, wyostrzający). Implementacja aplikacji dla plików wejściowych w formacie graficznym PPM. Zapis poszczególnych plików w formacie PPM. Zrównoleglenie aplikacji Laboratorium 9 (pragmy omp paralell for). Zmierzenie czasu i obliczenie przyspieszenia. Zaliczeniem jest program oraz aktywność w rozwiązywaniu zadań w czasie laboratorium. Ocena 5.2
T-L-10Własna implementacja pragma omp paralell for z harmonogramowaniem dynamicznym. Zapoznanie się z sekcją krytyczną. Wykorzystanie pragm omp paralell. Wykorzystanie pragmy omp critical. Zrozumienie podziału przestrzenie iteracji pomiędzy wątkami (uproszczenie zadania: liczba iteracji jest podzielna przez liczbę wątków). Wprowadzenie dodatkowych zmiennych wyliczających prywatne granice wątka. Rywalizacja wątków o kolejną paczkę za pomocą omp critical. Zastosowanie implementacji na programie z Laboratorium 2. Zaliczeniem jest program oraz aktywność w rozwiązywaniu zadań w czasie laboratorium. Ocena 6.2
T-L-11Równoległa implementacja rysowania trójkąta Sierpińskiego. Format wyjściowy: PPM. Wprowadzenie pojęcia: równoległość drobno- i gruboziarnista oraz częstość występowania synchronizacji. Zrównoleglenie: - narysowanie głównego trójkąta - wyliczenie potomnych trójkątów - narysowanie potomnych trójkątów (równolegle) - dla każdego potomnego trójkąta wyliczenie potomnych i dodatnie do tej samej puli - narysowanie wszystkich potomnych trójkątów (równolegle), itd. Zastosowanie pragm omp barrier oraz single. Przykładowo: rysowanie jeden wątek | single obliczanie potomków 3 | rysowanie trójkątów 3 wątki, bariera | single obliczanie potomków 3*3 | rysowanie trójkątów 9 wątki, bariera, … Zaliczeniem jest program oraz aktywność w rozwiązywaniu zadań w czasie laboratorium. Ocena 7.2
T-L-12Równoległa implementacja przejścia przez labirynt. Format wyjściowy: tekstowy lub animacja. Zrównoleglenie na tej samej zasadzie co w zadaniu nr 11. Potomkami są tym razem nowe ścieżki gdy wątek natrafi na rozwidlenie ścieżek. Aplikacja kończy się po odwiedzeniu wszystkich korytarzy. Zastosowanie pragm omp barrier oraz single. Wątki przemierzające labirynt synchronizowane są co jeden krok, jeżeli napotykany jest nowy korytarz, dodajemy do puli kolejny wątek. Możliwość zapętlenia: wątki natrafiają na odwiedzony korytarz, traktują go jako ścianę. Możliwość kolizji: wątek powinien zakładać blokadę co każdy krok gdyż daną komórkę może odwiedzać inny wątek w tym samym czasie. Zaliczeniem laboratorium jest sprawozdanie, w którym należy wyjaśnić zastosowany model współbieżności w tym zadaniu. Ocena 8.2
T-L-13Własna implementacja równoległa generatora obrazów ASCII. Format wejściowy: PPM, format wyjściowy: plik tekstowy. Przyporządkowanie każdemu odcieniowi innego znaku ASCII w obrębie bloku pikseli. Zrównoleglenie kodu za pomocą pragmy omp paralell for. Zastosowanie aplikacji na obrazach o dużych rozmiarach. Zmierzenie czasu, przyspieszenia. Zapoznanie się z pojęciem efektywności. Zapoznanie się z pojęciem skalowalności. Zaliczeniem laboratorium jest sprawozdanie, w którym należy przedstawić wynik czasowe oraz przyspieszenie , efektywność oraz skalowalność. Ocena 9.2
T-L-14Prezentacja sprawozdań: Grupy studentów 2-3 osobowe prezentują inne narzędzia do zrównoleglania kodu, modele współbieżności oraz programowanie koprocesorów. Tematy: Temat 1: Intel Threading Building Blocks Temat 2: C++ 11 Threads Temat 3: Posix Threads Temat 4: Intel Xeon Phi Czas prezentacji: 20 minut. Ocena 10.2
T-L-15Prezentacja kompilatora automatycznie zrównoleglających kod do Openmp TRACO i Pluto. Panel ćwiczeniowy i dyskusyjny. Zaliczenie i oddawanie zaległych programów i sprawozdań. Wystawienie oceny końcowej.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-3Pojęcie zaleznośći, rodzaje zależności w programach2
T-W-4podstawowe transformacje pętli: FAN, PAR, PIPE2
T-W-5poję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-6Zrównoleglenie pętli w OpenMP, szeregowanie iteracji pętli do wątków2
T-W-7konstrukcje podziału pracy między wątki w OpenMP2
T-W-8Mechanizmy synchronizacji w OpenMP2
T-W-9Mechanizm zadań w OpenMP(tasking)4
T-W-10Biblioteki i narzędzia do tworzenia aplikacji równoległych komputerów wielordzeniowych: FORTRAN, OpenMP Java, POSIX, biblioteki Microsoft, biblioteki Java, Intel TBB2
T-W-11podstawowe czynniki mające wpływ na wydajność aplikacji, sposoby pozwalające na tworzenie wydajnych aplikacji2
T-W-12Metodologia PCAM tworzenia algorytmów równoległych4
T-W-13Modele wydajnościowe do aplikacji rónoległych2
30

Formy aktywności - laboratoria

KODForma aktywnościGodziny
A-L-1udział w laboratoriach30
A-L-2przygotowanie do laboratoriów8
A-L-3Udzał w konsultacjach i zaliczeniu formy zajęć2
40
(*) 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 zaliczenia35
A-W-3Udzał w konsultacjach i zaliczeniu formy zajęć2
67
(*) 1 punkt ECTS, odpowiada około 30 godzinom aktywności studenta
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaI_2A_D16/O3/2-3_W01ma wiedzę w zakresie tworzenia algorytmów równoległych
Odniesienie do efektów kształcenia dla kierunku studiówI_2A_W04Ma wiedzę z zakresu zaawansowanych technik programowania systemów informatycznych w wybranym obszarze zastosowań
Cel przedmiotuC-1Uksztatowanie wiedzy i umiejtnoci niezbędnych do opracowania aplikacji równolegych dla komputerów wielerdzeniowych
Treści programoweT-W-2podstawowe mierniki jakości aplikacji równoległych (lokalność, granulacja, determinizm, przyspieszenie i efektywność), prawa Amdahl’a i Gustaffson’a
T-W-5poję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-10Biblioteki i narzędzia do tworzenia aplikacji równoległych komputerów wielordzeniowych: FORTRAN, OpenMP Java, POSIX, biblioteki Microsoft, biblioteki Java, Intel TBB
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,0nie potrrafi zdefiniować programu współbieżnego, współbieżności oraz rozróżnić równoległość od współbieżności
3,0rozumie pojęcie współbieżności, potrafi wyjaśnić definicję programu równoległego i odróżnić go od współbieżnego
3,5ma więdze na 3.0 oraz umie zdefiniować trudności w tworzeniu oprogramowania współbieżnego i równoległego oraz algorytmów, potrafi przedstawić podstawowe mechanizmy synchronizacji
4,0ma wiedzę na 3.5 oraz umiejętnie określa trudności w tworzeniu programów współbieżnych z odpowiednim doborem metod synchronizacji
4,5ma wiedzę na 4.0 oraz potrafi zdefiniować zagrożenia w tworzeniu oprogramowania współbieżnego
5,0ma wiedzę na 4.5 i potrafi wyjaśnić trudności w testowaniu oprogramowania współbieżnego
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaI_2A_D16/O3/2-3_W02zna API i biblioteki do tworzenia aplikacji równoległych dla komputerów wielordzeniowych
Odniesienie do efektów kształcenia dla kierunku studiówI_2A_W10Ma poszerzoną wiedzę dotyczącą trendów rozwojowych i możliwości zastosowania informatyki w wybranych obszarach nauki i techniki
Cel przedmiotuC-2Ukształtowanie świadomego rozumowania dokształcania się i odpowiedzialności za wspólne realizowanie projektów w zakresie programowania współbieżnego
Treści programoweT-W-2podstawowe mierniki jakości aplikacji równoległych (lokalność, granulacja, determinizm, przyspieszenie i efektywność), prawa Amdahl’a i Gustaffson’a
T-W-6Zrównoleglenie pętli w OpenMP, szeregowanie iteracji pętli do wątków
T-W-9Mechanizm zadań w OpenMP(tasking)
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,0nie potrafi opisać pragmy parallel i for
3,0potrafi w podstawowym zakresie określić pragmę parallel i for
3,5potrafi w podstawowym zakresie określić pragmę parallel, for i sections
4,0potrafi w podstawowym zakresie określić pragmę parallel, for i sections oraz zna pragmy barrier i atomic
4,5ma wiedzę na 4.0 i zna definicje funkcji openmp
5,0ma wiedzę na 4.5 i zna mechanizmy lock w openmp
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaI_2A_D16/O3/2-3_W03zna podstawowe metody gromadzenia i przetwarzania danych i informacji w oparciu o komputery równoległe
Odniesienie do efektów kształcenia dla kierunku studiówI_2A_W04Ma wiedzę z zakresu zaawansowanych technik programowania systemów informatycznych w wybranym obszarze zastosowań
Cel przedmiotuC-1Uksztatowanie wiedzy i umiejtnoci niezbędnych do opracowania aplikacji równolegych dla komputerów wielerdzeniowych
Treści programoweT-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-W-4podstawowe transformacje pętli: FAN, PAR, PIPE
T-W-9Mechanizm zadań w OpenMP(tasking)
T-W-12Metodologia PCAM tworzenia algorytmów równoległych
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,0nie umie wyjaśnić taksonomi Flynna
3,0potrafi wyjaśnić taksonomię Flynna
3,5potrafi wyjaśnić taksonomię Flynna i podać przykładowe architektury
4,0ma wiedzę 3.5 i opisać rozwój architektur równoległych
4,5ma wiedzę 4.0 i potrafi opisać architektury ze względu na dostęp do pamięci
5,0ma wiedzę na 4.5 i umie opisać model PCAM
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaI_2A_D16/O3/2-3_U01potrafi wykorzystać narzędzia i poszukiwać wiedzy o nich
Odniesienie do efektów kształcenia dla kierunku studiówI_2A_U02Potrafi pozyskiwać informacje z różnych źródeł (literatura, Internet, bazy danych, dokumentacja techniczna), dokonywać ich interpretacji i oceny
I_2A_U08Potrafi wykorzystywać narzędzia sprzętowo-programowe wspomagające rozwiązywanie wybranych problemów w różnych obszarach nauki i techniki
Cel przedmiotuC-1Uksztatowanie wiedzy i umiejtnoci niezbędnych do opracowania aplikacji równolegych dla komputerów wielerdzeniowych
Treści programoweT-W-1architektura komputerów wielordzeniowych oraz jej związek z wydajnością aplikacji równoległych
T-W-9Mechanizm zadań w OpenMP(tasking)
T-W-13Modele wydajnościowe do aplikacji rónoległ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,0nie potrafi odnaleźć informacji na temat narzędzi oraz pisania programów
3,0zna podstawowe słowa klucz, narzędzia i źródła wiedzy o nich
3,5potrafi odnaleźć informacje o poszczególnych funkcjach w dokumentacji narzędzia
4,0potrafi odnaleźć informacje o poszczególnych funkcjach w dokumentacji narzędzia i zastosować je w własnych projektach
4,5potrafi odnaleźć informacje o poszczególnych funkcjach w dokumentacji narzędzia i zastosować je w własnych projektach oraz zna alternetywne rozwiązania
5,0potrafi odnaleźć informacje o poszczególnych funkcjach w dokumentacji narzędzia i zastosować je w własnych projektach, zna alternetywne rozwiązania i jest zdolny do wyboru najbardziej odpowiedniego
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaI_2A_D16/O3/2-3_U02potrafi wykorzystać dotychczasową wiedzę i dobrać nowo powstałe narzędzia
Odniesienie do efektów kształcenia dla kierunku studiówI_2A_U04Potrafi wybrać, krytycznie ocenić przydatność i zastosować metodę i narzędzia rozwiązania złożonego zadania inżynierskiego
Cel przedmiotuC-2Ukształtowanie świadomego rozumowania dokształcania się i odpowiedzialności za wspólne realizowanie projektów w zakresie programowania współbieżnego
Treści programoweT-W-12Metodologia PCAM tworzenia algorytmów równoległych
T-L-2Napisanie programu obliczającego równolegle mnożenie macierzy. Wykorzystanie dyrektywy #pragma omp paralel i for. Ustawienie żądanej liczby wątków: klauzula num_thrreads(), funkcje omp_get_num_threads(), omp_set_num_threads(). Porównanie wyników czasowych dla 1, 2, 4 oraz 8 wątków i dla różnych rozmiarów macierzy.
T-L-4Skompilowanie programu wyliczającego zbiór Mandelbrota (fraktal). Wyjaśnienie zagadnienia zrównoleglenia tego kodu. Modyfikacja kodu: - przesunięcie operacji zapisu plikowego poza pętle - prywatyzacja zmiennych. Porównanie plików wyjściowych wersji sekwencyjnej i równoległej. Zmierzenie czasu kodu dla wielu wątków oraz policzenie przyspieszenia.
Metody nauczaniaM-2Ćwiczenia laboratoryjne
Sposób ocenyS-2Ocena formująca: Zaliczenie końcowe poprzez sprawdzenie efektów kształcenia: przedstawienie pytań i ocena odpowiedzi
Kryteria ocenyOcenaKryterium oceny
2,0nie zna podstaw programowania i kompilatorów
3,0umie skompilować program w środowisku GCC i zna podstawy openmp i tbb
3,5umie skompilować program w środowisku GCC i zna podstawy openmp i tbb oraz zna podstawowe funkcje języka C z zakresu programowania systemów operacyjnych
4,0ma wiedzę na 3.5 i potrafi wykorzystać tą wiedzę do programowania aplikacji równoległych
4,5ma wiedzę na 4.0 i potrafi wykorzystać tą wiedzę do programowania aplikacji równoległych z wyborem odpowiednich funkcji
5,0wiedza 4.5 oraz umie porównać rezultaty z różnych narzędzi i funkcji
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaI_2A_D16/O3/2-3_K01rozumie korzyśi wynikające z przetwarzania równoległego
Odniesienie do efektów kształcenia dla kierunku studiówI_2A_K03Rozumie potrzebę przekazywania społeczeństwu informacji o rozwoju i osiągnięciach nauki w zakresie informatyki
Cel przedmiotuC-2Ukształtowanie świadomego rozumowania dokształcania się i odpowiedzialności za wspólne realizowanie projektów w zakresie programowania współbieżnego
Treści programoweT-W-6Zrównoleglenie pętli w OpenMP, szeregowanie iteracji pętli do wątków
T-W-9Mechanizm zadań w OpenMP(tasking)
T-W-13Modele wydajnościowe do aplikacji rónoległych
T-L-2Napisanie programu obliczającego równolegle mnożenie macierzy. Wykorzystanie dyrektywy #pragma omp paralel i for. Ustawienie żądanej liczby wątków: klauzula num_thrreads(), funkcje omp_get_num_threads(), omp_set_num_threads(). Porównanie wyników czasowych dla 1, 2, 4 oraz 8 wątków i dla różnych rozmiarów macierzy.
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,0nie zna podstawowych różnic między programowaniem sekwencyjnym i równoległym
3,0ma wiedzę na temat podstawowych różnic między programowaniem sekwencyjnym i równoległym
3,5ma wiedzę na temat podstawowych różnic między programowaniem sekwencyjnym i równoległym i potrafi określić problem programowania równoległego
4,0ma wiedzę na temat podstawowych różnic między programowaniem sekwencyjnym i równoległym i potrafi określić problem programowania równoległego oraz dobrać narzędzia do jego rozwiązania
4,5ma wiedzę na temat podstawowych różnic między programowaniem sekwencyjnym i równoległym i potrafi określić problem programowania równoległego oraz dobrać narzędzia do jego rozwiązania a także określić korzyści z maszyn równoległych
5,0ma wiedzę na 4.5 i potrafi określić jakość znajomych mu rozwiązań