Zachodniopomorski Uniwersytet Technologiczny w Szczecinie

Wydział Informatyki - Informatyka (N1)

Sylabus przedmiotu Programowanie kart graficznych - Przedmiot obieralny IV:

Informacje podstawowe

Kierunek studiów Informatyka
Forma studiów studia niestacjonarne Poziom pierwszego stopnia
Tytuł zawodowy absolwenta inżynier
Obszary studiów nauki techniczne, studia inżynierskie
Profil ogólnoakademicki
Moduł
Przedmiot Programowanie kart graficznych - Przedmiot obieralny IV
Specjalność systemy komputerowe i oprogramowanie
Jednostka prowadząca Katedra Inżynierii Oprogramowania
Nauczyciel odpowiedzialny Sławomir Wernikowski <Slawomir.Wernikowski@zut.edu.pl>
Inni nauczyciele Sławomir Wernikowski <Slawomir.Wernikowski@zut.edu.pl>
ECTS (planowane) 2,0 ECTS (formy) 2,0
Forma zaliczenia zaliczenie Język polski
Blok obieralny 7 Grupa obieralna 4

Formy dydaktyczne

Forma dydaktycznaKODSemestrGodzinyECTSWagaZaliczenie
laboratoriaL6 10 1,10,38zaliczenie
wykładyW6 10 0,90,62zaliczenie

Wymagania wstępne

KODWymaganie wstępne
W-1biegła umiejętność programowania w języku C/C++
W-2umiejętnośc pracy w środowisku Linux
W-3znajomość podstawowych mechanizmów programowania równoległego
W-4pożądana znajomość OpenGL

Cele przedmiotu

KODCel modułu/przedmiotu
C-1wiedza nt. architektury sprzętowej CUDA i modelu SIMT
C-2umiejętność użycia języka CUDA C/C++ do celów zrównoleglania obliczeń i konstruowania aplikacji graficznych
C-3bazowa umiejętność posługiwania się językiem PTX
C-4umiejętność korzystania z narzędzi pakietu CUDA SDK

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

KODTreść programowaGodziny
laboratoria
T-L-1Przygotowanie środowiska pracy; Zapoznanie z narzędziami z pakietu CUDA SDK; Kompilacja i uruchomienie gotowego programu przykładowego; Prosta modyfikacja zaprezentowanego kodu; Konfiguracja środowiska do pracy zdalnej;1
T-L-2Implementacja wybranego algorytmu w formie sekwencyjnej (CPU) i równoległej (GPU); Badania wydajności obu rozwiązań w zależności od rozmiaru zagadnienia obliczeniowego2
T-L-3Przetwarzanie obrazów rastrowych w sposób sekwencyjny (CPU) i równoległy (GPU); Badania wydajności obu rozwiązań w zależności od rozmiaru i struktury obrazu;1
T-L-4Implementacja wybranego zestawu zadań (punktowanych indywidualnie) z wykorzystaniem CUDA C1
T-L-5Implementacja rozwiązania zadania obliczeniowego z użyciem interfejsu API sterownika CUDA;1
T-L-6Implementacja rozwiązania zadania obliczeniowego z użyciem języka PTX;1
T-L-7Projekt i implementacja programu demo ilustrującego wykorzystanie interfejsu CUDA OpenGL;3
10
wykłady
T-W-1Wprowadzenie do programowania w technologii NVIDIA CUDA: terminologia, rys historyczny, charakterystyka technologii, organizacja pamięci, konwencje API, narzędzia programisty, wątki, dialekt CUDA C1
T-W-2Architektura i API (część 1): model architektury CUDA, składnia i semantyka rozszerzeń języka CUDA C, hierarchia wątków, hierarchia pamięci, struktura kodu wynikowego kompilatora NVCC, przegląd podstawowych usług CUDA API1
T-W-3Architektura i API (część 2): zarządzanie pamięcią urządzenia CUDA, przykład - mnożenie macierzy, współpraca wielu urządzeń CUDA1
T-W-4Architektura i API (część 3): tryby pracy pamięci urządzenia CUDA, mapowanie pamięci, ciąg dalszy prezentacji funkcji API, praca asynchroniczna, strumienie wątków, zdarzenia,2
T-W-5Sprzęt i obliczenia: szczegóły implementacji sprzętowej, architektura SIMT, organizowanie współpracy wątków, możliwości architektury w zależności od CC, implementacja arytmetyki zmiennoprzecinkowej, dokładność obliczeń, odwijanie pętli1
T-W-6Podstawy programowania na poziomie API sterownika: zaawansowane wykorzystanie kompilatora NVCC, fazy pracy NVCC, poziomy abstrakcji kodu źródłowego, konstrukcja kodu wykorzystującego API sterownika, przykładowy program2
T-W-7Język PTX: składnia, typy danych, deklaracje danych skalarnych i tablicowych, konwencje nazewnicze, elementarny pozdbiór listy rozkazów, komunikacja z kodem hosta, kompletny przykład rozwiązania problemu za pomocą języka PTX1
T-W-8Grafika: CUDA a OpenGL, rejestracja zasobów, osobliwości API, wybrany podzbiór funkcji, kompletny przykładowy program1
10

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

