evolution ofgpus - fau · seminar: multi-core architecturesandprogramming. ... purpose-berechnungen...
TRANSCRIPT
Evolution of GPUsDie Entwicklung der Graphics Processing Units
Marvin Kampf und Michael Moese
Seminar: Multi-Core Architectures and Programming
Was bedeutet „Entwicklung hin zur GPU“?
• Hinzufügen von „Programmierbarkeit“
• Von fixen Funktionsleitungen zuo mikroprogrammgesteuerten Prozessoreno programmierbaren Prozessoreno skalierbaren Parallelprozessoren
• Zusätzlicher Anwendungsbereich: GPGPUo General Purpose Computation on Graphics Processing Unit
Ausnutzen des hohen Parallelitätsgrades bei Nicht-Grafik-Anwendungen
2
Motivation für GPGPU
• normale Prozessoren stoßen allmählich an ihre Leistungsgrenzen:o Taktfrequenzeno Parallelausführung von Instruktioneno mehr Fehler im Fertigungsprozess bei mehr Flächeo TDP steigt immer weitero Einfluss von kosmischem Rauschen steigt
Trend zu vielen einfachen, statt wenigenhochkomplexen Prozessoren
3
Chronologische Entwicklung der GPU
Von der Grafikkarte zur GPU:
• Mitte 1980er bis 1997: Vor den GPUs
• 1999 bis 2004: Frühe GPUs
• 2006 Unified Computing und GPUs
• Seit 2007: GPU Computing Systems
4
Vor den GPUs (1)
• frühe Vorläufer: CGA-, EGA-, VGA-Controllero ursprünglich nur zur als Bindeglied zwischen Prozessor und Bildschirm
(frühe 1980er)o Beschleunigung von 2D-Benutzeroberflächen
• Mitte der 1980ero Atari ST und Amiga: erste Beschleunigungs- funktionen („bitblitting“:
Kopier- und Verschiebe- Operationen auf Speicher)o Im PC: Übergang von DOS zu Windows, einfache Befehle, wie
„zeichne Viereck“
5
Vor den GPUs (2)
• Mitte der 1990er Jahre: erste 3D-Beschleuniger („3dfxVoodoo Graphics“) mit Hardwarebeschleunigung fürdreiecksbasierte Algorithmen:o Antialiasingo Texture Mappingo Z-Buffer (Tiefenpuffer)o programmierbar mit: Glide
• 1997: NVIDIA Riva 128o 3D-Beschleuniger für Spiele und 3D-Visualisierungo programmierbar mit: Direct3D, OpenGL
6
Microsoft DirectX
• API und Laufzeitumgebung für Spiele von Microsoft
• seit Windows 95, auch für XBox
• später gaben die DirectX-Versionen die minimalen Funktionen für
Grafikhardware vor
• Wichtigste Komponente: Direct3D, als Alternative zu OpenGL
7
Frühe GPUs (1)
• 1999: Nvidia GeForce 256
o Erste GPU
o Single-Chip 3D Echtzeit Grafikprozessor
o 32-bit Floating-Point-Prozessor
o konfigurierbare Integer Pixel-Fragment-Pipeline
o Einheit für Hardware-T&L (Transform & Lightning)
o programmierbar mit: DirectX 7, OpenGL
8
Frühe GPUs (2)
• 2001: GeForce 3
o Erster programmierbarer Vertex-Prozessor
• kann Vertex-Shader-Programme ausführen
• weniger später: Pixel-Shader
o konfigurierbare 32-bit Floating-Point Pixel-Fragment-Pipeline
o programmierbar mit: DirectX 8, OpenGL
9
Frühe GPUs (3)
• 2002: ATI Radeon 9700
o programmierbare 24-bit Floating-Point Pixel-Fragment-Prozessor
o programmierbar mit: DirectX 9, OpenGL
• 2002-2004: GeForce FX, GeForce 6800
o programmierbare 32-bit Floating-Point Pixel-Fragment- und Vertex-
Prozessor
o programmierbar mit: DirectX 9 (HLSL), OpenGL (GLSL), Cg
10
Shading Languages (1)
• z.B. DirectX HLSL oder C for graphics
• Skalierbares, paralleles Programmiermodell („High Level Shader
Language“)
• Zum Schreiben von Programmen, wie:
o Vertex-Shader
o Pixel-Shader
o Geometry-Shader
11
Shading Languages (2)
• Beispiel:o C-Programm für einzelnes Pixel-Fragment (oder einzelnen Vertex)
schreiben
12
Multithread GPU erstellt unabhängige Threads, dieShader-Programm ausführen und Pixel (bzw. Vertex)zeichnen
Shader-Programm
Shader-ProgrammThreads
GPU
Pixel-Fragmente
„Pixel-Shader“
Shading Languages (3)
• Neben Renderaufgaben von Echtzeit-Grafik wurde Cg auch für, zum
Beispiel, physikalische Simulationen oder anderen General-
Purpose-Berechnungen verwendet (GPGPU)
→ Erreichten hohe Performance, aber waren schwer zu schreiben,
da Nicht-Grafik-Berechnungen mit einer Grafik-API wie OpenGL
ausgedrückt werden mussten
13
Unified Computing und GPUs (1)
• 2006: NVIDIA GeForce 8800
o Erste Unified Graphics and Computing - Architektur
o Hardware Multithreading: 12288 Threads gleichzeitig in 128
Prozessorkernen ausführbar
o programmierbar mit: DirectX 10, OpenGL, C (mittels CUDA parallel
computing model)
14
Unified Computing und GPUs (2)
• GeForce 8800 (Fortsetzung)o Erste GPU mit Skalarprozessoren statt Vektorprozessoren
• Befehle zur Unterstützung von C und anderen General-Purpose-Programmiersprachen
• Befehle und Hardware zur Unterstützung von Parallelität,Kommunikation und Synchronisation (Thread-Arrays, SharedMemory, …)
o Streamprozessoren (Unified Shader)• einheitlicher Pool, dem Vertex-, Pixel- und Geometry-Shader-
Programme zugewiesen werden• oder auch allgemeine Berechnungen mittels CUDA C-Programmen
15
Grafikpipeline
• Modell aller Schritte einer Bildsynthese• Grobe Aufteilung der Renderschritte in:
o Anwendung → Geometrie → Rasterung
• Einführung der Compute-Shader (GPGPU)
16
Vor DirectX10:
Aktuell:
GPU Computing Systems (1)
Zusammenschluss von Rechen-Clustern aus mehrerer GPU-Knoten
• 2007: Tesla C870, D870, S870o beinhalten 1, 2 oder 4 T8 GPUs
• basiert auf GeForce 8800• konfiguriert für paralleles Rechnen• erstmals mit IEEE-Konformer Gleitkomma-Arithmetik
• 2008: Tesla C1060, S1070o benutzt T10 GPUs
• basierend auf GeForce GTX 280• mit 240 Prozessorkernen, 4GB DRAM Speicher
o heute: Tesla S1070 Systeme mit Tausenden GPUs
17
GPU Computing Systems (2)
• 2009: Fermi
o 512 Prozessorkerne
o ECC (Error Correction Code) Speicherschutz
o 64-bit Speicheradressierung
o Cache-Speicherhierarchie
o Befehle für C, C++, Fortran, OpenCL, DirectCompute
18
GPGPU als Anwendungsbeschleuniger (1)
• Lineare Algebra mit Pixel- und Vertex-Shader
o Stark- oder dünnbesetzte Matrizen (dense, sparse) und Vektoren als
Texturen repräsentiert
o Berechnung auf der GPU durch Shader-Programme
21
GPGPU als Anwendungsbeschleuniger (2)
• Simulation von Flüssigkeiten
o Allgemein: Lösen von Navier-Stokes-Gleichungen(bei Interesse:
http://de.wikipedia.org/wiki/Navier-Stokes-Gleichungen)
o Beschreibung des Impulssatzes für reibungsbehaftete, newtonsche
Fluide wie Wasser, Luft oder Öl durch Differentialgleichungen
o Beschleunigung durch GPU-Berechnungen um mehr als eine
Größenordnung
22
GPGPU als Anwendungsbeschleuniger (3)
• Digitale Signalverarbeitung
o Faltungsbasierte Diskrete Wavelet-Transformation
(http://de.wikipedia.org/wiki/Wavelet-Transformation)
o Faltung: Gewichtung einer zeitabhängigen Funktion mit einer anderen
durch Lösen einer Integralgleichung (zeitdiskret: Summe)
o Performance-Zuwachs gegenüber normalem PC
23
GPGPU als Anwendungsbeschleuniger (4)
• Datenbank-Operationen
o GPU bietet oftdeutliche Geschwindigkeitsvorteile bei relationalen
Abfragen, konjunktiver Auswahl oder Aggregationen
• Moleküldynamik
o „cutoff pair potentials“ eine der wichtigsten Berechnungen
o Ergebnisse 12 bis 20 mal schneller sichtbar als reine CPU-Berechnung
24
GPGPU als Anwendungsbeschleuniger (5)
• High Performance Computing
o Durch NVIDIA‘s Tesla-Karten Einzug des GPGPU-Computings in
große Rechenzentren als Beschleuniger
o Manche Supercomputer erreichen zwei Drittel ihrer Rechenleistung
durch GPUs.
25