FAQ: GPU Features im Detail
Grafikkarte rechnet mit
Die Anforderungen moderner Software an Computer und Notebooks wachsen zunehmend. In Windeseile sollen beispielsweise riesige Videodateien von einem Format ins andere wechseln oder unkomprimierte Musik zu kleinen MP3-Dateien schrumpfen. Ein PC-Spiel soll möglichst realistisch wirken und bei jeder Aktion ein flüssiges Bild mit großer Detailgenauigkeit ohne Verzögerungen bieten. Auch in den Forschungszentren von Universitäten und Firmen verlangen aufwendige Simulationen Höchstleistungen von Prozessor und Co. Nicht selten sind jedoch selbst neueste Prozessoren, die auf zahlreiche Rechenkerne zugreifen können, so stark ausgelastet, dass es zu lästigen Wartezeiten kommen kann. Mögliche Folge sind auch sichtbare Einschnitte bei der Darstellungsqualität, damit der Computer dennoch einen flüssigen Bewegungsablauf gewährleisten kann. Für ein PC-Spiel bedeutet das: Zahlreiche Details wie Spiegelbilder, Reflexionen oder Rauchentwicklung, die ein Bild und Bewegungsabläufe erst realistisch erscheinen lassen, müssen verschwinden oder stark vereinfacht auf den Monitor gelangen. Teilweise sinkt auch die Bildwiederholrate, sodass die Bewegungen nicht mehr flüssig erscheinen.
Um das zu vermeiden und den Prozessor bei seiner Arbeit zu unterstützen, bietet es sich an, einen Teil der Rechenaufgaben auf den Grafikprozessor zu übertragen. Dieser ist für viele Berechnungen sogar deutlich besser geeignet und wartet häufig ungenutzt oder unterbeschäftigt auf Arbeitsaufträge. Zudem ist ein Grafikprozessor auf die parallele Berechnung tausender Operationen spezialisiert und erledigt diese daher besonders schnell. Damit die Aufteilung der Rechenoperationen reibungslos funktioniert, ist ein Koordinator nötig. Er splittet die Aufgaben auf, verteilt sie und sorgt dafür, dass es ein stimmiges Ergebnis gibt. Die Techniken, die dafür infrage kommen, sind CUDA mit dem integrierten Physik-Motor PhysX und OpenCL.
CUDA
CUDA steht für Compute Unified Device Architecture und ist eine von Nvidia entwickelte Technik. Sie erlaubt, parallele Rechenaufgaben, die für den Hauptprozessor vorgesehen sind, auf den Grafikprozessor auszulagern. Die Folge ist ein doppelter Geschwindigkeitsgewinn. Einerseits hat der Hauptprozessor Zeit für andere Aufgaben. Andererseits kann ein Grafikprozessor parallele Aufgaben deutlich schneller abarbeiten als der Prozessor. Voraussetzung jedoch: Die Software muss für CUDA optimiert sein. Andernfalls findet keine Arbeitsteilung statt.
Die Geschwindigkeitssteigerung durch den Einsatz von CUDA kann mit optimierter Software immens sein. Je nach Anwendung laufen Berechnungen etwa zwischen 10- und 200-mal schneller ab. Wartezeiten bei wissenschaftlichen Simulationen lassen sich beispielsweise durch die Hilfe von CUDA mitunter von 20 Minuten auf 30 Sekunden reduzieren. Berechnungen, die ohne CUDA 30 bis 40 Sekunden Wartezeit nach sich ziehen, laufen mit der Technik teilweise in Echtzeit ab.
CUDA war anfänglich nur für wissenschaftliche Software entwickelt, die hohe Anforderungen an computergestützte Visualisierungen und Simulationen hat, kommt aber zunehmend auch in privaten Umgebungen zum Einsatz; dort hauptsächlich in PC-Spielen. Eines der ersten Programme, das wissenschaftliche Forschung unterstützt und auch auf Privat-PCs zum Einsatz kommt, ist das von der Universität Berkeley betriebene SETI@Home-Projekt, das sich mit der Suche nach außerirdischen Lebensformen im Weltraum befasst.
Mindestvoraussetzung zur Nutzung von CUDA ist eine Nvidia-Grafikkarte der Serie Geforce 8. Auch zahlreiche Quadro-Grafikkarten und solche der Tesla-Reihe unterstützen CUDA. Ebenso unterstützen Notebookversionen der jeweiligen Grafikchips die Technik. Eine komplette Liste der unterstützen Geforce-Grafikkarten finden Sie bei Nvidia. Kompatible Spiele und weitere Software, die von CUDA profiziert, finden Sie hier.
PhysX
Durch die Integration von PhysX in die CUDA-Technologie fand die Technik auch den Weg auf Privat-PCs. PhysX ist eine von Nvidia entwickelte Physik-Engine, die ebenfalls den Hauptprozessor entlasten und Berechnungen beschleunigen soll. Eine Physik-Engine berechnet die Bewegung physikalischer Objekte, also Körper, Kleidung aber auch Haut, Haare und Ähnliches und ermöglicht eine realitätsnahe Darstellung. Besonders aufwendig ist die Berechnung von flüssigen und gasförmigen Stoffen wie Wasser, Öl, Lava, Rauch, Wasserdampf, respektive Nebel und auch Feuer, die ebenfalls zu den physikalischen Aktionen zählen.
PhysX leitet einen Teil derart aufwendiger Rechenaufgaben vom Hauptprozessor auf den Grafikprozessor um. Die Folge sind verkürzte Rechenzeit, schnellere Programmabläufe und bei Computerspielen eine höhere Bildwiederholrate und/oder auch eine höhere Darstellungsqualität. Die zusätzliche Rechenkraft ermöglicht mitunter auch, zusätzliche grafische Effekte darstellen zu können. Sind Haupt- und Grafikprozessor ein besonders leistungsfähiges Team, führt der Einsatz von PhysX zu höchsten Bildraten bei gleichzeitig besonders realistischer Darstellung.
PhysX funktioniert nur mit Grafikprozessoren von Nvidia. Alle modernen Grafikkarten der Geforce-Serie unterstützen die Technik, wenn sie mindestens 32 Grafikeinheiten besitzen und über 256 Megabyte Speicher verfügen. Bessere Ergebnisse lassen sich jedoch mit 512 Megabyte Speicher erzielen. Inzwischen läuft die PhysX-Engine auch auf den Spielkonsolen Nintendo Wii, Sony Playstation und Microsoft Xbox 360. Eine komplette Liste aller Nvidia-Grafikprozessoren, die PhysX unterstützen, finden Sie hier.
Sind zwei oder mehr Grafikkarten im PC installiert, ist es möglich, eine der Karten komplett für die Physik-Engine abzustellen. Besonders praktisch: Dabei muss es sich nicht um identische Grafikprozessoren handeln. Die PhysX-Engine ist Bestandteil von Nvidias CUDA-Technologie.
Ein beachtlicher Teil moderner PC-Spiele unterstützt PhysX, so auch das populäre Borderlands2 und Deep Black Reloaded. Eine komplette Liste aller Spiele, die Physx unterstützen, finden Sie auf der Webseite PhysXInfo.com.
OpenCL
OpenCL steht für Open Computing Language. Es ist eine alternative Technik zu CUDA, die auch AMD-Grafikprozessoren und Intel-Grafikchips ermöglicht, dem Hauptprozessor Arbeit abzunehmen und damit Berechnungen zu beschleunigen. OpenCL ist von Apple entwickelt und später gemeinsam mit AMD, IBM, Intel und Nvidia weiterentwickelt worden. Die Khronos Group - ein Industriekonsortium, das Multimedia-Standards verwaltet - hat OpenCL standardisiert und kümmert sich um die Weiterentwicklung. OpenCL ist ein offener Standard, den jeder ohne Lizenzzahlungen nutzen kann. Er ist relativ jung und erschien erstmals 2009 mit Apples Betriebssystem 10.6 (Snow Leopard) auf dem Markt.
Wie auch CUDA teilt OpenCL rechenintensive Arbeitsschritte auf und leitet sämtliche Operationen, die parallel abgearbeitet werden können, an den Grafikprozessor weiter. Per OpenCL ist es möglich, direkt auf Elemente der Programmierschnittstellen OpenGL und DirectX zuzugreifen und diese mithilfe des Grafikprozessors beschleunigt abzuarbeiten.
Die Liste der unterstützenden Grafikchips ist relativ lang. Eine Übersicht finden Sie hier. Leider ist jedoch die Programmliste, die OpenCL unterstützt, bisher sehr viel kürzer. Zu den populärsten Vertretern zählen die Videosoftware Total Media Theatre 5.2 von ArcSoft, vReveal von MotionDSP (ebenfalls Videobearbeitung), zahlreiche Grafikprogramme von Adobe, inklusive Photoshop, Premiere und auch Flash. Weiterhin profitieren auch das freie Bildbearbeitungsprogramm Gimp, einige Filter des VLC-Mediaplayers sowie das Kompressionsprogramm Winzip von der OpenCL-Beschleunigung. Eine wissenschaftliche Freeware, die OpenCL unterstützt, ist die Mathematik-Software ViennaCL.