KODForma aktywnościGodziny
laboratoria
A-L-1uczestnictwo w zajęciach laboratoryjnych10
A-L-2indywidualne przygotowanie do zajęć laboratoryjnych9
A-L-3implementacja zadań laboratoryjnych (praca zdalna)12
A-L-4konsultacje (osobiste)2
33
wykłady
A-W-1udział w wykładach10
A-W-2samodzielne studiowanie tematyki wykładów17
27

Metody nauczania / narzędzia dydaktyczne

KODMetoda nauczania / narzędzie dydaktyczne
M-1wykład problemowy
M-2wykład informacyjny
M-3ćwiczenia laboratoryjne (praca on-site)
M-4ćwiczenia laboratoryjne (praca off-site)

Sposoby oceny

KODSposób oceny
S-1Ocena formująca: ocena zgodności wykonanych zadań laboratoryjnych ze specyfikacją wymagań
S-2Ocena formująca: ocena poprawności implementacji na podstawie wyników testów akceptacyjnych
S-3Ocena podsumowująca: kolokwium zaliczeniowe (test wielokrotnego wyboru)

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łceniaOdniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżynieraCel przedmiotuTreści programoweMetody nauczaniaSposób oceny
I_1A_O/2/7_W01
wiedza nt. architektury SIMT i jej implementacji pod postacią rozwiązania NVIDIA CUDA
I_1A_W10, I_1A_W14C-1T-W-4, T-W-3, T-W-2M-2, M-1S-3
I_1A_O/2/7_W02
wiedza w zakresie składni i semantyki języka programowania CUDA C/C++
I_1A_W05, I_1A_W06C-2T-W-6, T-W-8, T-W-7M-2, M-1S-3

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łceniaOdniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżynieraCel przedmiotuTreści programoweMetody nauczaniaSposób oceny
I_1A_O/2/7_U01
posługiwanie się firmową dokumentacją dostarczoną przez producenta sprzętu implementującego architekturę CUDA
I_1A_U13C-2T-L-1M-4, M-3S-2, S-1
I_1A_O/2/7_U02
posługiwanie się narzędziami CUDA SDK
I_1A_U17, I_1A_U03C-4T-L-1, T-L-2M-2, M-1, M-3S-2, S-1
I_1A_O/2/7_U03
implementacja wydajnego kodu równoległego wykorzystującego możliwości architektury SIMT
I_1A_U19, I_1A_U15C-4, C-2T-L-3, T-L-5, T-L-4, T-L-7M-2, M-4, M-1, M-3S-2, S-1
I_1A_O/2/7_U04
generowanie grafiki w środowisku SIMT
I_1A_U14C-2T-L-7M-2, M-4, M-1, M-3S-2, S-1

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łceniaOdniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżynieraCel przedmiotuTreści programoweMetody nauczaniaSposób oceny
I_1A_O/2/7_K01
rozwiązywanie problemów implementacyjnych z użyciem dokumentacji firmowej
I_1A_K01C-4M-4, M-3S-2, S-1
I_1A_O/2/7_K02
praca grupowa on-site i off-site
I_1A_K03C-2M-4, M-3S-2, S-1

Kryterium oceny - wiedza

Efekt kształceniaOcenaKryterium oceny
I_1A_O/2/7_W01
wiedza nt. architektury SIMT i jej implementacji pod postacią rozwiązania NVIDIA CUDA
2,0niespełnienie kryteriów uzyskania oceny 3.0
3,0znajomość cech wyróżniających architekturę SIMT i implementację CUDA
3,5biegła znajomość cech wyróżniających architekturę SIMT i implementację CUDA
4,0biegła znajomość cech wyróżniających architekturę SIMT i implementację CUDA; zdolność do objaśnienia mechanizmów współdziałania elementów architektury CUDA
4,5biegła znajomość cech wyróżniających architekturę SIMT i implementację CUDA; biegłość w objaśnianiu mechanizmów współdziałania elementów architektury CUDA
5,0biegła znajomość cech wyróżniających architekturę SIMT i implementację CUDA; biegłość w objaśnianiu mechanizmów współdziałania elementów architektury CUDA; zdolność wybierania/odrzucania poszczególnych udogodnień architektury CUDA do rozwiązywania określonych problemów obliczeniowych
I_1A_O/2/7_W02
wiedza w zakresie składni i semantyki języka programowania CUDA C/C++
2,0niespełnienie kryteriów uzyskania oceny 3,0
3,0znajomość składni języka CUDA/C i typowych zastosowań
3,5biegła znajomość składni języka CUDA/C i typowych zastosowań
4,0biegła znajomość składni języka CUDA/C i typowych zastosowań; podstawowa znajomość semantyki języka CUDA/C
4,5biegła znajomość składni języka CUDA/C i typowych zastosowań; biegla znajomość semantyki języka CUDA/C
5,0biegła znajomość składni języka CUDA/C i typowych zastosowań; biegla znajomość semantyki języka CUDA/C; znajomość udogodnień NVIDIA CUDA SDK

Kryterium oceny - umiejętności

