Evolution ofGPUs - FAU · Seminar: Multi-Core ArchitecturesandProgramming. ... Purpose-Berechnungen...

27
Evolution of GPUs Die Entwicklung der Graphics Processing Units Marvin Kampf und Michael Moese Seminar: Multi-Core Architectures and Programming

Transcript of Evolution ofGPUs - FAU · Seminar: Multi-Core ArchitecturesandProgramming. ... Purpose-Berechnungen...

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

Fermi - Blockdiagramm

19

Kepler - Blockdiagram

20

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

26

Vielen Dank.

Quellen

John Nickolls and William J. Dally. 2010. The GPU Computing Era.IEEE Micro 30, 2 (March 2010)

Enhua Wu and Youquan Liu. 2008. Emerging technology aboutGPGPU. Circuits and Systems. IEEE Asia Pacific Conference (Nov.30 2008 - Dec. 3 2008)

27