Einleitung
Der Begriff GPGPU (General Purpose GPU) taucht seit einiger Zeit immer häufiger auf, sobald es um Grafikkarten geht. Nun ist Planet 3DNow! zugegebenermaßen nicht unbedingt berühmt für seine ausführlichen Tests von Grafikkarten und dieser Artikel wird auch nicht versuchen das zu ändern. Allerdings verdient es schon Beachtung, wenn die Grafikschmieden den Anspruch erheben, dass ihre GPUs nicht mehr nur immer schneller immer aufwändigere Grafik rendern können. Vielmehr sollen sie auch für allgemeine Aufgaben (engl.: general purpose) eingesetzt werden und die herkömmlichen CPUs dort um Faktor 10 oder mehr überflügeln.
Der Grundstein für diese Entwicklung wurde mit der Erweiterung des klassischen Ablaufs des Grafik-Renderings gelegt. Statt einer Abfolge von Transformation der 3D-Koordinaten der Objekte in Bildschirmkoordinaten und Beleuchtungsberechnung, Rasterisation und Texturierung mittels fester, in Hardware gegossener Routinen können jetzt für jeden Vertex (Eckpunkt eines Dreiecks) und für jeden Pixel vom Spieleprogrammierer definierte kleine Programme ausgeführt werden, die diese Aufgabe übernehmen und die Erzeugung aufwändiger Effekte ermöglichen. Dies sind die sogenannten Vertex- bzw. Pixelshader oder einfach Shader.
Mit jeder neuen GPU-Generation wurden diese Möglichkeiten erweitert und Beschränkungen aufgehoben. Schon früh wurde deshalb von einigen Enthusiasten versucht, die Grafik-Hardware auch für andere Zwecke einzusetzen. Nun allerdings stellen beide großen Hersteller Schnittstellen bereit, die speziell für GPGPU gedacht sind. Außerdem haben sie in den letzten beiden Jahren Features nur für die Verbesserung des GPGPU-Computing in der Hardware integriert, die für das Grafikrendering nicht eingesetzt werden. Dies zeigt, dass die Hersteller das Thema durchaus für wichtig erachten.
Dieser Artikel will einen Einblick in dieses Thema bieten. Er soll dem bisher vielleicht CPU-zentrierten Planet 3DNow!-Leser die Hardwareunterschiede zwischen CPUs und GPUs etwas näher bringen und auch ein paar grundlegende Prinzipien erläutern, die sich daraus für die Programmierung der GPUs ergeben. Schließlich wird an ein paar einfachen Beispielen gezeigt, dass die Programmierung von GPUs gar nicht so schwierig sein muss.
Diesen Artikel bookmarken oder senden an ...