Zachodniopomorski Uniwersytet Technologiczny w Szczecinie

Wydział Informatyki - Informatyka (S1)

Sylabus przedmiotu Programowanie komputerów heterogenicznych:

Informacje podstawowe

Kierunek studiów Informatyka
Forma studiów studia stacjonarne Poziom pierwszego stopnia
Tytuł zawodowy absolwenta inżynier
Obszary studiów charakterystyki PRK, kompetencje inżynierskie PRK
Profil ogólnoakademicki
Moduł
Przedmiot Programowanie komputerów heterogenicznych
Specjalność Inżynieria oprogramowania
Jednostka prowadząca Katedra Inżynierii Oprogramowania i Cyberbezpieczeństwa
Nauczyciel odpowiedzialny Sławomir Wernikowski <Slawomir.Wernikowski@zut.edu.pl>
Inni nauczyciele Sławomir Wernikowski <Slawomir.Wernikowski@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
wykładyW6 30 2,00,50zaliczenie
laboratoriaL6 30 2,00,50zaliczenie

Wymagania wstępne

KODWymaganie wstępne
W-1Architektura systemów komputerowych
W-2Programowanie 2
W-3Programowanie równoległe i współbieżne

Cele przedmiotu

KODCel modułu/przedmiotu
C-1Zapoznanie słuchaczy z heterogenicznymi środowiskami sprzętowymi.
C-2Wykształcenie umiejętności tworzenia oprogramowania przeznaczonego do pracy w różnorodnych platformach heterogenicznych.

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

KODTreść programowaGodziny
laboratoria
T-L-1Implementacja prostych problemów obliczeniowch z użyciem języka CUDA C/C++8
T-L-2Implementacja złożonych problemów obliczeniowych z wykorzystaniem zaawansowanych środków języka CUDA/C i środowiska CUDA6
T-L-3Implementacja wybranego problemu z wykorzystaniem środków API sterownika NVIDIA CUDA2
T-L-4Implementacja wybranego problemu z wykorzystaniem języka PTX2
T-L-5Implementacja wybranego problemu obliczeniowego z wykorzystaniem OpenACC2
T-L-6Implementacja wybranych problemów obliczeniowych z użyciem środowisk i języków spoza ekosystemu NVIDIA CUDA4
T-L-7Implementacja programu do renderingu obrazu wykorzystującego shadery GLSL do obliczenia koloru powierzchni4
T-L-8Implementacja programu przetwarzającego teksturę OpenGL w środowisku OpenCLa2
30
wykłady
T-W-1Wprowadzenie do programowania w środowiskach heterogenicznych: podstawowe pojęcia, tło historyczne, taksonomie, problemy i rozwiązania, charakterystyka wybranych środowisk heterogenicznych2
T-W-2Wprowadzenie do programowania języku CUDA C/C++, podstawy architektury i historia rozwoju urządzeń CUDA, CUDA SDK, transfery danych, tworzenie i uruchamianie kerneli6
T-W-3Zaawansowane techniki programowania w środowisku CUDA C/C++, hierarchia pamięci urządzeń CUDA, mapowanie pamięci, obsługa błędów, programowanie asynchroniczne, dokładność obliczeń, operacje atomowe, szczegóły architektury SIMT4
T-W-4Programowanie na poziomie API sterownika środowiska CUDA2
T-W-5Programowanie w języku PTX2
T-W-6Programowanie w środowisku OpenACC: wprowadzenie, aparat pojęciowy, prezentacja rozwiązań przykładowych2
T-W-7Programowanie hetorogeniczne z użyciem innych środków i języków programowania (Java, Python, Fortran)4
T-W-8Programowanie w języku GLSL: Wprowadzenie do języka GLSL (kompilacja, uruchamianie w środowisku programu graficznego, narzędzia programistyczne)2
T-W-9Programowanie w języku GLSL: Podstawowe składniki języka na przykładzie programu obliczającego równanie oświetlenia2
T-W-10Przetwarzanie obrazów w środowisku OpenCL: Techniki reprezentacji i przetwarzania obrazów w środowisku OpenCL2
T-W-11Zaliczenie2
30

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

KODForma aktywnościGodziny
laboratoria
A-L-1Uczestnictwo w zajęciach30
A-L-2Praca własna20
50
wykłady
A-W-1Uczestnictwo w zajęciach30
A-W-2Praca własna18
A-W-3Udział w konsultacjach2
50

Metody nauczania / narzędzia dydaktyczne

KODMetoda nauczania / narzędzie dydaktyczne
M-1Wykład informacyjno-konwersatoryjny
M-2Ćwiczenia laboratoryjne

