GPU: Evolutionsverlauf zu Vielkernprozessoren
Wie stellen sich die klugen Köpfe hinter Geforce & Co. die Zukunft der 3D-Grafik vor? Dieser Artikel von Nvidias Chef-wissenschaftler David Kirk zeigt künftige Möglichkeiten und neue Einsatzgebiete für die Rechenleistung der GPU. [br]
GPU: Evolutionsverlauf zu Vielkernprozessoren
Die programmierbare und flexible GPU ist einer der mächtigsten Prozessoren der Welt. Seit dem Jahr 2000 haben die jeweiligen Prozessorkerne der GPUs Daten nach dem Gleitkommastandard der IEEE verarbeitet - genau wie eine als "echter Computer" wahrgenommene CPU.
Die rohe Gleitkomma-Rechenleistung einer modernen GPU ist höher und wächst zudem noch schneller als die entsprechender CPUs. Deshalb wurde der GPU verstärkte Beachtung durch die IT-Welt zuteil. Sogar ein eigener Entwicklungszweig namens GPGPU wurde ins Leben gerufen, um dem Wunsch zu entsprechen, die zur Verfügung stehende Rechenleistung auch für andere Einsatzzwecke als Grafik nutzbar zu machen. GPGPU steht für "General Purpose Processing on GPUs", also allgemeine Berechnungen mit der GPU. In jüngerer Vergangenheit wurde der Zugang zu diesem Vorhaben des GPU-Computings durch die Einführung von Nvidias Programmierumgebung CUDA (Compute Unified Device Architecture) stark vereinfacht. CUDA ermöglicht es, für GPUs in der für die meisten Programmierer gewohnten Sprache "C" zu entwickeln, statt die für 3D-Grafik entworfenen APIs Direct X oder Open GL nutzen zu müssen. Nicht nur GPUs, sondern alle Prozessoren entwickeln sich und unterliegen Veränderungen. Ein Beispiel ist die schwierige Entwicklung von Single- zu Multicore, welche CPUs gerade durchmachen. Aufgrund von Problemen mit hoher Leistungsaufnahme und entsprechend hoher Wärmeabgabe ist es seit einiger Zeit kaum noch möglich, nur durch höhere Taktraten CPUs zu beschleunigen. Auf der anderen Seite ist es recht einfach, einem Chip zusätzliche CPU-Kerne hinzuzufügen - allerdings ist das auch das Einzige, was noch einfach ist. Für die Programmierer ist es schwer, das Konzept effektiver Programmierung für Multicore-Prozessoren zu begreifen. Sie können nicht - wie in vergangenen Jahrzehnten - einfach 18 bis 24 Monate warten, bis ein höher getakteter Prozessor ihr Single-CPU-Programm doppelt so schnell abarbeitet.
Quelle: Bild: Nvidia
Nvidias David Kirk über die Zukunft der GPU: Global Illumination (hier abgeschaltet) via Raytracing - kein Problem für die GPU (Bild: Nvidia)
Die gesamte Industrie tüftelt an der Überarbeitung traditioneller Algorithmen, um Multicore-CPUs ausnutzen zu können, während Programmierern auf der anderen Seite mit dem GPU-Computing ein mächtiges Werkzeug zur Verfügung steht. Heutzutage profitieren nur verhältnismäßig wenige Programme von Mehrkernprozessoren. Im Gegensatz dazu steht die einfach zu nutzende GPU-Umgebung, unterstützt von den großen Grafik-APIs und der Programmiersprache C. Und obwohl es eine quasi natürliche Evolution der GPU ist, sie für parallele Rechenprobleme zu nutzen, fällt es schwer, dasselbe mit CPUs zu demonstrieren: Einfach einen Haufen CPUs zu "verclustern", ergibt noch keinen integrierten parallelen Prozessor. Eine GPU besteht im Gegensatz dazu aus vielen parallelen Prozessorkernen, welche speziell dazu entworfen wurden, gleichzeitig an einem Problem zu arbeiten. GPUs sind in gewisser Weise bereits seit beinahe zehn Jahren eine Art Multicore-Prozessoren. Nvidias 1998 vorgestellter Riva TNT bestand aus zwei Pixel-Pipelines und zwei Textureinheiten. Dank des rasanten Fortschritts besteht der aktuelle Geforce-8800-Chip aus 128 Prozessorkernen, von denen jeder viele Threads - oder Programme - gleichzeitig ausführen kann.
Insgesamt kommt man so auf eine Summe von über 12.000 quasi-paral-lel abgearbeiteten Aufgaben - Pixel, Vertizes oder Dreiecke. Stellen Sie sich vor, diese Dimen-sion von Parallelität und Durchsatz auf einer Dual- oder Quadcore-CPU erreichen zu wollen. Es ist schlicht unmöglich. Dabei ist das noch gar nicht alles: Zusätzlich zu den 12.000 (und mehr) Aufgaben im Pixel- oder Vertex-bereich fallen gleichzeitig in anderen Einheiten der GPU noch Tausende weiterer Aufgaben an, die ebenfalls erledigt werden müssen: Texturberechnungen, Rasterisierung, HSR über den Z-Buffer, Color-Blending für Transparenzeffekte und Anti-Aliasing. Das wäre ohne die spezialisierten Hardware-Einheiten einer GPU nicht möglich und würde Hunderte, wenn nicht Tausende von CPU-Kernen auslasten.
