(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)