Sposoby oceny

KODSposób oceny
S-1Ocena formująca: Ocena na podstawie stopnia wykonania scenariuszy konspektów laboratoryjnych, wymagań projektowych i/lub sprawozdania z zajec
S-2Ocena podsumowująca: Egzamin (pytania zamknięte oraz otwarte)

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
Itest_1A_D03.05_W01
Student rozumie techniki konstrukcji, specyfikę i charakterystykę środowisk heterogenicznych oraz zna wybrane języki programowania stosowane w środowiskach heterogenicznych
I_1A_W04, I_1A_W02, I_1A_W03C-1, C-2T-W-1, T-W-3, T-W-6, T-W-5, T-W-11, T-W-10, T-W-8, T-W-2, T-W-9, T-W-4, 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
Itest_1A_D03.05_U01
potrafi pisać, uruchamiać i profilować programy przeznaczone do pracy w środowiskach heterogenicznych
I_1A_U05, I_1A_U07, I_1A_U04, I_1A_U06C-2T-L-1, T-L-5, T-L-7, T-L-8, T-W-4, T-W-6, T-W-7, T-W-8, T-W-9, T-W-10, T-W-2M-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
Itest_1A_D03.05_K01
Student jest kreatywny i przygotowany do wykorzystywania różnorodnych źródeł wiedzy
I_1A_K01C-2T-L-1, T-L-5, T-L-7, T-L-8, T-W-1, T-W-3, T-W-4, T-W-6, T-W-7, T-W-8, T-W-9, T-W-10, T-W-2M-2S-1

Kryterium oceny - wiedza

Efekt uczenia sięOcenaKryterium oceny
Itest_1A_D03.05_W01
Student rozumie techniki konstrukcji, specyfikę i charakterystykę środowisk heterogenicznych oraz zna wybrane języki programowania stosowane w środowiskach heterogenicznych
2,0
3,0potrafi wymienić podstawowe charakterystyki środowisk heterogenicznych oraz rozumie techniki programowania heterogenicznego i potrafi czytać kod zapisany w wybranych językach programowania heterogenicznego
3,5
4,0potrafi wymienić dowolne charakterystyki środowisk heterogenicznych oraz zna techniki programowania heterogenicznego i potrafi pisać kod zapisany w wybranych językach programowania heterogenicznego
4,5
5,0zna wybrane konkretne środowiska heterogeniczne oraz biegle zna techniki programowania heterogenicznego i potrafi pisać kod zapisany we wszystkich omówionych językach programowania heterogenicznego

Kryterium oceny - umiejętności

Efekt uczenia sięOcenaKryterium oceny
Itest_1A_D03.05_U01
potrafi pisać, uruchamiać i profilować programy przeznaczone do pracy w środowiskach heterogenicznych
2,0
3,0potrafi czytać oraz pisać proste programy przeznaczone do pracy w środowiskach heterogenicznych
3,5
4,0potrafi czytać oraz pisać dowolne programy przeznaczone do pracy w środowiskach heterogenicznych
4,5
5,0biegle potrafi czytać oraz pisać dowolne programy przeznaczone do pracy w środowiskach heterogenicznych

Kryterium oceny - inne kompetencje społeczne i personalne

Efekt uczenia sięOcenaKryterium oceny
Itest_1A_D03.05_K01
Student jest kreatywny i przygotowany do wykorzystywania różnorodnych źródeł wiedzy
2,0
3,0dostateczna umiejętność samodzielnego szukania i wykorzystania informacji, wymaga bardzo częstej pomocy nauczyciela
3,5
4,0dobra umiejętność samodzielnego szukania i wykorzystania informacji, wymaga rzadkiej pomocy nauczyciela
4,5
5,0wyróżniająca umiejętność samodzielnego szukania i wykorzystania informacji, potrafi bez pomocy nauczyciela wykonać wszystkie ćwiczenia laboratoryjne zgodnie z otrzymanymi konspektami

Literatura podstawowa

  1. R. Gerber, Getting Started with OpenMP, Intel, https://software.intel.com/en-us/articles/getting-started-with-openmp
  2. R.J. Rost, OpenGL Shading Language, Addison-Wesley
  3. NVidia, CUDA C Programming Guide, http://docs.nvidia.com/cuda/pdf/CUDA_C_Programming_Guide.pd