Efekt kształceniaOcenaKryterium oceny
I_1A_O/2/7_U01
posługiwanie się firmową dokumentacją dostarczoną przez producenta sprzętu implementującego architekturę CUDA
2,0niespełnienie kryteriów uzyskania oceny 3,0
3,0podstawowa znajomość struktury i wersjonowania dokumentacji firmowej
3,5biegła znajomość struktury i wersjonowania dokumentacji firmowej
4,0biegła znajomość struktury i wersjonowania dokumentacji firmowej; posługiwanie się wskazaną dokumentacją przy rozwiązywaniu zadań
4,5biegła znajomość struktury i wersjonowania dokumentacji firmowej; biegłe posługiwanie się wskazaną dokumentacją przy rozwiązywaniu zadań
5,0biegła znajomość struktury i wersjonowania dokumentacji firmowej; biegłe posługiwanie się wskazaną dokumentacją przy rozwiązywaniu zadań; wyszukiwanie w dokumentacji informacji nieudostępnionej w inny sposób przy rozwiązywaniu zadań
I_1A_O/2/7_U02
posługiwanie się narzędziami CUDA SDK
2,0niespełnienie kryteriów uzyskania oceny 3,0
3,0umiejętność wykorzystania podstawowych narzędzi CUDA SDK i dopasowywanie typowej konfiguracji do rozwiązywania postawionych zadań
3,5biegła umiejętność wykorzystania podstawowych narzędzi CUDA SDK i dopasowywanie typowej konfiguracji do rozwiązywania postawionych zadań
4,0biegła umiejętność wykorzystania podstawowych narzędzi CUDA SDK i dopasowywanie typowej konfiguracji do rozwiązywania postawionych zadań; umiejętność budowania własnej niestandardowej konfiguracji
4,5biegła umiejętność wykorzystania podstawowych narzędzi CUDA SDK i dopasowywanie typowej konfiguracji do rozwiązywania postawionych zadań; biegła umiejętność budowania własnej niestandardowej konfiguracji
5,0biegła umiejętność wykorzystania podstawowych narzędzi CUDA SDK i dopasowywanie typowej konfiguracji do rozwiązywania postawionych zadań; biegła umiejętność budowania własnej niestandardowej konfiguracji; umiejętnośc budowania złożonych frameworków z użyciem narzędzi CUDA SDK
I_1A_O/2/7_U03
implementacja wydajnego kodu równoległego wykorzystującego możliwości architektury SIMT
2,0niespełnienie kryteriów uzyskania oceny 3,0
3,0umiejętnośc posługiwania się udostępnionym kodem w celu jego powtórnego wykorzystania do rozwiązania typowych zadań
3,5biegła umiejętnośc posługiwania się udostępnionym kodem w celu jego powtórnego wykorzystania do rozwiązania typowych zadań
4,0biegła umiejętnośc posługiwania się udostępnionym kodem w celu jego powtórnego wykorzystania do rozwiązania typowych zadań; umiejętność samodzielnej implementacji algorytmów w środowisku CUDA do rozwiązanie postawionych zadań
4,5biegła umiejętnośc posługiwania się udostępnionym kodem w celu jego powtórnego wykorzystania do rozwiązania typowych zadań; biegła umiejętność samodzielnej implementacji algorytmów w środowisku CUDA do rozwiązanie postawionych zadań
5,0biegła umiejętnośc posługiwania się udostępnionym kodem w celu jego powtórnego wykorzystania do rozwiązania typowych zadań; biegła umiejętność samodzielnej implementacji algorytmów w środowisku CUDA do rozwiązanie postawionych zadań; umiejętność wiarygodnej ewaluacji wydajności zaimplementowanych rozwiązań
I_1A_O/2/7_U04
generowanie grafiki w środowisku SIMT
2,0niespełnienie kryteriów uzyskania oceny 3,0
3,0umiejętnośc posługiwania się udostępnionym kodem w celu jego powtórnego wykorzystania do rozwiązania typowych zadań
3,5biegła umiejętnośc posługiwania się udostępnionym kodem w celu jego powtórnego wykorzystania do rozwiązania typowych zadań
4,0umiejętnośc posługiwania się udostępnionym kodem w celu jego powtórnego wykorzystania do rozwiązania typowych zadań; umiejętność samodzielnej implementacji algorytmów w środowisku CUDA do rozwiązanie postawionych zadań
4,5umiejętnośc posługiwania się udostępnionym kodem w celu jego powtórnego wykorzystania do rozwiązania typowych zadań; biegła umiejętność samodzielnej implementacji algorytmów w środowisku CUDA do rozwiązanie postawionych zadań
5,0umiejętnośc posługiwania się udostępnionym kodem w celu jego powtórnego wykorzystania do rozwiązania typowych zadań; biegła umiejętność samodzielnej implementacji algorytmów w środowisku CUDA do rozwiązanie postawionych zadań; umiejętność wiarygodnej ewaluacji wydajności zaimplementowanych rozwiązań

Kryterium oceny - inne kompetencje społeczne i personalne

