Wydział Informatyki - Informatyka (S1)
specjalność: systemy komputerowe i oprogramowanie
Sylabus przedmiotu Programowanie kart graficznych - Przedmiot obieralny II:
Informacje podstawowe
Kierunek studiów | Informatyka | ||
---|---|---|---|
Forma studiów | studia stacjonarne | Poziom | pierwszego stopnia |
Tytuł zawodowy absolwenta | inżynier | ||
Obszary studiów | nauk technicznych, studiów inżynierskich | ||
Profil | ogólnoakademicki | ||
Moduł | — | ||
Przedmiot | Programowanie kart graficznych - Przedmiot obieralny II | ||
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 | 4 | Grupa obieralna | 8 |
Formy dydaktyczne
Wymagania wstępne
KOD | Wymaganie wstępne |
---|---|
W-1 | biegła umiejętność programowania w języku C/C++ |
W-2 | umiejętnośc pracy w środowisku Linux |
W-3 | znajomość podstawowych mechanizmów programowania równoległego |
W-4 | pożądana znajomość OpenGL |
Cele przedmiotu
KOD | Cel modułu/przedmiotu |
---|---|
C-1 | wiedza nt. architektury sprzętowej CUDA i modelu SIMT |
C-2 | umiejętność użycia języka CUDA C/C++ do celów zrównoleglania obliczeń i konstruowania aplikacji graficznych |
C-3 | bazowa umiejętność posługiwania się językiem PTX |
C-4 | umiejętność korzystania z narzędzi pakietu CUDA SDK |
Treści programowe z podziałem na formy zajęć
KOD | Treść programowa | Godziny |
---|---|---|
laboratoria | ||
T-L-1 | Przygotowanie ś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; | 2 |
T-L-2 | Implementacja 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 | 2 |
T-L-3 | Przetwarzanie 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; | 2 |
T-L-4 | Implementacja wybranego zestawu zadań (punktowanych indywidualnie) z wykorzystaniem CUDA C | 2 |
T-L-5 | Implementacja rozwiązania zadania obliczeniowego z użyciem interfejsu API sterownika CUDA; | 2 |
T-L-6 | Implementacja rozwiązania zadania obliczeniowego z użyciem języka PTX; | 2 |
T-L-7 | Projekt i implementacja programu demo ilustrującego wykorzystanie interfejsu CUDA OpenGL; | 3 |
15 | ||
wykłady | ||
T-W-1 | Wprowadzenie do programowania w technologii NVIDIA CUDA: terminologia, rys historyczny, charakterystyka technologii, organizacja pamięci, konwencje API, narzędzia programisty, wątki, dialekt CUDA C | 2 |
T-W-2 | Architektura 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 | 2 |
T-W-3 | Architektura i API (część 2): zarządzanie pamięcią urządzenia CUDA, przykład - mnożenie macierzy, współpraca wielu urządzeń CUDA | 1 |
T-W-4 | Architektura 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-5 | Sprzę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ętli | 2 |
T-W-6 | Podstawy 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 | 2 |
T-W-7 | Ję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 | 2 |
T-W-8 | Grafika: CUDA a OpenGL, rejestracja zasobów, osobliwości API, wybrany podzbiór funkcji, kompletny przykładowy program | 2 |
15 |
Obciążenie pracą studenta - formy aktywności
KOD | Forma aktywności | Godziny |
---|---|---|
laboratoria | ||
A-L-1 | uczestnictwo w zajęciach laboratoryjnych | 15 |
A-L-2 | indywidualne przygotowanie do zajęć laboratoryjnych | 7 |
A-L-3 | implementacja zadań laboratoryjnych (praca zdalna) | 7 |
A-L-4 | konsultacje (osobiste) | 2 |
31 | ||
wykłady | ||
A-W-1 | udział w wykładach | 15 |
A-W-2 | samodzielne studiowanie tematyki wykładów | 10 |
A-W-3 | Udział w konsultacjach i zaliczeniu | 2 |
A-W-4 | Udział w konsultacjach i zaliczeniu formy zajęć. | 2 |
29 |
Metody nauczania / narzędzia dydaktyczne
KOD | Metoda nauczania / narzędzie dydaktyczne |
---|---|
M-1 | wykład problemowy |
M-2 | wykład informacyjny |
M-3 | ćwiczenia laboratoryjne (praca on-site) |
M-4 | ćwiczenia laboratoryjne (praca off-site) |
Sposoby oceny
KOD | Sposób oceny |
---|---|
S-1 | Ocena formująca: ocena zgodności wykonanych zadań laboratoryjnych ze specyfikacją wymagań |
S-2 | Ocena formująca: ocena poprawności implementacji na podstawie wyników testów akceptacyjnych |
S-3 | Ocena podsumowująca: kolokwium zaliczeniowe (test wielokrotnego wyboru) |
Zamierzone efekty kształcenia - wiedza
Zamierzone efekty kształcenia | Odniesienie do efektów kształcenia dla kierunku studiów | Odniesienie do efektów zdefiniowanych dla obszaru kształcenia | Odniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżyniera | Cel przedmiotu | Treści programowe | Metody nauczania | Sposó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_W14 | T1A_W03, T1A_W05, T1A_W06, T1A_W07, T1A_W08 | InzA_W01, InzA_W02, InzA_W03, InzA_W05 | C-1 | T-W-2, T-W-3, T-W-4 | M-1, M-2 | S-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_W06 | T1A_W03, T1A_W05, T1A_W06, T1A_W07, T1A_W09 | InzA_W01, InzA_W02, InzA_W04, InzA_W05 | C-2 | T-W-6, T-W-7, T-W-8 | M-1, M-2 | S-3 |
Zamierzone efekty kształcenia - umiejętności
Zamierzone efekty kształcenia | Odniesienie do efektów kształcenia dla kierunku studiów | Odniesienie do efektów zdefiniowanych dla obszaru kształcenia | Odniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżyniera | Cel przedmiotu | Treści programowe | Metody nauczania | Sposób oceny |
---|---|---|---|---|---|---|---|
I_1A_O/2/7_U01 posługiwanie się firmową dokumentacją dostarczoną przez producenta sprzętu implementującego architekturę CUDA | I_1A_U13 | T1A_U01, T1A_U03, T1A_U06 | — | C-2 | T-L-1 | M-3, M-4 | S-1, S-2 |
I_1A_O/2/7_U02 posługiwanie się narzędziami CUDA SDK | I_1A_U03, I_1A_U17 | T1A_U01, T1A_U08, T1A_U09, T1A_U10, T1A_U13, T1A_U14, T1A_U15 | InzA_U01, InzA_U02, InzA_U03, InzA_U05, InzA_U06, InzA_U07 | C-4 | T-L-1, T-L-2 | M-1, M-2, M-3 | S-1, S-2 |
I_1A_O/2/7_U03 implementacja wydajnego kodu równoległego wykorzystującego możliwości architektury SIMT | I_1A_U15, I_1A_U19 | T1A_U08, T1A_U09, T1A_U13, T1A_U14, T1A_U15, T1A_U16 | InzA_U01, InzA_U02, InzA_U05, InzA_U06, InzA_U07, InzA_U08 | C-2, C-4 | T-L-3, T-L-4, T-L-5, T-L-7 | M-1, M-2, M-3, M-4 | S-1, S-2 |
I_1A_O/2/7_U04 generowanie grafiki w środowisku SIMT | I_1A_U14 | T1A_U07, T1A_U14, T1A_U15, T1A_U16 | InzA_U06, InzA_U07, InzA_U08 | C-2 | T-L-7 | M-1, M-2, M-3, M-4 | S-1, S-2 |
Zamierzone efekty kształcenia - inne kompetencje społeczne i personalne
Zamierzone efekty kształcenia | Odniesienie do efektów kształcenia dla kierunku studiów | Odniesienie do efektów zdefiniowanych dla obszaru kształcenia | Odniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżyniera | Cel przedmiotu | Treści programowe | Metody nauczania | Sposób oceny |
---|---|---|---|---|---|---|---|
I_1A_O/2/7_K01 rozwiązywanie problemów implementacyjnych z użyciem dokumentacji firmowej | I_1A_K01 | T1A_K01, T1A_K07 | — | C-4 | T-W-1, T-W-2, T-W-3, T-W-4, T-W-5, T-W-6, T-W-7, T-W-8 | M-3, M-4 | S-1, S-2 |
I_1A_O/2/7_K02 praca grupowa on-site i off-site | I_1A_K03 | T1A_K02, T1A_K03, T1A_K04 | InzA_K01 | C-2 | T-W-1, T-W-2, T-W-3, T-W-4, T-W-5, T-W-6, T-W-7, T-W-8, T-L-2, T-L-3, T-L-4, T-L-5, T-L-6, T-L-7 | M-3, M-4 | S-1, S-2 |
Kryterium oceny - wiedza
Efekt kształcenia | Ocena | Kryterium oceny |
---|---|---|
I_1A_O/2/7_W01 wiedza nt. architektury SIMT i jej implementacji pod postacią rozwiązania NVIDIA CUDA | 2,0 | niespełnienie kryteriów uzyskania oceny 3.0 |
3,0 | znajomość cech wyróżniających architekturę SIMT i implementację CUDA | |
3,5 | biegła znajomość cech wyróżniających architekturę SIMT i implementację CUDA | |
4,0 | biegł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,5 | biegł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,0 | biegł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,0 | niespełnienie kryteriów uzyskania oceny 3.0 |
3,0 | znajomość składni języka CUDA/C i typowych zastosowań | |
3,5 | biegła znajomość składni języka CUDA/C i typowych zastosowań | |
4,0 | biegła znajomość składni języka CUDA/C i typowych zastosowań; podstawowa znajomość semantyki języka CUDA/C | |
4,5 | biegła znajomość składni języka CUDA/C i typowych zastosowań; biegla znajomość semantyki języka CUDA/C | |
5,0 | biegła znajomość składni języka CUDA/C i typowych zastosowań; biegla znajomość semantyki języka CUDA/C; znajomośc udogodnień NVIDIA CUDA SDK |
Kryterium oceny - umiejętności
Efekt kształcenia | Ocena | Kryterium oceny |
---|---|---|
I_1A_O/2/7_U01 posługiwanie się firmową dokumentacją dostarczoną przez producenta sprzętu implementującego architekturę CUDA | 2,0 | niespełnienie kryteriów uzyskania oceny 3,0 |
3,0 | podstawowa znajomość struktury i wersjonowania dokumentacji firmowej | |
3,5 | biegła znajomość struktury i wersjonowania dokumentacji firmowej | |
4,0 | biegła znajomość struktury i wersjonowania dokumentacji firmowej; posługiwanie się wskazaną dokumentacją przy rozwiązywaniu zadań | |
4,5 | biegła znajomość struktury i wersjonowania dokumentacji firmowej; biegłe posługiwanie się wskazaną dokumentacją przy rozwiązywaniu zadań | |
5,0 | biegł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,0 | niespełnienie kryteriów uzyskania oceny 3,0 |
3,0 | umiejętność wykorzystania podstawowych narzędzi CUDA SDK i dopasowywanie typowej konfiguracji do rozwiązywania postawionych zadań | |
3,5 | biegła umiejętność wykorzystania podstawowych narzędzi CUDA SDK i dopasowywanie typowej konfiguracji do rozwiązywania postawionych zadań | |
4,0 | biegł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,5 | biegł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,0 | biegł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,0 | niespełnienie kryteriów uzyskania oceny 3,0 |
3,0 | umiejętnośc posługiwania się udostępnionym kodem w celu jego powtórnego wykorzystania do rozwiązania typowych zadań | |
3,5 | biegła umiejętnośc posługiwania się udostępnionym kodem w celu jego powtórnego wykorzystania do rozwiązania typowych zadań | |
4,0 | biegł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,5 | biegł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,0 | biegł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,0 | niespełnienie kryteriów uzyskania oceny 3,0 |
3,0 | umiejętnośc posługiwania się udostępnionym kodem w celu jego powtórnego wykorzystania do rozwiązania typowych zadań | |
3,5 | biegła umiejętnośc posługiwania się udostępnionym kodem w celu jego powtórnego wykorzystania do rozwiązania typowych zadań | |
4,0 | 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,5 | 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,0 | 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ń |
Kryterium oceny - inne kompetencje społeczne i personalne
Efekt kształcenia | Ocena | Kryterium oceny |
---|---|---|
I_1A_O/2/7_K01 rozwiązywanie problemów implementacyjnych z użyciem dokumentacji firmowej | 2,0 | niespełnienie kryteriów uzyskania oceny 3,0 |
3,0 | stosowanie wskazanych fragmentów dokumentacji firmowej do rozwiązywania postawionych zadań | |
3,5 | biegłe stosowanie wskazanych fragmentów dokumentacji firmowej do rozwiązywania postawionych zadań | |
4,0 | biegł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,5 | biegł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,0 | biegł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,0 | niespełnienie kryteriów uzyskania oceny 3,0 |
3,0 | wykazywanie aktywnej postawy przy analizie i projektowaniu rozwiązania postawionego problemu | |
3,5 | wykazywanie wyróżniejącej aktywnej postawy przy analizie i projektowaniu rozwiązania postawionego problemu | |
4,0 | wykazywanie wyróżniejącej aktywnej postawy przy analizie i projektowaniu rozwiązania postawionego problemu; wykazywanie aktywnej postawy przy implementacji rozwiązania postawionego problemu | |
4,5 | wykazywanie 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,0 | wykazywanie 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
- 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
- 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
- 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
- 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
- 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