Literatura dodatkowa

  1. OpenMP Architecture Review Board, OpenMP Application Programming Interface, http://www.openmp.org/wp-content/uploads/openmp-4.5.pdf
  2. Khronos OpenCL Working Group, The OpenCL Specification, https://www.khronos.org/registry/OpenCL/specs/opencl-1.1.pdf

Treści programowe - laboratoria

KODTreść programowaGodziny
T-L-1Implementacja prostych problemów obliczeniowch z użyciem języka CUDA C/C++8
T-L-2Implementacja złożonych problemów obliczeniowych z wykorzystaniem zaawansowanych środków języka CUDA/C i środowiska CUDA6
T-L-3Implementacja wybranego problemu z wykorzystaniem środków API sterownika NVIDIA CUDA2
T-L-4Implementacja wybranego problemu z wykorzystaniem języka PTX2
T-L-5Implementacja wybranego problemu obliczeniowego z wykorzystaniem OpenACC2
T-L-6Implementacja wybranych problemów obliczeniowych z użyciem środowisk i języków spoza ekosystemu NVIDIA CUDA4
T-L-7Implementacja programu do renderingu obrazu wykorzystującego shadery GLSL do obliczenia koloru powierzchni4
T-L-8Implementacja programu przetwarzającego teksturę OpenGL w środowisku OpenCLa2
30

Treści programowe - wykłady

KODTreść programowaGodziny
T-W-1Wprowadzenie do programowania w środowiskach heterogenicznych: podstawowe pojęcia, tło historyczne, taksonomie, problemy i rozwiązania, charakterystyka wybranych środowisk heterogenicznych2
T-W-2Wprowadzenie do programowania języku CUDA C/C++, podstawy architektury i historia rozwoju urządzeń CUDA, CUDA SDK, transfery danych, tworzenie i uruchamianie kerneli6
T-W-3Zaawansowane techniki programowania w środowisku CUDA C/C++, hierarchia pamięci urządzeń CUDA, mapowanie pamięci, obsługa błędów, programowanie asynchroniczne, dokładność obliczeń, operacje atomowe, szczegóły architektury SIMT4
T-W-4Programowanie na poziomie API sterownika środowiska CUDA2
T-W-5Programowanie w języku PTX2
T-W-6Programowanie w środowisku OpenACC: wprowadzenie, aparat pojęciowy, prezentacja rozwiązań przykładowych2
T-W-7Programowanie hetorogeniczne z użyciem innych środków i języków programowania (Java, Python, Fortran)4
T-W-8Programowanie w języku GLSL: Wprowadzenie do języka GLSL (kompilacja, uruchamianie w środowisku programu graficznego, narzędzia programistyczne)2
T-W-9Programowanie w języku GLSL: Podstawowe składniki języka na przykładzie programu obliczającego równanie oświetlenia2
T-W-10Przetwarzanie obrazów w środowisku OpenCL: Techniki reprezentacji i przetwarzania obrazów w środowisku OpenCL2
T-W-11Zaliczenie2
30

Formy aktywności - laboratoria

