GPGPU steht für General-Purpose computing on Graphics Processing Units – also die Nutzung einer GPU für allgemeine Berechnungen, nicht nur zum Zeichnen von Bildern. Moderne GPUs sind keine reinen Grafikchips mehr, sondern massiv parallele Rechenwerke, die tausende Threads gleichzeitig ausführen können.

Warum GPUs für allgemeine Berechnungen?

Eine GPU besteht aus vielen einfachen Rechenkernen (mehrere tausend), die nach dem Prinzip von SIMD arbeiten – Nvidia nennt das SIMT (Single Instruction, Multiple Threads). Während eine CPU wenige, aber sehr schnelle Kerne hat (superskalar, out-of-order), opfert die GPU einzelne Kern-Performance für rohen Durchsatz: Ideal für Aufgaben, die sich in viele unabhängige Teilberechnungen zerlegen lassen.

Geschichte

Ab etwa 2001 wurde GPGPU praktikabel, als Grafikprozessoren programmierbare Shader und Gleitkomma-Einheiten bekamen. Forscher nutzten Shader-Sprachen, um physikalische Simulationen auf der Grafikkarte laufen zu lassen. Den Durchbruch brachte 2007 CUDA von Nvidia: eine C-artige Programmierschnittstelle, die GPGPU für normale Entwickler öffnete. Die offene Alternative OpenCL (Khronos Group) unterstützt GPUs, CPUs und andere Beschleuniger verschiedener Hersteller.

Arbeitsweise

  • Kernel: Eine Funktion, die auf vielen Datenpunkten parallel ausgeführt wird – z.B. „addiere 1 zu jedem Pixel“.
  • Thread-Hierarchie: Tausende Threads werden in Blöcken organisiert; die GPU verteilt sie auf ihre Kerne.
  • Speicherhierarchie: Globaler Speicher (langsam, groß), Shared Memory (schnell, pro Block) und Register – die effiziente Nutzung entscheidet über die Leistung.
  • Datentransfer: Daten müssen in den GPU-Speicher kopiert werden; der Transfer über PCIe ist oft der Flaschenhals.

Anwendungen

  • Maschinelles Lernen: Training von neuronalen Netzen (Matrix-Multiplikationen)
  • Wissenschaftliches Rechnen: Klimasimulation, Molekulardynamik, Folding@home
  • Grafik-Rendering, Video-Encoding und Bildbearbeitung
  • Kryptografie und Passwort-Hashing (siehe Salt)

Abgrenzung

CUDA ist Nvidias proprietäre Plattform, OpenCL der herstellerübergreifende Standard. Ein DSP dagegen optimiert einzelne, zeitkritische Signalströme; die GPU glänzt bei breiten, unabhängigen Datenmengen. Der virtuelle Speicher und die MMU der GPU sind Teil der modernen Architektur, bleiben für den Programmierer aber meist unsichtbar.

Verwandte Grundlagen: Register-Bank, Mikroarchitektur, VLIW.