GPU- und Akzelerator-Computing
GPU- und Akzelerator-Computing nutzt massiv parallele Mehrkernprozessoren, um datenparallele Arbeitslasten weit über die Leistungsfähigkeit von Allzweck-CPUs hinaus zu beschleunigen.
Definition
GPU- und Akzelerator-Computing ist die Verwendung spezialisierter Mehrkernprozessoren, die für einen hohen Durchsatz bei datenparalleler Ausführung optimiert sind, um die parallelisierbaren Teile einer Berechnung unter einem Host-Device-Programmiermodell auszuladen und zu beschleunigen.
Scope
Dieses Thema behandelt die Architektur von Grafikprozessoren und anderen Akzeleratoren als durchsatzorientierte Mehrkern-SIMD/SIMT-Maschinen; die Programmiermodelle, die auf sie abzielen (CUDA, OpenCL und direktivenbasiertes Offloading); die Thread-Hierarchie- und Speicherhierarchie-Abstraktionen (Threads, Warps, Blöcke, Grids; globaler, geteilter und Register-Speicher); und die Leistungsüberlegungen – Belegung (Occupancy), Speicherkonsolidierung (Memory Coalescing) und Divergenz (Divergence) –, die den erreichbaren Durchsatz bestimmen.
Core questions
- Wie unterscheidet sich das durchsatzorientierte Mehrkern-Akzelerator-Modell von einer Allzweck-CPU?
- Wie werden Berechnungen als massiv parallele Kernels über eine Thread-Hierarchie ausgedrückt?
- Welche Speicher- und Ausführungsverhalten – Konsolidierung (Coalescing), Divergenz (Divergence), Belegung (Occupancy) – begrenzen die erreichbare Leistung?
Key theories
- SIMT-Ausführungsmodell
- GPUs führen Tausende von leichtgewichtigen Threads aus, die in Warps gruppiert sind und im Gleichschritt (Single-Instruction, Multiple-Thread) ausgeführt werden; die Leistung hängt davon ab, Warps ausgelastet zu halten und Kontrollfluss-Divergenz innerhalb eines Warps zu vermeiden.
- Hierarchisches Thread- und Speichermodell
- CUDA organisiert Threads in Blöcken und Grids und stellt eine Speicherhierarchie aus Registern, schnellem Shared Memory und großem globalem Speicher bereit; die Abbildung von Daten und Berechnungen auf diese Hierarchie ist die zentrale Aufgabe zur Leistungsoptimierung.
- Allgemeines GPU-Computing
- Die Entwicklung von festverdrahteten Grafik-Pipelines zu programmierbaren, universellen Akzeleratoren machte GPUs zu einer Mainstream-Plattform für wissenschaftliches und datenintensives Computing.
Clinical relevance
Akzeleratoren sind die Arbeitspferde moderner rechenintensiver Anwendungen: Deep-Learning-Training und -Inferenz, wissenschaftliche Simulationen, Bild- und Signalverarbeitung sowie Kryptographie verlassen sich alle auf GPUs für Größenordnungen an Beschleunigung gegenüber CPUs.
History
GPUs entwickelten sich von festverdrahteter Grafikhardware zu programmierbaren Parallelprozessoren; die Veröffentlichung von CUDA im Jahr 2007, beschrieben von Nickolls und Kollegen im Jahr 2008, machte das allgemeine GPU-Computing zugänglich, und Akzeleratoren wurden anschließend zentral für Hochleistungs- und maschinelles Lernen.
Key figures
- John Nickolls
- Wen-mei Hwu
- David Kirk
- John Owens
Related topics
Seminal works
- nickolls2008
- kirk2016
- owens2008
Frequently asked questions
- Warum sind GPUs für bestimmte Arbeitslasten so viel schneller als CPUs?
- GPUs widmen einen wesentlich größeren Teil ihrer Transistoren den arithmetischen Einheiten und führen Tausende von Threads aus, um Speicherlatenz zu verbergen, wobei sie Einzel-Thread-Geschwindigkeit gegen aggregierten Durchsatz tauschen. Dies macht sie hervorragend für regelmäßige, hochgradig datenparallele Arbeiten geeignet, jedoch schlecht für verzweigte, latenzempfindliche Codes.