Architektur und Programmierung von Grafik- und Koprozessoren
Terminankündigung:
Am 19.7.2018 findet im gewohnten Vorlesung + Übung Zeitslot die Probeklausur statt. Dauer: 3 Stunden. Am 20.7.2018 werden ausgesuchte Aufgaben daraus besprochen.
Koprozessoren komplementieren die CPU von PCs, Workstations und Server Systemen, da sie spezielle Aufgaben schneller ausführen können, als die CPU es kann. Eine wichtige Art von Koprozessoren, die in den frühen 2000er Jahren entwickelt wurden, sind Grafik Koprozessoren, die i. d. R. als Einschubkarten mit dem Main Board verbunden werden. Grafikprozessoren führen typischerweise die gleiche Aufgabe (z. B. Transformation von Vertizen oder Shading von Pixeln) auf sehr vielen Instanzen auf ein Mal aus, und sind deshalb prädestiniert für hochparallele SIMD Architekturen. Während frühe Grafikprozessoren über dedizierte Recheneinheiten für die zuvor erwähnten Aufgaben verfügten, exponieren moderne Unified Shader Architekturen hunderte bis tausende Rechenkerne, die jeden Rendering bezogenen Task und sogar General Purpose Computing Tasks ausführen können. Da GPUs massiv parallel sind, sind sie heutzutage aus der High Performance Computing (HPC) Welt nicht mehr wegzudenken. Grafikprozessoren haben darüber hinaus die Entwicklung von Many Core Architekturen wie etwa der Intel Xeon PHI Prozessorfamilie maßgeblich mit beeinflusst.
Im Laufe der Vorlesung werden zunächst Grafikprozessoren und ihre historische Entwicklung wiederholt. Ausgehend davon wird eine Systematik zum Verständnis moderner GPU Architekturen entwickelt. Es werden GPGPU Programmierkonzepte sowie neuere Konzepte wie Compute Shader oder das Vulkan API behandelt. Im Verlauf der Vorlesung werden die erlernten Konzepte auch auf andere Prozessorarchitekturen angewandt, sowie auf Systeme, in denen mehrere Koprozessoren verbaut sind. Eine Reihe von Vorlesungseinheiten wird sich dediziert mit Anwendungen befassen, die von Koprozessor Implementierungen profitieren können. In den Übungen werden die erlernten Konzepte anhand von Anwendungsbeispielen vertieft.
Folien zur Vorlesung
- Do, 12.4.2018
Motivation und Übersicht (pdf)
Performanz von Computerprogrammen (1) (pdf)
(Inhalte: Performanzbegriff, Mooresches Gesetz, Powerwall) - Fr, 13.4.2018
Performanz von Computerprogrammen (2) (pdf)
(Inhalte: Caches, Pipelining, SIMD) - Do, 19.4.2018
Performanz von Computerprogrammen (3) (pdf)
(Inhalte: Multi-Threading, NUMA, Verteilte Speichersysteme)
Sonderübung zu C++ (pdf) - Fr, 20.4.2018
Performanz von Computerprogrammen (4) (pdf)
(Inhalte: Amdahlsches Gesetz, Parallele Algorithmen) - Do, 26.4.2018
Rendering Algorithmen (1) (pdf)
(Inhalte: Grundlagen Computergrafik) - Fr, 27.4.2018
Rendering Algorithmen (2) (pdf)
(Inhalte: Sampling Theorie, Rasterisierungsalgorithms) - Do, 3.5.2018
Rendering Algorithmen (3) (pdf)
(Inhalte: Rasterisierung Laufzeit, Deferred Shading, Strahlverfolgung) - Fr, 4.5.2018
Rendering Algorithmen (4) (pdf)
(Inhalte: Strahlverfolgung, Beschleunigungsdatenstrukturen) - Fr, 11.5.2018
Rendering Algorithmen (5) (pdf)
(Inhalte: BVH Konstruktion, Volume & Paralleles Rendering) - Do, 17.5.2018
Rendering Algorithmen (6) (pdf)
Die Grafik Pipeline (1) (pdf)
(Inhalte: Paralleles Rendering, Radix-k, Rendering APIs) - Fr, 18.5.2018
Die Grafik Pipeline (2) (pdf)
(Inhalte: Shader, Historische Entwicklung von GPUs) - Fr, 1.6.2018
Die Grafik Pipeline (3) (pdf)
(Inhalte: Host Interface - Grafiktreiber und Command Prozessor) - Do, 7.6.2018
Die Grafik Pipeline (4) (pdf)
(Inhalte: Vertex Phase, Primitive Assembly) - Fr, 8.6.2018
Die Grafik Pipeline (5) (pdf)
(Inhalte: Raster, Fragment und Output Phase, Kompression) - Do, 14.6.2018
Die Grafik Pipeline (6) (pdf)
Programmieren mit dem Vulkan API (1) (pdf)
(Inhalte: Synchronisation, Mobile GPUs, Vulkan Loader) - Fr, 15.6.2018
Programmieren mit dem Vulkan API (2) (pdf)
(Inhalte: Instanzen, Extensions, Layers, Phys. Devices) - Do, 21.6.2018
Programmieren mit dem Vulkan API (3) (pdf)
(Inhalte: Logical Device, Swap Chains, Shader Module)
Sonderübung zu Git (Shell Skripte) (tar.gz) - Fr, 22.6.2018
Programmieren mit dem Vulkan API (4) (pdf)
(Inhalte: Grafik Pipeline, Framebuffers, Rendering) - Do, 28.6.2018
General Purpose Programmierung auf Grafikprozessoren (1) (pdf)
(Inhalte: Stream Computing, CUDA Speichermodell) - Fr, 29.6.2018
General Purpose Programmierung auf Grafikprozessoren (2) (pdf)
(Inhalte: CUDA Compiler, Kernels und Runtime API) - Do, 5.7.2018
General Purpose Programmierung auf Grafikprozessoren (3) (pdf)
(Inhalte: CUDA Shared Memory, Texturspeicher, Streams) - Fr, 6.7.2018
General Purpose Programmierung auf Grafikprozessoren (4) (pdf)
Sortieren auf GPUs (1) (pdf)
(Inhalte: Thrust, Multi-GPU, Sortiernetzwerke) - Do, 12.7.2018
Sortieren auf GPUs (2) (pdf)
(Inhalte: Bitonic Sort, Implementierung mit CUDA) - Fr, 13.7.2018
Wiederholung ausgesuchter Themen
Übungsblätter
- Übungsblatt 0 (pdf), (Abgabe bis Mi. 18.4.2018 22h in Ilias)
- Übungsblatt 1 (pdf), (Abgabe bis Mi. 25.4.2018 22h in Ilias)
Gerüstprogramm zu Aufgabe 1.2 (tar.gz) - Übungsblatt 2 (pdf), (Abgabe bis Mi. 2.5.2018 22h in Ilias)
Gerüstprogramm zu Aufgabe 2.3 (tar.gz) - Übungsblatt 3 (pdf), (Abgabe bis Mi. 16.5.2018 22h in Ilias)
Gerüstprogramm zu Aufgabe 3.3 (tar.gz)
Gerüstprogramm zu Aufgabe 3.4 (tar.gz) - Übungsblatt 4 (pdf), (Abgabe bis Mi. 6.6.2018 22h in Ilias)
Gerüstprogramm zu Aufgabe 4.3 (tar.gz) - Übungsblatt 5 (pdf), (Abgabe bis Mi. 13.6.2018 22h in Ilias)
Gerüstprogramm zu Aufgabe 5.2 (tar.gz) - Übungsblatt 6 (pdf), (Abgabe bis Mi. 20.6.2018 22h in Ilias)
Gerüstprogramm zu Aufgabe 6.1 (tar.gz) - Übungsblatt 7 (pdf), (Abgabe bis Mi. 27.6.2018 22h in Ilias)
Gerüstprogramm zu Aufgabe 7.1 (tar.gz)
Gerüstprogramm zu Aufgabe 7.2 (tar.gz)
Gerüstprogramm zu Aufgabe 7.3 (tar.gz) - Übungsblatt 8 (pdf), (Abgabe bis Mi. 4.7.2018 22h in Ilias)
Gerüstprogramm zu Aufgabe 8.1 (tar.gz)
Gerüstprogramm zu Aufgabe 8.2 (tar.gz) - Übungsblatt 9 (pdf), (Abgabe bis Mi. 11.7.2018 22h in Ilias)
Gerüstprogramm zu Aufgabe 9.1 (tar.gz)
Gerüstprogramm zu Aufgabe 9.3 (tar.gz)
Vorlesung: | Architektur und Programmierung von Grafik- und Koprozessoren in Klips2 | Donnerstags, 12.00-13.30 Uhr Freitags, 12.00-13:30 Uhr |
---|---|---|
Übung: | Architektur und Programmierung von Grafik- und Koprozessoren in Klips2
| Donnerstags, 14.00-15.30 Uhr Beginn: 12.4.2018 Raum: Großer Hörsaal XXX ("Alte Botanik", Gyrhofstraße 15) |
Begleitmaterial: | ILIAS E-Learning-System (Nur für Vorlesungsteilnehmer) | |
Mailing-Liste: | apgk-vorlesung |