Grafikkarte mal anders: Das leisten Nvidia CUDA und PhysX heutzutage

 2/13
Wolfgang Andermahr
162 Kommentare

GPU-Computing und mehr

Angefangen hat alles mit einer kleinen GPGPU-Gemeinde (General Purpose Computation on Graphics Processing Unit), die mit der Zeit immer größer geworden ist und immer mehr Anhänger gefunden hat. Sie hatte erkannt, dass man eine Grafikkarte zu mehr Nutzen kann als nur der 3D-Darstellung und Videobeschleunigung. Den Entwicklern entsprechender Software war bei ihrer Arbeit allerdings immer bewusst, dass sie auf einem 3D-Beschleuniger programmierten, da man eine Sprache verwenden musste, die die Hardware versteht: Direct3D oder alternativ OpenGL.

Man musste also mehr oder weniger „grafisch programmieren“ können und dementsprechend die notwendigen Kenntnisse besitzen, obwohl die Programme gar nichts mit Optik am Hut haben. Mittlerweile sind sowohl ATi als auch Nvidia einen Schritt weiter und bieten speziell für GPU-Computing (Rechnen auf der GPU ohne Grafik) eine Hochsprache an, mit der es einfacher wird, GPU-Programme zu entwickeln, ohne auf Direct3D oder OpenGL zurückgreifen zu müssen. Damit wurde ein erster wichtiger Schritt getan, um GPU-Computing attraktiver zu machen, auch wenn sich die Implementierungen von ATi und Nvidia (mal wieder) unterscheiden. Weitere Schritte scheinen also unausweichlich.

Mit der Direct3D-11-API scheint allerdings bereits eine Lösung in Sicht. Die Microsoft-API soll einen so genannten „Compute Shader“ unterstützen, also einen neuen und vor allem einheitlichen Standard für allgemeine Berechnungen, womit das GPU-Computing den endgültigen Durchbruch feiern sollte – genauso wie sich die 3D-Grafik erst mit einer einheitlichen API durchsetzen konnte. Bis dahin muss man aber noch mit den (sicherlich nicht schlechten) konkurrierenden Lösungen der Hersteller Vorlieb nehmen.

Nvidia CUDA

Nvidias selbst entwickelte Hochsprache hört auf den Namen CUDA (Compute Unified Device Architecture) und ist der herkömmlichen C-Programmierung sehr ähnlich. Mit CUDA programmierte Programme können von einem wichtigen Vorteil profitieren: Nicht nur, dass sie auf sämtlichen CUDA-fähigen GPUs funktionieren (ab der GeForce-8000-Serie sind generell alle Nvidia-GPUs CUDA-fähig, obwohl teilweise noch der Treiber fehlt), darüber hinaus bedürfen die Programme keinerlei Anpassungen für zukünftige Grafikkarten. Die Software wird zum Beispiel genauso auf einem GT300 einwandfrei laufen.

Wer mit CUDA programmieren möchte, benötigt nur das CUDA-SDK (Software Developer Kit), das man sich kostenlos in der „CUDA Zone“ herunterladen kann. Zur Zeit gibt es primär wissenschaftliche Software für CUDA, die sich unter anderem mit der Wettersimulation oder einigen medizinischen Darstellungen beschäftigt, jedoch sind ebenso diverse Mainstream-Applikationen in der Entwicklung, die demnächst den Weg auf den Markt finden werden. Aktuell gibt es für die Öffentlichkeit nur das Tool „Folding@Home“ in einer GPU-Version zum Herunterladen.

PhysX
PhysX

Uns steht zudem der „BadaBOOM Media Converter“ von Elemental Software zur Verfügung, mit dessen Hilfe man auf der GPU Videos von einem Codec in einen anderen transcodieren kann. So ist es möglich, MPEG2-Videos mittels des H.264-Codecs in ein Format zu wandeln, das man auf sämtliche tragbaren Apple-Produkten wie dem iPod Nano, iPod Classic oder auch dem iPhone wiedergeben kann. Der BadaBOOM Media Converter befindet sich aber noch in der Entwicklung und wird erst in Kürze für jedermann zu haben sein.

Zusätzlich wird es von vielen anderen Mainstream-Tools eine CUDA-Version geben, wobei diesbezüglich noch nicht allzu viele Details bekannt sind. Es ist allerdings ein offenes Geheimnis, dass Adobe an einer Photoshop-Version arbeitet, die massiv die GPU zur Darstellung nutzt und diverse Filtereffekte auf der Grafikkarte berechnen kann. Auch wird es ein Audiotool geben, mit dem man Audiodateien von einem Codec in einen anderen Wandeln kann. Weitere Details sind allerdings noch offen.

Mainstream-Standalone-Software für CUDA ist also zu einem Großteil noch reine Zukunftsmusik, hört sich aber schon jetzt eindrucksvoll an. Ob die Realität dann genauso eindrucksvoll werden wird, kann aber nur die Zeit zeigen. Was jetzt schon möglich ist, ist eine andere CUDA-Implementierung, die seit kurzer Zeit zum Download bereit steht: Die Rede ist von PhysX auf der GPU.