KODForma aktywnościGodziny
A-L-1Uczestnictwo w zajęciach30
A-L-2Praca własna20
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-2Praca własna18
A-W-3Udział w konsultacjach2
50
(*) 1 punkt ECTS, odpowiada około 30 godzinom aktywności studenta
PoleKODZnaczenie kodu
Zamierzone efekty uczenia sięItest_1A_D03.05_W01Student rozumie techniki konstrukcji, specyfikę i charakterystykę środowisk heterogenicznych oraz zna wybrane języki programowania stosowane w środowiskach heterogenicznych
Odniesienie do efektów kształcenia dla kierunku studiówI_1A_W04Ma wiedzę o stanie obecnym i kierunkach rozwoju kluczowych obszarów informatyki i wybranych aspektów dyscyplin z otoczenia informatyki.
I_1A_W02Ma zaawansowaną i uporządkowaną, podbudowaną teoretycznie wiedzę ogólną obejmującą kluczowe zagadnienia z zakresu fundamentalnych obszarów informatyki.
I_1A_W03Ma szczegółową wiedzę w zakresie wybranych specjalności informatyki technicznej.
Cel przedmiotuC-1Zapoznanie słuchaczy z heterogenicznymi środowiskami sprzętowymi.
C-2Wykształcenie umiejętności tworzenia oprogramowania przeznaczonego do pracy w różnorodnych platformach heterogenicznych.
Treści programoweT-W-1Wprowadzenie do programowania w środowiskach heterogenicznych: podstawowe pojęcia, tło historyczne, taksonomie, problemy i rozwiązania, charakterystyka wybranych środowisk heterogenicznych
T-W-3Zaawansowane techniki programowania w środowisku CUDA C/C++, hierarchia pamięci urządzeń CUDA, mapowanie pamięci, obsługa błędów, programowanie asynchroniczne, dokładność obliczeń, operacje atomowe, szczegóły architektury SIMT
T-W-6Programowanie w środowisku OpenACC: wprowadzenie, aparat pojęciowy, prezentacja rozwiązań przykładowych
T-W-5Programowanie w języku PTX
T-W-11Zaliczenie
T-W-10Przetwarzanie obrazów w środowisku OpenCL: Techniki reprezentacji i przetwarzania obrazów w środowisku OpenCL
T-W-8Programowanie w języku GLSL: Wprowadzenie do języka GLSL (kompilacja, uruchamianie w środowisku programu graficznego, narzędzia programistyczne)
T-W-2Wprowadzenie do programowania języku CUDA C/C++, podstawy architektury i historia rozwoju urządzeń CUDA, CUDA SDK, transfery danych, tworzenie i uruchamianie kerneli
T-W-9Programowanie w języku GLSL: Podstawowe składniki języka na przykładzie programu obliczającego równanie oświetlenia
T-W-4Programowanie na poziomie API sterownika środowiska CUDA
T-W-7Programowanie hetorogeniczne z użyciem innych środków i języków programowania (Java, Python, Fortran)
Metody nauczaniaM-1Wykład informacyjno-konwersatoryjny
Sposób ocenyS-2Ocena podsumowująca: Egzamin (pytania zamknięte oraz otwarte)
Kryteria ocenyOcenaKryterium oceny
2,0
3,0potrafi wymienić podstawowe charakterystyki środowisk heterogenicznych oraz rozumie techniki programowania heterogenicznego i potrafi czytać kod zapisany w wybranych językach programowania heterogenicznego
3,5
4,0potrafi wymienić dowolne charakterystyki środowisk heterogenicznych oraz zna techniki programowania heterogenicznego i potrafi pisać kod zapisany w wybranych językach programowania heterogenicznego
4,5
5,0zna wybrane konkretne środowiska heterogeniczne oraz biegle zna techniki programowania heterogenicznego i potrafi pisać kod zapisany we wszystkich omówionych językach programowania heterogenicznego
PoleKODZnaczenie kodu
Zamierzone efekty uczenia sięItest_1A_D03.05_U01potrafi pisać, uruchamiać i profilować programy przeznaczone do pracy w środowiskach heterogenicznych
Odniesienie do efektów kształcenia dla kierunku studiówI_1A_U05Potrafi zaplanować i zrealizować eksperymenty w zakresie oceny wydajności, złożoności, efektywności systemów informatycznych i ich składowych.
I_1A_U07Potrafi samodzielnie posługiwać się materiałami źródłowymi w zakresie analizy i syntezy zawartych w nich informacji oraz poddawać je krytycznej ocenie w odniesieniu do problemów informatycznych.
I_1A_U04Potrafi identyfikować związki i zależności w procesach zachodzących w systemach rzeczywistych i na tej podstawie tworzyć modele komputerowe oraz przeprowadzać ich symulacje.
I_1A_U06Potrafi pozyskiwać, przesyłać, przetwarzać dane, podsumowywać wyniki eksperymentów empirycznych, dokonywać interpretacji uzyskanych wyników i formułować wynikające z nich wnioski.
Cel przedmiotuC-2Wykształcenie umiejętności tworzenia oprogramowania przeznaczonego do pracy w różnorodnych platformach heterogenicznych.
Treści programoweT-L-1Implementacja prostych problemów obliczeniowch z użyciem języka CUDA C/C++
T-L-5Implementacja wybranego problemu obliczeniowego z wykorzystaniem OpenACC
T-L-7Implementacja programu do renderingu obrazu wykorzystującego shadery GLSL do obliczenia koloru powierzchni
T-L-8Implementacja programu przetwarzającego teksturę OpenGL w środowisku OpenCLa
T-W-4Programowanie na poziomie API sterownika środowiska CUDA
T-W-6Programowanie w środowisku OpenACC: wprowadzenie, aparat pojęciowy, prezentacja rozwiązań przykładowych
T-W-7Programowanie hetorogeniczne z użyciem innych środków i języków programowania (Java, Python, Fortran)
T-W-8Programowanie w języku GLSL: Wprowadzenie do języka GLSL (kompilacja, uruchamianie w środowisku programu graficznego, narzędzia programistyczne)
T-W-9Programowanie w języku GLSL: Podstawowe składniki języka na przykładzie programu obliczającego równanie oświetlenia
T-W-10Przetwarzanie obrazów w środowisku OpenCL: Techniki reprezentacji i przetwarzania obrazów w środowisku OpenCL
T-W-2Wprowadzenie do programowania języku CUDA C/C++, podstawy architektury i historia rozwoju urządzeń CUDA, CUDA SDK, transfery danych, tworzenie i uruchamianie kerneli
Metody nauczaniaM-2Ćwiczenia laboratoryjne
Sposób ocenyS-1Ocena formująca: Ocena na podstawie stopnia wykonania scenariuszy konspektów laboratoryjnych, wymagań projektowych i/lub sprawozdania z zajec
Kryteria ocenyOcenaKryterium oceny
2,0
3,0potrafi czytać oraz pisać proste programy przeznaczone do pracy w środowiskach heterogenicznych
3,5
4,0potrafi czytać oraz pisać dowolne programy przeznaczone do pracy w środowiskach heterogenicznych
4,5
5,0biegle potrafi czytać oraz pisać dowolne programy przeznaczone do pracy w środowiskach heterogenicznych
PoleKODZnaczenie kodu
Zamierzone efekty uczenia sięItest_1A_D03.05_K01Student jest kreatywny i przygotowany do wykorzystywania różnorodnych źródeł wiedzy
Odniesienie do efektów kształcenia dla kierunku studiówI_1A_K01Jest gotów do krytycznej oceny posiadanej wiedzy oraz ma świadomość jej znaczenia w procesie rozwiązywania szeregu problemów inżynierskich i technicznych w dziedzinie informatyki.
Cel przedmiotuC-2Wykształcenie umiejętności tworzenia oprogramowania przeznaczonego do pracy w różnorodnych platformach heterogenicznych.
Treści programoweT-L-1Implementacja prostych problemów obliczeniowch z użyciem języka CUDA C/C++
T-L-5Implementacja wybranego problemu obliczeniowego z wykorzystaniem OpenACC
T-L-7Implementacja programu do renderingu obrazu wykorzystującego shadery GLSL do obliczenia koloru powierzchni
T-L-8Implementacja programu przetwarzającego teksturę OpenGL w środowisku OpenCLa
T-W-1Wprowadzenie do programowania w środowiskach heterogenicznych: podstawowe pojęcia, tło historyczne, taksonomie, problemy i rozwiązania, charakterystyka wybranych środowisk heterogenicznych
T-W-3Zaawansowane techniki programowania w środowisku CUDA C/C++, hierarchia pamięci urządzeń CUDA, mapowanie pamięci, obsługa błędów, programowanie asynchroniczne, dokładność obliczeń, operacje atomowe, szczegóły architektury SIMT
T-W-4Programowanie na poziomie API sterownika środowiska CUDA
T-W-6Programowanie w środowisku OpenACC: wprowadzenie, aparat pojęciowy, prezentacja rozwiązań przykładowych
T-W-7Programowanie hetorogeniczne z użyciem innych środków i języków programowania (Java, Python, Fortran)
T-W-8Programowanie w języku GLSL: Wprowadzenie do języka GLSL (kompilacja, uruchamianie w środowisku programu graficznego, narzędzia programistyczne)
T-W-9Programowanie w języku GLSL: Podstawowe składniki języka na przykładzie programu obliczającego równanie oświetlenia
T-W-10Przetwarzanie obrazów w środowisku OpenCL: Techniki reprezentacji i przetwarzania obrazów w środowisku OpenCL
T-W-2Wprowadzenie do programowania języku CUDA C/C++, podstawy architektury i historia rozwoju urządzeń CUDA, CUDA SDK, transfery danych, tworzenie i uruchamianie kerneli
Metody nauczaniaM-2Ćwiczenia laboratoryjne
Sposób ocenyS-1Ocena formująca: Ocena na podstawie stopnia wykonania scenariuszy konspektów laboratoryjnych, wymagań projektowych i/lub sprawozdania z zajec
Kryteria ocenyOcenaKryterium oceny
2,0
3,0dostateczna umiejętność samodzielnego szukania i wykorzystania informacji, wymaga bardzo częstej pomocy nauczyciela
3,5
4,0dobra umiejętność samodzielnego szukania i wykorzystania informacji, wymaga rzadkiej pomocy nauczyciela
4,5
5,0wyróżniająca umiejętność samodzielnego szukania i wykorzystania informacji, potrafi bez pomocy nauczyciela wykonać wszystkie ćwiczenia laboratoryjne zgodnie z otrzymanymi konspektami