Efekt kształceniaOcenaKryterium oceny
I_1A_O/2/7_K01
rozwiązywanie problemów implementacyjnych z użyciem dokumentacji firmowej
2,0niespełnienie kryteriów uzyskania oceny 3,0
3,0stosowanie wskazanych fragmentów dokumentacji firmowej do rozwiązywania postawionych zadań
3,5biegłe stosowanie wskazanych fragmentów dokumentacji firmowej do rozwiązywania postawionych zadań
4,0biegłe stosowanie wskazanych fragmentów dokumentacji firmowej do rozwiązywania postawionych zadań; weryfikowanie przydatności wskazanych fragmentów dokumentacji firmowej do rozwiązywania postawionych zadań
4,5biegłe stosowanie wskazanych fragmentów dokumentacji firmowej do rozwiązywania postawionych zadań; biegłe weryfikowanie przydatności wskazanych fragmentów dokumentacji firmowej do rozwiązywania postawionych zadań
5,0biegłe stosowanie wskazanych fragmentów dokumentacji firmowej do rozwiązywania postawionych zadań; biegłe weryfikowanie przydatności wskazanych fragmentów dokumentacji firmowej do rozwiązywania postawionych zadań;wyszukiwanie informacji nieudostępnionej w inny sposób do rozwiązywania postawionych zadań
I_1A_O/2/7_K02
praca grupowa on-site i off-site
2,0niespełnienie kryteriów uzyskania oceny 3,0
3,0wykazywanie aktywnej postawy przy analizie i projektowaniu rozwiązania postawionego problemu
3,5wykazywanie wyróżniejącej aktywnej postawy przy analizie i projektowaniu rozwiązania postawionego problemu
4,0wykazywanie wyróżniejącej aktywnej postawy przy analizie i projektowaniu rozwiązania postawionego problemu; wykazywanie aktywnej postawy przy implementacji rozwiązania postawionego problemu
4,5wykazywanie wyróżniejącej aktywnej postawy przy analizie i projektowaniu rozwiązania postawionego problemu; wykazywanie wyróżniającej aktywnej postawy przy implementacji rozwiązania postawionego problemu
5,0wykazywanie wyróżniejącej aktywnej postawy przy analizie i projektowaniu rozwiązania postawionego problemu; wykazywanie wyróżniającej aktywnej postawy przy implementacji rozwiązania postawionego problemu;wykazywanie aktywnej postawy przy testowaniu i badaniu wydajności rozwiązania postawionego problemu

Literatura podstawowa

  1. NVIDIA Corp., NVIDIA CUDA C Programming Guide, NVIDIA Corp., Santa Clara, 2011, 4, http://developer.download.nvidia.com/compute/cuda/4_0/toolkit/docs/CUDA_C_Programming_Guide.pdf
  2. NVIDIA Corp., CUDA API Reference Manual, NVIDIA Corp., Santa Clara, 2011, 4, http://developer.download.nvidia.com/compute/cuda/4_0/toolkit/docs/CUDA_Toolkit_Reference_Manual.pdf
  3. NVIDIA Corp., The CUDA Compiler Driver NVCC, NVIDIA Corp., Santa Clara, 2011, 4, http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/nvcc.pdf

Literatura dodatkowa

  1. NVIDIA Corp., CUDA C Best Practices Guide, NVIDIA Corp., Santa Clara, 2011, 4, http://developer.download.nvidia.com/compute/cuda/4_0_rc2/toolkit/docs/CUDA_C_Best_Practices_Guide.pdf
  2. NVIDIA Corp, PTX: Parallel Thread Execution ISA, NVIDIA Corp., Santa Clara, 2011, 2,3, http://developer.download.nvidia.com/compute/cuda/4_0_rc2/toolkit/docs/ptx_isa_2.3.pdf

Treści programowe - laboratoria

KODTreść programowaGodziny
T-L-1Przygotowanie środowiska pracy; Zapoznanie z narzędziami z pakietu CUDA SDK; Kompilacja i uruchomienie gotowego programu przykładowego; Prosta modyfikacja zaprezentowanego kodu; Konfiguracja środowiska do pracy zdalnej;1
T-L-2Implementacja wybranego algorytmu w formie sekwencyjnej (CPU) i równoległej (GPU); Badania wydajności obu rozwiązań w zależności od rozmiaru zagadnienia obliczeniowego2
T-L-3Przetwarzanie obrazów rastrowych w sposób sekwencyjny (CPU) i równoległy (GPU); Badania wydajności obu rozwiązań w zależności od rozmiaru i struktury obrazu;1
T-L-4Implementacja wybranego zestawu zadań (punktowanych indywidualnie) z wykorzystaniem CUDA C1
T-L-5Implementacja rozwiązania zadania obliczeniowego z użyciem interfejsu API sterownika CUDA;1
T-L-6Implementacja rozwiązania zadania obliczeniowego z użyciem języka PTX;1
T-L-7Projekt i implementacja programu demo ilustrującego wykorzystanie interfejsu CUDA OpenGL;3
10

Treści programowe - wykłady

