Zachodniopomorski Uniwersytet Technologiczny w Szczecinie

Wydział Informatyki - Informatyka (N2)
specjalność: Projektowanie oprogramowania

Sylabus przedmiotu Obliczenia dużej mocy:

Informacje podstawowe

Kierunek studiów Informatyka
Forma studiów studia niestacjonarne Poziom drugiego stopnia
Tytuł zawodowy absolwenta magister inżynier
Obszary studiów charakterystyki PRK, kompetencje inżynierskie PRK
Profil ogólnoakademicki
Moduł
Przedmiot Obliczenia dużej mocy
Specjalność przedmiot wspólny
Jednostka prowadząca Katedra Inżynierii Oprogramowania
Nauczyciel odpowiedzialny Włodzimierz Bielecki <Wlodzimierz.Bielecki@zut.edu.pl>
Inni nauczyciele Michał Fedorov <Michal.Fedorov@zut.edu.pl>, Marek Pałkowski <Marek.Palkowski@zut.edu.pl>, Krzysztof Siedlecki <Krzysztof.Siedlecki@zut.edu.pl>
ECTS (planowane) 4,0 ECTS (formy) 4,0
Forma zaliczenia zaliczenie Język polski
Blok obieralny Grupa obieralna

Formy dydaktyczne

Forma dydaktycznaKODSemestrGodzinyECTSWagaZaliczenie
laboratoriaL1 18 2,00,50zaliczenie
wykładyW1 18 2,00,50zaliczenie

Wymagania wstępne

KODWymaganie wstępne
W-1Zaliczone przedmioty: Programowanie 1 i 2, Programowanie równoległe i rozproszone, architektura komputerów.

Cele przedmiotu

KODCel modułu/przedmiotu
C-1Umiejętność optymalizacji kodu C++ w narzędziach Intela i pakietach rozprosoznych w oparciu o paradygmaty programowania obiektowego
C-2Ukształtowanie świadomego rozumowania dokształcania się i odpowiedzialności za wspólne realizowanie projektów w zakresie wytwarzania oprogramowania
C-3Znajomość bibliotek wspomagających obliczenia numeryczne w tym z zakresu algebry liniowej

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

