(pieczęć wydziału)

Transkrypt

(pieczęć wydziału)
Z1-PU7
WYDANIE N1
Strona 1 z 3
KARTA PRZEDMIOTU
(pieczęć wydziału)
1. Nazwa przedmiotu: PROCESORY GRAFICZNE NVIDIA I ATI/AMD: 2. Kod przedmiotu: PGNiA
ARCHITEKTURA I PROGRAMOWANIE
3. Karta przedmiotu ważna od roku akademickiego: 2016/2017
4. Forma kształcenia: studia pierwszego stopnia
5. Forma studiów: studia stacjonarne
6. Kierunek studiów: TELEINFORMATYKA (WYDZIAŁ AEiI)
7. Profil studiów: ogólnoakademicki
8. Specjalność:
9. Semestr: 7
10. Jednostka prowadząca przedmiot: Instytut Elektroniki, RAu3
11. Prowadzący przedmiot: dr inż. Tomasz Topa, dr inż. Artur Noga
12. Przynależność do grupy przedmiotów: przedmioty wspólne
13. Status przedmiotu: wybieralny
14. Język prowadzenia zajęć: polski
15. Przedmioty wprowadzające oraz wymagania wstępne: Zakłada się, że przed rozpoczęciem nauki
niniejszego przedmiotu student posiada podstawową wiedzę z zakresu programowania oraz architektury
systemów mikrokomputerowych.
16. Cel przedmiotu: Celem wykładu jest zapoznanie studentów z współczesnymi procesorami graficznymi GPU, ich architekturą i sposobem programowania.
17. Efekty kształcenia: 1
Nr
W1
W2
W3
U1
U2
1
Opis efektu kształcenia
Ma teoretyczną wiedzę ogólną w zakresie algorytmów i ich złożoności obliczeniowej, języków i paradygmatów programowania
Zna podstawowe struktury danych i wykonywane na
nich operacje oraz strategie doboru właściwych
struktur danych do zadania algorytmicznego
Zna podstawowe metody, techniki i narzędzia stosowane przy rozwiązywaniu prostych zadań informatycznych z zakresu analizy złożoności obliczeniowej
algorytmów
Wykorzystuje wiedzę matematyczną do optymalizacji rozwiązań zarówno sprzętowych jak i programowych
Ma umiejętność programowania niskopoziomowego
i posługiwania się systemami operacyjnymi na poziomie API
należy wskazać ok. 5 – 8 efektów kształcenia
Metoda sprawdzenia efektu kształcenia
Forma prowadzenia zajęć
kolokwium
wykład
K1A_W11,
K1A_W13
kolokwium
wykład
K1A_W14
kolokwium
wykład
K1A_W18
Odniesienie
do efektów
dla kierunku
studiów
Wykonanie ćwiczeń laboratorium
laboratoryjnych
K1A_U12
Wykonanie ćwiczeń laboratorium
laboratoryjnych
K1A_U20,
K1A_U19
Z1-PU7
WYDANIE N1
Strona 2 z 3
18. Formy zajęć dydaktycznych i ich wymiar (liczba godzin)
W. : 15 L.: 15
19. Treści kształcenia:
Wykład
1. Wprowadzenie do grafiki 3D. Układy współrzędnych, rzuty, światło i cienie. Transformacje współrzędnych, prymitywy graficzne.
2. Silniki graficzne OpenGL i DirectX. Modelowanie i kompozycja obiektów 3D, grafika rastrowa, mapowanie tekstur, bufory, grafika interaktywna, efekty specjalne.
3. Środowisko programistyczne Cg. Składnia Cg i słowa kluczowe. Interpolacja ujęć kluczowych
i system kości. Mapowanie środowiska i nierówności. Efekty specjalne. Sposoby zwiększania wydajności przetwarzania grafiki.
4. Technologia CUDA NVIDIA. Omówienie architektury GF 110 (Fermi), GK 110 (Kepler) oraz architektury GM 200 (Maxwell). Wprowadzenie pojęcia procesora strumieniowego i multiprocesora strumieniowego, klastra i macierzy procesorów strumieniowych. Jednostki teksturowania. Jednostki arytmetyczno-logiczne, jednostki specjalne i sterujące. Rozdzielacz wątków i klaster przetwarzania wątków. Pamięć podręczna pierwszego, drugiego i trzeciego poziomu, pamięć instrukcji, pamięć lokalna,
pamięć współdzielona, pamięć tekstur, pamięć globalna, pamięć stałych, rejestry.
5. Technologia GCN AMD. Omówienie architektury GCN 1.0 (Thaiti), GCN 1.1 (Hawaii) oraz GCN 1.2
(Fiji), Wprowadzenie pojęcia zunifikowanych jednostek cieniujących i klastrów obliczeniowych. Jednostki teksturowania. Jednostki arytmetyczno-logiczne, jednostki specjalne i sterujące. Rozdzielacz
wątków. Pamięć podręczna, pamięć lokalna, rejestry.
6. Model programowania. Podział na kraty i bloki wątków. Wiązka wątków. Synchronizacja wątków.
Programowanie współbieżne z wykorzystaniem strumieni. Synchronizacja strumieni. Kod jądra.
7. Język OpenCL (ang. Open Computing Language). Składnia języka. Wywołanie kernala. Funkcje atomowe. Instrukcje podwójne. Instrukcje synchronizacji. Optymalizacja kodu. Optymalizacja wydajności aplikacji. Instalacja i konfiguracja kompilatora.
8. Język Fortran. Składnia języka. Wywołanie kernela. Funkcje atomowe. Instrukcje podwójne . Instrukcje synchronizacji. Optymalizacja kodu. Optymalizacja wydajności aplikacji. Instalacja i konfiguracja
kompilatora.
9. Platforma programistyczna i narzędzia diagnostyczne. Zintegrowane środowisko programistyczne
Microsoft Visual Studio, Narzędzie diagnostyczne NVIDIA Parallel Nsight.
10. Przykłady praktycznych aplikacji. Mnożenie macierzy, rozwiązywanie układu równań, rozpoznawanie i przetwarzanie obrazów, chemia molekularna, elektrodynamika obliczeniowa, kryptografia.
Zajęcia laboratoryjne
1.
2.
3.
4.
5.
6.
7.
8.
Instalacja i konfiguracja środowiska programistycznego CUDA
Obsługa operacji wejścia-wyjścia
Obsługa pamięci graficznej
Implementacja funkcji jądra
Optymalizacja funkcji jądra
Operacje atomowe
Przetwarzanie potokowe - współbieżne wykonywanie funkcji jądra i transferu danych
Konteksty
9. Metody i narzędzia diagnostyczne (debugging, profiling)
20. Egzamin: nie
Z1-PU7
WYDANIE N1
Strona 3 z 3
21. Literatura podstawowa:
1. G. Ruetsch, M. Fatica, CUDA Fortran for Scientists and Engineers, Morgtan Kaufman Press, 2014
2. J. Cheng, M. Grossman, T. McKercher, Professional CUDA C Programming, John Wiley & Sons,
2014
3. V. Kindratenko, Numerical Computations with GPUs, Springer, 2014
4. N. Wilt, The CUDA Handbook: A Comprehensive Guide to GPU Programming, Addison-Wesley
Press, New York, 2013
5. S. Cook, CUDA Programming: A Developer’s Guide to Parallel Computing with GPUs, Morgtan
Kaufman Press, 2013
6. D. Kirk, W. Hwu, Programming Massively Parallel Processors: A Hands-on Approach, 2nd Edition,
Morgan Kaufmann Press, 2013
7. R. Farber, CUDA Application Design and Development, Elsevier, 2011
8. J. Sanders, E. Kandrot, CUDA by example. An introduction to General-Purpose GPU Programming,
Addison-Wesley Press, New York, 2010
9. B. Chapman, F. Desprez, G.R. Joubert, A. Lichnewsky, F. Peters, T. Priol, Parallel Computing: From
Multicores and GPU's to Petascale, IOS Press, 2010
22. Literatura uzupełniająca:
1. Wen-mei W. Hwu, GPU Computing Gems, Elsevier, 2011
2. R. Fernando, M. J. Kilgard, The Cg Tutorial: The Definitive Guide to Programmable Real-Time
Graphics, NVIDIA corporation Press, 2003
3. B. Gaster, L. Howes, D. Kaeli, P. Mistry, D. Schaa, Heterogeneous Computing with OpenCL, Morgtan
Kaufman Press, 2013
4. R. S. Wright, M. Sweet, OpenGL. Księga eksperta, Helion 1999
5. A. Munshi, B. Gaster, T. Mattson, J. Fung, D. Ginsburg, OpenCL Programming Guide, AddisonWesley, 2012
23. Nakład pracy studenta potrzebny do osiągnięcia efektów kształcenia
Lp.
Forma zajęć
Liczba godzin
kontaktowych / pracy studenta
15/5
1
Wykład
2
Ćwiczenia
3
Laboratorium
4
Projekt
0/0
5
Seminarium
0/0
6
Inne
5/10
Suma godzin
35/25
0/0
15/10
24. Suma wszystkich godzin: 60
25. Liczba punktów ECTS: 2
26. Liczba punktów ECTS uzyskanych na zajęciach z bezpośrednim udziałem nauczyciela akademickiego: 1
27. Liczba punktów ECTS uzyskanych na zajęciach o charakterze praktycznym (laboratoria, projekty): 1
26. Uwagi:
Zatwierdzono:
…………………………….
…………………………………………………
(data i podpis prowadzącego)
(data i podpis dyrektora instytutu/kierownika katedry/
Dyrektora Kolegium Języków Obcych/kierownika lub
dyrektora jednostki międzywydziałowej)