KODTreść programowaGodziny
T-W-1Wprowadzenie do programowania w technologii NVIDIA CUDA: terminologia, rys historyczny, charakterystyka technologii, organizacja pamięci, konwencje API, narzędzia programisty, wątki, dialekt CUDA C1
T-W-2Architektura i API (część 1): model architektury CUDA, składnia i semantyka rozszerzeń języka CUDA C, hierarchia wątków, hierarchia pamięci, struktura kodu wynikowego kompilatora NVCC, przegląd podstawowych usług CUDA API1
T-W-3Architektura i API (część 2): zarządzanie pamięcią urządzenia CUDA, przykład - mnożenie macierzy, współpraca wielu urządzeń CUDA1
T-W-4Architektura i API (część 3): tryby pracy pamięci urządzenia CUDA, mapowanie pamięci, ciąg dalszy prezentacji funkcji API, praca asynchroniczna, strumienie wątków, zdarzenia,2
T-W-5Sprzęt i obliczenia: szczegóły implementacji sprzętowej, architektura SIMT, organizowanie współpracy wątków, możliwości architektury w zależności od CC, implementacja arytmetyki zmiennoprzecinkowej, dokładność obliczeń, odwijanie pętli1
T-W-6Podstawy programowania na poziomie API sterownika: zaawansowane wykorzystanie kompilatora NVCC, fazy pracy NVCC, poziomy abstrakcji kodu źródłowego, konstrukcja kodu wykorzystującego API sterownika, przykładowy program2
T-W-7Język PTX: składnia, typy danych, deklaracje danych skalarnych i tablicowych, konwencje nazewnicze, elementarny pozdbiór listy rozkazów, komunikacja z kodem hosta, kompletny przykład rozwiązania problemu za pomocą języka PTX1
T-W-8Grafika: CUDA a OpenGL, rejestracja zasobów, osobliwości API, wybrany podzbiór funkcji, kompletny przykładowy program1
10

Formy aktywności - laboratoria

KODForma aktywnościGodziny
A-L-1uczestnictwo w zajęciach laboratoryjnych10
A-L-2indywidualne przygotowanie do zajęć laboratoryjnych9
A-L-3implementacja zadań laboratoryjnych (praca zdalna)12
A-L-4konsultacje (osobiste)2
33
(*) 1 punkt ECTS, odpowiada około 30 godzinom aktywności studenta

Formy aktywności - wykłady