KODTreść programowaGodziny
laboratoria
T-L-1Wstęp, Intel TBB vs. Openmp i Posix Threads, Prosty program TBB, kompilacja, uruchomienie, konfiguracja środowiska1
T-L-2Przypomnienie wiadomości Programowanie obiektowe C++ i STL, kontenery szablonów, wyrażenie Lamba, przeciążanie operatorów.1
T-L-3Algorytm TBB parallel for - mnożenie macierzy2
T-L-4c.d. lab. 2 Algorytmy cachowania dla parallel for - optymalizacja ustawień i kontrola ziarnistości2
T-L-5Algorytmy TBB - reduce i scan - Aplikacje przykłady akademicke1
T-L-6Zrównoleglanie pętli warunkowej w TBB1
T-L-7Usługi dodatkowe TBB - pomiar czasu, obsługa wyjątków, operacje atomowe1
T-L-8Instlacja pakietu CILK- konfiguracja środowiska i przykładowy program równoległy1
T-L-9Algorytmy cilk_spawn, cilk_for, cilk_sync2
T-L-10Reducers i holders w CILK1
T-L-11Zamki i obsługa wyjątków w CILK1
T-L-12Demonstracja możliwości rozproszonych pakietów MPI i PVM - instlacja i uruchomienie gotowego programu równoleglego2
T-L-13Popularne biblioteki i API (BLAS, LINPACK, LAPACK, Intel MKL, Intel DAAL, openCL, OpenMP, OpenACC, Intel Movidius) - zadania numeryczne2
18
wykłady
T-W-1Typy komputerów równoległych (procesory wielordzeniowe, symetryczne systemy wieloprocesorowe, komputery wektorowe, komputery masowo równoległe, karty graficzne, systemy osadzone, specjalizowane układy scalone, klastry, gridy, specjalizowane układy scalone, rekonfigurowalne systemy obliczeniowe, taksonomia Flynna)1
T-W-2Modele programowania równoległego i rozproszonego (fork-join, pamięć współdzielona, wielowątkowość, pamięć rozproszona, równoległość danych, obliczenia oparte na przesyłaniu komunikatów, pojedynczy program wielu danych (SPMD), wielokrotny program wielu danych (MPMD)1
T-W-3Paradygmaty i języki programowania równoległego i rozproszonego1
T-W-4Przyspieszenie i efektywność aplikacji równoległych i rozproszonych, podstawowe czynniki określające wydajność aplikacji równoległych i rozproszonych1
T-W-5Metodologia PCAM tworzenia algorytmów równoległych i rozproszonych2
T-W-6Biblioteka MPI do wytwarzania aplikacji rozproszonych3
T-W-7Biblioteka Intel Threading Building Blocks, (podstawowe algorytmy parallel_for, parallel_reduce, parallel_scan)2
T-W-8Biblioteka Intel Threading Building Blocks , zaawansowane algorytmy ( parallel_while, parallel_do,pipeline, parallel_sort)1
T-W-9Biblioteka Intel Threading Building Blocks , mechanizmy dodatkowe (kontenery, skalowalna alokacja pamięci, wzajemne wykluczanie, operacje atomowe, szeregowanie zadań)1
T-W-10Język Cilk, hiperobjekty, przetwarzanie simd, sposoby zwiększenia wydajności aplikacji1
T-W-11Język Cilk, równoległe wykonywanie wątków, synchronizacja wątków1
T-W-12Język Cilk, hiperobjekty, przetwarzanie simd, sposoby zwiększenia wydajności aplikacji1
T-W-13Popularne biblioteki i API (BLAS, LINPACK, LAPACK, Intel MKL, Intel DAAL, openCL, OpenMP, OpenACC, Intel Movidius)2
18

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

KODForma aktywnościGodziny
laboratoria
A-L-1udział w zajęciach laboratoryjnych18
A-L-2przygotowanie sprawozdań i do odpowiedzi ustnych30
A-L-3konsultacje2
50
wykłady
A-W-1uczestnictwo w wykładach18
A-W-2przygotowanie się do egzaminu30
A-W-3konsultacje2
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_C01_W01
Ma wiedzę w zakresie metod optymalizacji kodu za pomocą narzędzi Intela i nie tylko w przetwarzaniu równoległym i rozproszonym
I_2A_W02, I_2A_W03C-2T-W-1, T-W-2, T-W-3, T-W-4, T-W-5, T-W-6, T-W-7, T-W-8, T-W-9, T-W-11, T-W-10, T-W-13M-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_C01_U01
Potrafi rozwiązywać złożone problemy oparte na tworzeniu współbieżnych aplikacji w Intel TBB i Cilk jak i innych modelach programowania współbieżnego
I_2A_U04, I_2A_U05, I_2A_U09C-1, C-3T-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-11, T-L-12, T-L-13M-2S-1, S-2

Kryterium oceny - wiedza

Efekt uczenia sięOcenaKryterium oceny
I_2A_C01_W01
Ma wiedzę w zakresie metod optymalizacji kodu za pomocą narzędzi Intela i nie tylko w przetwarzaniu równoległym i rozproszonym
2,0
3,0Rozumie pojęcia przyspieszenie, optymalizacja kodu, współbieżność aplikacji.
3,5Kryteria 3.0 +Znajomość pakietów OpenMP, TBB, CILK, cechy wspólne i różnice.
4,0Kryteria 3.5 + znajomość algorytmów TBB, CILK i STL.
4,5Kryteria 4.0 +Znajomość pakietów PVM i MPI.
5,0Kryteria 4.5 +Znajomość pakietów Intela dla algebry liniowej.

Kryterium oceny - umiejętności

Efekt uczenia sięOcenaKryterium oceny
I_2A_C01_U01
Potrafi rozwiązywać złożone problemy oparte na tworzeniu współbieżnych aplikacji w Intel TBB i Cilk jak i innych modelach programowania współbieżnego
2,0
3,0Potrafi napisać podstawowe aplikacje współbieżne w dowolnym pakiecie.
3,5Kryteria 3.0 +Potrafi odnaleźć różnice pomiędzy TBB i OpenMP w zasosotowaniu do tworzenia aplikacji obiektowych.
4,0Kryteria 3.5 +Umiejętność doboru odpowiednich algorytmów z pakietów do zadania.
4,5Kryteria 4.0 +Umiejętność testowania kodu i wyciągania wniosków na temat jego jakości.
5,0Kryteria 4.5 +Potrafi napisać sprawozdanie na podstawie otrzymanych wyników i wnioskować w oparciu o poznaną wiedzę teoretyczną.

Literatura podstawowa

  1. Dokumentacja Intel TBB, 2011, http://threadingbuildingblocks.org/documentation.php
  2. James Reinders, Intel® Threading Building Blocks: Outfitting C++ for Multi-core Processor Parallelism, O'Reilly, 2007

Treści programowe - laboratoria

KODTreść programowaGodziny
T-L-1Wstęp, Intel TBB vs. Openmp i Posix Threads, Prosty program TBB, kompilacja, uruchomienie, konfiguracja środowiska1
T-L-2Przypomnienie wiadomości Programowanie obiektowe C++ i STL, kontenery szablonów, wyrażenie Lamba, przeciążanie operatorów.1
T-L-3Algorytm TBB parallel for - mnożenie macierzy2
T-L-4c.d. lab. 2 Algorytmy cachowania dla parallel for - optymalizacja ustawień i kontrola ziarnistości2
T-L-5Algorytmy TBB - reduce i scan - Aplikacje przykłady akademicke1
T-L-6Zrównoleglanie pętli warunkowej w TBB1
T-L-7Usługi dodatkowe TBB - pomiar czasu, obsługa wyjątków, operacje atomowe1
T-L-8Instlacja pakietu CILK- konfiguracja środowiska i przykładowy program równoległy1
T-L-9Algorytmy cilk_spawn, cilk_for, cilk_sync2
T-L-10Reducers i holders w CILK1
T-L-11Zamki i obsługa wyjątków w CILK1
T-L-12Demonstracja możliwości rozproszonych pakietów MPI i PVM - instlacja i uruchomienie gotowego programu równoleglego2
T-L-13Popularne biblioteki i API (BLAS, LINPACK, LAPACK, Intel MKL, Intel DAAL, openCL, OpenMP, OpenACC, Intel Movidius) - zadania numeryczne2
18

Treści programowe - wykłady

KODTreść programowaGodziny
T-W-1Typy komputerów równoległych (procesory wielordzeniowe, symetryczne systemy wieloprocesorowe, komputery wektorowe, komputery masowo równoległe, karty graficzne, systemy osadzone, specjalizowane układy scalone, klastry, gridy, specjalizowane układy scalone, rekonfigurowalne systemy obliczeniowe, taksonomia Flynna)1
T-W-2Modele programowania równoległego i rozproszonego (fork-join, pamięć współdzielona, wielowątkowość, pamięć rozproszona, równoległość danych, obliczenia oparte na przesyłaniu komunikatów, pojedynczy program wielu danych (SPMD), wielokrotny program wielu danych (MPMD)1
T-W-3Paradygmaty i języki programowania równoległego i rozproszonego1
T-W-4Przyspieszenie i efektywność aplikacji równoległych i rozproszonych, podstawowe czynniki określające wydajność aplikacji równoległych i rozproszonych1
T-W-5Metodologia PCAM tworzenia algorytmów równoległych i rozproszonych2
T-W-6Biblioteka MPI do wytwarzania aplikacji rozproszonych3
T-W-7Biblioteka Intel Threading Building Blocks, (podstawowe algorytmy parallel_for, parallel_reduce, parallel_scan)2
T-W-8Biblioteka Intel Threading Building Blocks , zaawansowane algorytmy ( parallel_while, parallel_do,pipeline, parallel_sort)1
T-W-9Biblioteka Intel Threading Building Blocks , mechanizmy dodatkowe (kontenery, skalowalna alokacja pamięci, wzajemne wykluczanie, operacje atomowe, szeregowanie zadań)1
T-W-10Język Cilk, hiperobjekty, przetwarzanie simd, sposoby zwiększenia wydajności aplikacji1
T-W-11Język Cilk, równoległe wykonywanie wątków, synchronizacja wątków1
T-W-12Język Cilk, hiperobjekty, przetwarzanie simd, sposoby zwiększenia wydajności aplikacji1
T-W-13Popularne biblioteki i API (BLAS, LINPACK, LAPACK, Intel MKL, Intel DAAL, openCL, OpenMP, OpenACC, Intel Movidius)2
18

Formy aktywności - laboratoria

KODForma aktywnościGodziny
A-L-1udział w zajęciach laboratoryjnych18
A-L-2przygotowanie sprawozdań i do odpowiedzi ustnych30
A-L-3konsultacje2
50
(*) 1 punkt ECTS, odpowiada około 30 godzinom aktywności studenta

Formy aktywności - wykłady

KODForma aktywnościGodziny
A-W-1uczestnictwo w wykładach18
A-W-2przygotowanie się do egzaminu30
A-W-3konsultacje2
50
(*) 1 punkt ECTS, odpowiada około 30 godzinom aktywności studenta
PoleKODZnaczenie kodu
Zamierzone efekty uczenia sięI_2A_C01_W01Ma wiedzę w zakresie metod optymalizacji kodu za pomocą narzędzi Intela i nie tylko w przetwarzaniu równoległym i rozproszonym
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ń
I_2A_W03Ma uporządkowaną, podbudowaną metodycznie i teoretycznie wiedzę w zakresie metod i technik projektowania systemów informatycznych
Cel przedmiotuC-2Ukształtowanie świadomego rozumowania dokształcania się i odpowiedzialności za wspólne realizowanie projektów w zakresie wytwarzania oprogramowania
Treści programoweT-W-1Typy komputerów równoległych (procesory wielordzeniowe, symetryczne systemy wieloprocesorowe, komputery wektorowe, komputery masowo równoległe, karty graficzne, systemy osadzone, specjalizowane układy scalone, klastry, gridy, specjalizowane układy scalone, rekonfigurowalne systemy obliczeniowe, taksonomia Flynna)
T-W-2Modele programowania równoległego i rozproszonego (fork-join, pamięć współdzielona, wielowątkowość, pamięć rozproszona, równoległość danych, obliczenia oparte na przesyłaniu komunikatów, pojedynczy program wielu danych (SPMD), wielokrotny program wielu danych (MPMD)
T-W-3Paradygmaty i języki programowania równoległego i rozproszonego
T-W-4Przyspieszenie i efektywność aplikacji równoległych i rozproszonych, podstawowe czynniki określające wydajność aplikacji równoległych i rozproszonych
T-W-5Metodologia PCAM tworzenia algorytmów równoległych i rozproszonych
T-W-6Biblioteka MPI do wytwarzania aplikacji rozproszonych
T-W-7Biblioteka Intel Threading Building Blocks, (podstawowe algorytmy parallel_for, parallel_reduce, parallel_scan)
T-W-8Biblioteka Intel Threading Building Blocks , zaawansowane algorytmy ( parallel_while, parallel_do,pipeline, parallel_sort)
T-W-9Biblioteka Intel Threading Building Blocks , mechanizmy dodatkowe (kontenery, skalowalna alokacja pamięci, wzajemne wykluczanie, operacje atomowe, szeregowanie zadań)
T-W-11Język Cilk, równoległe wykonywanie wątków, synchronizacja wątków
T-W-10Język Cilk, hiperobjekty, przetwarzanie simd, sposoby zwiększenia wydajności aplikacji
T-W-13Popularne biblioteki i API (BLAS, LINPACK, LAPACK, Intel MKL, Intel DAAL, openCL, OpenMP, OpenACC, Intel Movidius)
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,0Rozumie pojęcia przyspieszenie, optymalizacja kodu, współbieżność aplikacji.
3,5Kryteria 3.0 +Znajomość pakietów OpenMP, TBB, CILK, cechy wspólne i różnice.
4,0Kryteria 3.5 + znajomość algorytmów TBB, CILK i STL.
4,5Kryteria 4.0 +Znajomość pakietów PVM i MPI.
5,0Kryteria 4.5 +Znajomość pakietów Intela dla algebry liniowej.
PoleKODZnaczenie kodu
Zamierzone efekty uczenia sięI_2A_C01_U01Potrafi rozwiązywać złożone problemy oparte na tworzeniu współbieżnych aplikacji w Intel TBB i Cilk jak i innych modelach programowania współbieżnego
Odniesienie do efektów kształcenia dla kierunku studiówI_2A_U04Potrafi wykorzystywać poznane metody, techniki i modele do rozwiązywania złożonych problemów
I_2A_U05Potrafi dokonywać analizy i syntezy złożonych systemów z uwzględnieniem ich pozatechnicznego kontekstu
I_2A_U09Ma umiejętność stosowania zaawansowanych technik programowania i metodyki projektowania systemów informatycznych w wybranym obszarze zastosowań
Cel przedmiotuC-1Umiejętność optymalizacji kodu C++ w narzędziach Intela i pakietach rozprosoznych w oparciu o paradygmaty programowania obiektowego
C-3Znajomość bibliotek wspomagających obliczenia numeryczne w tym z zakresu algebry liniowej
Treści programoweT-L-1Wstęp, Intel TBB vs. Openmp i Posix Threads, Prosty program TBB, kompilacja, uruchomienie, konfiguracja środowiska
T-L-2Przypomnienie wiadomości Programowanie obiektowe C++ i STL, kontenery szablonów, wyrażenie Lamba, przeciążanie operatorów.
T-L-3Algorytm TBB parallel for - mnożenie macierzy
T-L-4c.d. lab. 2 Algorytmy cachowania dla parallel for - optymalizacja ustawień i kontrola ziarnistości
T-L-5Algorytmy TBB - reduce i scan - Aplikacje przykłady akademicke
T-L-6Zrównoleglanie pętli warunkowej w TBB
T-L-7Usługi dodatkowe TBB - pomiar czasu, obsługa wyjątków, operacje atomowe
T-L-8Instlacja pakietu CILK- konfiguracja środowiska i przykładowy program równoległy
T-L-9Algorytmy cilk_spawn, cilk_for, cilk_sync
T-L-10Reducers i holders w CILK
T-L-11Zamki i obsługa wyjątków w CILK
T-L-12Demonstracja możliwości rozproszonych pakietów MPI i PVM - instlacja i uruchomienie gotowego programu równoleglego
T-L-13Popularne biblioteki i API (BLAS, LINPACK, LAPACK, Intel MKL, Intel DAAL, openCL, OpenMP, OpenACC, Intel Movidius) - zadania numeryczne
Metody nauczaniaM-2Ćwiczenia laboratoryjne
Sposób ocenyS-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
Kryteria ocenyOcenaKryterium oceny
2,0
3,0Potrafi napisać podstawowe aplikacje współbieżne w dowolnym pakiecie.
3,5Kryteria 3.0 +Potrafi odnaleźć różnice pomiędzy TBB i OpenMP w zasosotowaniu do tworzenia aplikacji obiektowych.
4,0Kryteria 3.5 +Umiejętność doboru odpowiednich algorytmów z pakietów do zadania.
4,5Kryteria 4.0 +Umiejętność testowania kodu i wyciągania wniosków na temat jego jakości.
5,0Kryteria 4.5 +Potrafi napisać sprawozdanie na podstawie otrzymanych wyników i wnioskować w oparciu o poznaną wiedzę teoretyczną.