procesory_graficzne_..
Transkrypt
procesory_graficzne_..
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: 2012/2013 4. Forma kształcenia: studia pierwszego stopnia 5. Forma studiów: studia stacjonarne 6. Kierunek studiów: ELEKTRONIKA I TELEKOMUNIKACJA (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 CUDA Core NVIDIA i FireStream ATI/AMD, ich architekturą i sposobem programowania. 17. Efekty kształcenia:1 Nr W1 W2 U1 U2 U3 1 Opis efektu kształcenia Ma uporządkowaną wiedzę zakresie architektury komputerów oraz metodyki i technik programowania Ma szczegółową wiedzę w zakresie architektury i oprogramowania systemów mikroprocesorowych Potrafi sformułować prosty algorytm przewidziany do realizacji na heterogenicznej platformie sprzętowej CPU/GPU Potrafi dokonać oceny przydatności różnych paradygmatów programowania masowo-równoległego i związanych z nim środowisk programistycznych do rozwiązywania napotkanych problemów Potrafi przeprowadzić test wydajności napisanej aplikacji oraz wykorzystać narzędzia wspomagające jej tworzenie należy wskazać ok. 5 – 8 efektów kształcenia Metoda sprawdzenia efektu kształcenia Forma prowadzenia zajęć Odniesienie do efektów dla kierunku studiów kolokwium wykład K1_W06, K1_W07 kolokwium wykład K1_W08 Wykonanie ćwiczeń laboratoryjnych laboratorium K1_U10, K1_U22 Wykonanie ćwiczeń laboratoryjnych laboratorium K1_U22 Wykonanie ćwiczeń laboratoryjnych laboratorium K1_U22 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 G80, G92, GT200 oraz architektury Fermi (GF110). Wprowadzenie pojęcia procesora strumieniowego i multiprocesora strumieniowego, klaster i macierz 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 FireStream ATI/AMD. Omówienie architektury Tera Scale Engine, 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 Kornela. 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. J. Sanders, E. Kandrot, CUDA by example. An introduction to General-Purpose GPU Programming, Addison-Wesley Press, New York, 2010 2. D. Kirk, W. Hwu, Programming Massively Parallel Processors: A Hands-on Approach, Morgan Kaufmann Press, 2010 3. 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 4. A. Karbowski, E. Niewiadomska-Szynkiewicz, Programowanie równoległe i rozproszone, Oficyna Wydawnicza Politechniki Warszawskiej, 2009 5. R. Farber, CUDA Application Design and Development, Elsevier, 2011 6. NVIDIA, Compute Unified Device Architecture Programming Guide, Version 4.0, 06/05/2011 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. R. S. Wright, N. Heamel, G. Sellers, B. Lipchak, OpenGL SuperBible, Comprehensive Tutorial and Reference, 5th edition, Addison-Wesley Press, New York, 2011 4. R. S. Wright, M. Sweet, OpenGL. Księga eksperta, Helion 1999 5. NVIDIA Corporation. OpenCL. Programming guide for the CUDA Architecture, v2.3, Feb. 2010 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)