KODForma aktywnościGodziny
A-W-1udział w wykładach10
A-W-2samodzielne studiowanie tematyki wykładów17
27
(*) 1 punkt ECTS, odpowiada około 30 godzinom aktywności studenta
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaI_1A_O/2/7_W01wiedza nt. architektury SIMT i jej implementacji pod postacią rozwiązania NVIDIA CUDA
Odniesienie do efektów kształcenia dla kierunku studiówI_1A_W10zna podstawowe architektury systemów komputerowych, w tym systemów wbudowanych
I_1A_W14zna wybrane metody i techniki służące do komunikacji człowieka z komputerem
Cel przedmiotuC-1wiedza nt. architektury sprzętowej CUDA i modelu SIMT
Treści programoweT-W-4Architektura i API (część 3): tryby pracy pamięci urządzenia CUDA, mapowanie pamięci, ciąg dalszy prezentacji funkcji API, praca asynchroniczna, strumienie wątków, zdarzenia,
T-W-3Architektura i API (część 2): zarządzanie pamięcią urządzenia CUDA, przykład - mnożenie macierzy, współpraca wielu urządzeń CUDA
T-W-2Architektura i API (część 1): model architektury CUDA, składnia i semantyka rozszerzeń języka CUDA C, hierarchia wątków, hierarchia pamięci, struktura kodu wynikowego kompilatora NVCC, przegląd podstawowych usług CUDA API
Metody nauczaniaM-2wykład informacyjny
M-1wykład problemowy
Sposób ocenyS-3Ocena podsumowująca: kolokwium zaliczeniowe (test wielokrotnego wyboru)
Kryteria ocenyOcenaKryterium oceny
2,0niespełnienie kryteriów uzyskania oceny 3.0
3,0znajomość cech wyróżniających architekturę SIMT i implementację CUDA
3,5biegła znajomość cech wyróżniających architekturę SIMT i implementację CUDA
4,0biegła znajomość cech wyróżniających architekturę SIMT i implementację CUDA; zdolność do objaśnienia mechanizmów współdziałania elementów architektury CUDA
4,5biegła znajomość cech wyróżniających architekturę SIMT i implementację CUDA; biegłość w objaśnianiu mechanizmów współdziałania elementów architektury CUDA
5,0biegła znajomość cech wyróżniających architekturę SIMT i implementację CUDA; biegłość w objaśnianiu mechanizmów współdziałania elementów architektury CUDA; zdolność wybierania/odrzucania poszczególnych udogodnień architektury CUDA do rozwiązywania określonych problemów obliczeniowych
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaI_1A_O/2/7_W02wiedza w zakresie składni i semantyki języka programowania CUDA C/C++
Odniesienie do efektów kształcenia dla kierunku studiówI_1A_W05ma wiedzę w zakresie algorytmizacji i zasad tworzenia struktur danych
I_1A_W06zna wybrane języki i techniki programowania, podstawowe techniki projektowania i wytwarzania aplikacji oraz systemów informatycznych
Cel przedmiotuC-2umiejętność użycia języka CUDA C/C++ do celów zrównoleglania obliczeń i konstruowania aplikacji graficznych
Treści programoweT-W-6Podstawy programowania na poziomie API sterownika: zaawansowane wykorzystanie kompilatora NVCC, fazy pracy NVCC, poziomy abstrakcji kodu źródłowego, konstrukcja kodu wykorzystującego API sterownika, przykładowy program
T-W-8Grafika: CUDA a OpenGL, rejestracja zasobów, osobliwości API, wybrany podzbiór funkcji, kompletny przykładowy program
T-W-7Język PTX: składnia, typy danych, deklaracje danych skalarnych i tablicowych, konwencje nazewnicze, elementarny pozdbiór listy rozkazów, komunikacja z kodem hosta, kompletny przykład rozwiązania problemu za pomocą języka PTX
Metody nauczaniaM-2wykład informacyjny
M-1wykład problemowy
Sposób ocenyS-3Ocena podsumowująca: kolokwium zaliczeniowe (test wielokrotnego wyboru)
Kryteria ocenyOcenaKryterium oceny
2,0niespełnienie kryteriów uzyskania oceny 3,0
3,0znajomość składni języka CUDA/C i typowych zastosowań
3,5biegła znajomość składni języka CUDA/C i typowych zastosowań
4,0biegła znajomość składni języka CUDA/C i typowych zastosowań; podstawowa znajomość semantyki języka CUDA/C
4,5biegła znajomość składni języka CUDA/C i typowych zastosowań; biegla znajomość semantyki języka CUDA/C
5,0biegła znajomość składni języka CUDA/C i typowych zastosowań; biegla znajomość semantyki języka CUDA/C; znajomość udogodnień NVIDIA CUDA SDK
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaI_1A_O/2/7_U01posługiwanie się firmową dokumentacją dostarczoną przez producenta sprzętu implementującego architekturę CUDA
Odniesienie do efektów kształcenia dla kierunku studiówI_1A_U13ma umiejętności w zakresie znajomości języka obcego na poziomie biegłości B2 Europejskiego Systemu Opisu Kształcenia Językowego Rady Europy oraz posługiwania się językiem specjalistycznym z zakresu kierunku studiów
Cel przedmiotuC-2umiejętność użycia języka CUDA C/C++ do celów zrównoleglania obliczeń i konstruowania aplikacji graficznych
Treści programoweT-L-1Przygotowanie środowiska pracy; Zapoznanie z narzędziami z pakietu CUDA SDK; Kompilacja i uruchomienie gotowego programu przykładowego; Prosta modyfikacja zaprezentowanego kodu; Konfiguracja środowiska do pracy zdalnej;
Metody nauczaniaM-4ćwiczenia laboratoryjne (praca off-site)
M-3ćwiczenia laboratoryjne (praca on-site)
Sposób ocenyS-2Ocena formująca: ocena poprawności implementacji na podstawie wyników testów akceptacyjnych
S-1Ocena formująca: ocena zgodności wykonanych zadań laboratoryjnych ze specyfikacją wymagań
Kryteria ocenyOcenaKryterium oceny
2,0niespełnienie kryteriów uzyskania oceny 3,0
3,0podstawowa znajomość struktury i wersjonowania dokumentacji firmowej
3,5biegła znajomość struktury i wersjonowania dokumentacji firmowej
4,0biegła znajomość struktury i wersjonowania dokumentacji firmowej; posługiwanie się wskazaną dokumentacją przy rozwiązywaniu zadań
4,5biegła znajomość struktury i wersjonowania dokumentacji firmowej; biegłe posługiwanie się wskazaną dokumentacją przy rozwiązywaniu zadań
5,0biegła znajomość struktury i wersjonowania dokumentacji firmowej; biegłe posługiwanie się wskazaną dokumentacją przy rozwiązywaniu zadań; wyszukiwanie w dokumentacji informacji nieudostępnionej w inny sposób przy rozwiązywaniu zadań
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaI_1A_O/2/7_U02posługiwanie się narzędziami CUDA SDK
Odniesienie do efektów kształcenia dla kierunku studiówI_1A_U17potrafi ocenić przydatność rutynowych metod i narzędzi rozwiązania prostego zadania inżynierskiego, typowego dla reprezentowanej dyscypliny inżynierskiej oraz wybrać i zastosować właściwą metodę i narzędzia
I_1A_U03umie oceniać przydatność i stosować różne paradygmaty programowania, języki i środowiska programistyczne do rozwiązywania problemów dziedzinowych
Cel przedmiotuC-4umiejętność korzystania z narzędzi pakietu CUDA SDK
Treści programoweT-L-1Przygotowanie środowiska pracy; Zapoznanie z narzędziami z pakietu CUDA SDK; Kompilacja i uruchomienie gotowego programu przykładowego; Prosta modyfikacja zaprezentowanego kodu; Konfiguracja środowiska do pracy zdalnej;
T-L-2Implementacja wybranego algorytmu w formie sekwencyjnej (CPU) i równoległej (GPU); Badania wydajności obu rozwiązań w zależności od rozmiaru zagadnienia obliczeniowego
Metody nauczaniaM-2wykład informacyjny
M-1wykład problemowy
M-3ćwiczenia laboratoryjne (praca on-site)
Sposób ocenyS-2Ocena formująca: ocena poprawności implementacji na podstawie wyników testów akceptacyjnych
S-1Ocena formująca: ocena zgodności wykonanych zadań laboratoryjnych ze specyfikacją wymagań
Kryteria ocenyOcenaKryterium oceny
2,0niespełnienie kryteriów uzyskania oceny 3,0
3,0umiejętność wykorzystania podstawowych narzędzi CUDA SDK i dopasowywanie typowej konfiguracji do rozwiązywania postawionych zadań
3,5biegła umiejętność wykorzystania podstawowych narzędzi CUDA SDK i dopasowywanie typowej konfiguracji do rozwiązywania postawionych zadań
4,0biegła umiejętność wykorzystania podstawowych narzędzi CUDA SDK i dopasowywanie typowej konfiguracji do rozwiązywania postawionych zadań; umiejętność budowania własnej niestandardowej konfiguracji
4,5biegła umiejętność wykorzystania podstawowych narzędzi CUDA SDK i dopasowywanie typowej konfiguracji do rozwiązywania postawionych zadań; biegła umiejętność budowania własnej niestandardowej konfiguracji
5,0biegła umiejętność wykorzystania podstawowych narzędzi CUDA SDK i dopasowywanie typowej konfiguracji do rozwiązywania postawionych zadań; biegła umiejętność budowania własnej niestandardowej konfiguracji; umiejętnośc budowania złożonych frameworków z użyciem narzędzi CUDA SDK
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaI_1A_O/2/7_U03implementacja wydajnego kodu równoległego wykorzystującego możliwości architektury SIMT
Odniesienie do efektów kształcenia dla kierunku studiówI_1A_U19ma umiejętność wyboru algorytmu i struktur danych do rozwiązania określonego zadania inżynierskiego
I_1A_U15potrafi wykorzystywać poznane metody, modele matematyczne oraz symulacje komputerowe do rozwiązywania prostych problemów inżynierskich
Cel przedmiotuC-4umiejętność korzystania z narzędzi pakietu CUDA SDK
C-2umiejętność użycia języka CUDA C/C++ do celów zrównoleglania obliczeń i konstruowania aplikacji graficznych
Treści programoweT-L-3Przetwarzanie obrazów rastrowych w sposób sekwencyjny (CPU) i równoległy (GPU); Badania wydajności obu rozwiązań w zależności od rozmiaru i struktury obrazu;
T-L-5Implementacja rozwiązania zadania obliczeniowego z użyciem interfejsu API sterownika CUDA;
T-L-4Implementacja wybranego zestawu zadań (punktowanych indywidualnie) z wykorzystaniem CUDA C
T-L-7Projekt i implementacja programu demo ilustrującego wykorzystanie interfejsu CUDA OpenGL;
Metody nauczaniaM-2wykład informacyjny
M-4ćwiczenia laboratoryjne (praca off-site)
M-1wykład problemowy
M-3ćwiczenia laboratoryjne (praca on-site)
Sposób ocenyS-2Ocena formująca: ocena poprawności implementacji na podstawie wyników testów akceptacyjnych
S-1Ocena formująca: ocena zgodności wykonanych zadań laboratoryjnych ze specyfikacją wymagań
Kryteria ocenyOcenaKryterium oceny
2,0niespełnienie kryteriów uzyskania oceny 3,0
3,0umiejętnośc posługiwania się udostępnionym kodem w celu jego powtórnego wykorzystania do rozwiązania typowych zadań
3,5biegła umiejętnośc posługiwania się udostępnionym kodem w celu jego powtórnego wykorzystania do rozwiązania typowych zadań
4,0biegła umiejętnośc posługiwania się udostępnionym kodem w celu jego powtórnego wykorzystania do rozwiązania typowych zadań; umiejętność samodzielnej implementacji algorytmów w środowisku CUDA do rozwiązanie postawionych zadań
4,5biegła umiejętnośc posługiwania się udostępnionym kodem w celu jego powtórnego wykorzystania do rozwiązania typowych zadań; biegła umiejętność samodzielnej implementacji algorytmów w środowisku CUDA do rozwiązanie postawionych zadań
5,0biegła umiejętnośc posługiwania się udostępnionym kodem w celu jego powtórnego wykorzystania do rozwiązania typowych zadań; biegła umiejętność samodzielnej implementacji algorytmów w środowisku CUDA do rozwiązanie postawionych zadań; umiejętność wiarygodnej ewaluacji wydajności zaimplementowanych rozwiązań
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaI_1A_O/2/7_U04generowanie grafiki w środowisku SIMT
Odniesienie do efektów kształcenia dla kierunku studiówI_1A_U14ma umiejętność tworzenia interfejsów użytkownika oraz wykorzystania różnych sposobów komunikacji z systemami komputerowymi
Cel przedmiotuC-2umiejętność użycia języka CUDA C/C++ do celów zrównoleglania obliczeń i konstruowania aplikacji graficznych
Treści programoweT-L-7Projekt i implementacja programu demo ilustrującego wykorzystanie interfejsu CUDA OpenGL;
Metody nauczaniaM-2wykład informacyjny
M-4ćwiczenia laboratoryjne (praca off-site)
M-1wykład problemowy
M-3ćwiczenia laboratoryjne (praca on-site)
Sposób ocenyS-2Ocena formująca: ocena poprawności implementacji na podstawie wyników testów akceptacyjnych
S-1Ocena formująca: ocena zgodności wykonanych zadań laboratoryjnych ze specyfikacją wymagań
Kryteria ocenyOcenaKryterium oceny
2,0niespełnienie kryteriów uzyskania oceny 3,0
3,0umiejętnośc posługiwania się udostępnionym kodem w celu jego powtórnego wykorzystania do rozwiązania typowych zadań
3,5biegła umiejętnośc posługiwania się udostępnionym kodem w celu jego powtórnego wykorzystania do rozwiązania typowych zadań
4,0umiejętnośc posługiwania się udostępnionym kodem w celu jego powtórnego wykorzystania do rozwiązania typowych zadań; umiejętność samodzielnej implementacji algorytmów w środowisku CUDA do rozwiązanie postawionych zadań
4,5umiejętnośc posługiwania się udostępnionym kodem w celu jego powtórnego wykorzystania do rozwiązania typowych zadań; biegła umiejętność samodzielnej implementacji algorytmów w środowisku CUDA do rozwiązanie postawionych zadań
5,0umiejętnośc posługiwania się udostępnionym kodem w celu jego powtórnego wykorzystania do rozwiązania typowych zadań; biegła umiejętność samodzielnej implementacji algorytmów w środowisku CUDA do rozwiązanie postawionych zadań; umiejętność wiarygodnej ewaluacji wydajności zaimplementowanych rozwiązań
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaI_1A_O/2/7_K01rozwiązywanie problemów implementacyjnych z użyciem dokumentacji firmowej
Odniesienie do efektów kształcenia dla kierunku studiówI_1A_K01świadomie rozumie potrzeby dokształcania i dzielenia się wiedzą
Cel przedmiotuC-4umiejętność korzystania z narzędzi pakietu CUDA SDK
Metody nauczaniaM-4ćwiczenia laboratoryjne (praca off-site)
M-3ćwiczenia laboratoryjne (praca on-site)
Sposób ocenyS-2Ocena formująca: ocena poprawności implementacji na podstawie wyników testów akceptacyjnych
S-1Ocena formująca: ocena zgodności wykonanych zadań laboratoryjnych ze specyfikacją wymagań
Kryteria ocenyOcenaKryterium oceny
2,0niespełnienie kryteriów uzyskania oceny 3,0
3,0stosowanie wskazanych fragmentów dokumentacji firmowej do rozwiązywania postawionych zadań
3,5biegłe stosowanie wskazanych fragmentów dokumentacji firmowej do rozwiązywania postawionych zadań
4,0biegłe stosowanie wskazanych fragmentów dokumentacji firmowej do rozwiązywania postawionych zadań; weryfikowanie przydatności wskazanych fragmentów dokumentacji firmowej do rozwiązywania postawionych zadań
4,5biegłe stosowanie wskazanych fragmentów dokumentacji firmowej do rozwiązywania postawionych zadań; biegłe weryfikowanie przydatności wskazanych fragmentów dokumentacji firmowej do rozwiązywania postawionych zadań
5,0biegłe stosowanie wskazanych fragmentów dokumentacji firmowej do rozwiązywania postawionych zadań; biegłe weryfikowanie przydatności wskazanych fragmentów dokumentacji firmowej do rozwiązywania postawionych zadań;wyszukiwanie informacji nieudostępnionej w inny sposób do rozwiązywania postawionych zadań
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaI_1A_O/2/7_K02praca grupowa on-site i off-site
Odniesienie do efektów kształcenia dla kierunku studiówI_1A_K03ma świadomość odpowiedzialności za wspólnie realizowane zadania
Cel przedmiotuC-2umiejętność użycia języka CUDA C/C++ do celów zrównoleglania obliczeń i konstruowania aplikacji graficznych
Metody nauczaniaM-4ćwiczenia laboratoryjne (praca off-site)
M-3ćwiczenia laboratoryjne (praca on-site)
Sposób ocenyS-2Ocena formująca: ocena poprawności implementacji na podstawie wyników testów akceptacyjnych
S-1Ocena formująca: ocena zgodności wykonanych zadań laboratoryjnych ze specyfikacją wymagań
Kryteria ocenyOcenaKryterium oceny
2,0niespełnienie kryteriów uzyskania oceny 3,0
3,0wykazywanie aktywnej postawy przy analizie i projektowaniu rozwiązania postawionego problemu
3,5wykazywanie wyróżniejącej aktywnej postawy przy analizie i projektowaniu rozwiązania postawionego problemu
4,0wykazywanie wyróżniejącej aktywnej postawy przy analizie i projektowaniu rozwiązania postawionego problemu; wykazywanie aktywnej postawy przy implementacji rozwiązania postawionego problemu
4,5wykazywanie wyróżniejącej aktywnej postawy przy analizie i projektowaniu rozwiązania postawionego problemu; wykazywanie wyróżniającej aktywnej postawy przy implementacji rozwiązania postawionego problemu
5,0wykazywanie wyróżniejącej aktywnej postawy przy analizie i projektowaniu rozwiązania postawionego problemu; wykazywanie wyróżniającej aktywnej postawy przy implementacji rozwiązania postawionego problemu;wykazywanie aktywnej postawy przy testowaniu i badaniu wydajności rozwiązania postawionego problemu