Zum Inhalt springen

General Purpose Computation on Graphics Processing Unit

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 28. November 2005 um 11:10 Uhr durch 88.72.32.190 (Diskussion). Sie kann sich erheblich von der aktuellen Version unterscheiden.
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Überblick

GPGPU steht für General Purpose Graphics Processing Unit und ist eine durch die neuere Entwicklung im Bereich der Grafik- Hardware, namentlich der Programmierbaren Pipeline durch Fragment- und Vertex- Shader sowie der enormen Geschwindigkeit von GPUs notwendig bzw. sinnvoll erscheinenende Technik, die Algorithmen für gewöhnliche Probleme, die sonst auf der CPU ausgeführt werden, auf der GPU ausführt. Die Beschränkung der GPU auf spezielle Probleme ohne großen Verwaltungsaufwand ermöglicht es, diese so zu entwerfen, dass der Großteil der Transistoren für Rechenoperationen verwendet wird und nicht für Steuerungsaufgaben und Caching, wie es auf CPUs der Fall ist. Hierdurch ergibt sich eine optimale Leistung bei GPGPU- Anwendungen, die eine hohe arithmetische Dichte aufweisen (also Algorthmen, bei denen der Qutient aus ausgeführten Rechenoperationen pro ausgeführter Lese/Schreib- Operation groß ist).

Geschichte

Die Anfänge des GPGPU sind sind gleichzusetzen mit den Anfängen der programmierbaren Grafik- Pipeline, also im Jahr 2000. Auch wenn heute viele GPGPU- Anwendungen einzelne Elemente der Fixed- Function- Pipeline wie z.B. Z- Culling verwenden, so ist die Flexibilität nicht groß genug, um allgemeinen Aufgaben gerecht zu werden. Bekanntheit erreichte GPGPU sicherlic h durch einen entsprechendne Kurs auf der SIGGRAPH 2004 (http://www.siggraph.org/s2004/conference/courses/32.php?pageID=conference). Als ein erstes Referenz- Werk kann wohl GPU GEMS 2 angesehen werden, welches 2005 erschienen ist.

Vorteile

Der Vorteil der Verwendung der GPU gegenüber der CPU liegt hauptsächlich in deren größeren Geschwindigkeit. Als Vergleich: die nVIDIA GeForce 6800 erreicht Peak- Werte von 60 GFlops und 18 GB/s Sequenzielle Speicherbus- Bandbreite, der nahezu gleichzeitig erschienene Pentium 4 erreicht Werte von gerade einmal 12 GFlops und 5 GB/s Bandbreite. Die Geschwindigkeit wird teilweise durch den hohen Grad an Parallelität erreicht: die GPU implementiert SIMD (Fragment Shader), MISD (Rasterizer) und MIMD (Vertex Shader), wobei die Pipeline als Ganzes Task Parallel arbeitet, da Fragment- und Vertex- Shader zeitgleich ausgeführt werden können. Ein weiterer Vorteil ist der geringe Preis im Vergleich zu ähnlich schnellen anderen Lösu ngen sowie die Tatsache, dass Grafikkarten heute in nahezu jedem PC zu finden sind.


Nachteile

Viele von der GPU gelösten Aufgabe sind nicht einheitlich spezifiziert und die Unterschiede zwischen den Herstellern ist größer als die bei (gängigen) CPUs. Außerdem sind durch gewisse Einschränkungen (z.B. ist kein Scattering möglich) sowie die Parallelität spezielle Konzepte erforderlich. Dies führt dazu, dass beispielsweise die minimale Komplexität für das Sortieren O(n*log²(n)) beträgt.


Zukunft

Vorhersagen sind schwierig, insbesondere wenn sie sich auf die Zukunft beziehen. Allerdings lässt sich vermuten, dass in Zukunft neue Shader- Typen erscheinen werden (z.B. Geometry- Shader, die in der Lage sind, nicht nur Geometrie zu manipulieren sondern diese auch zu erstellen), die für das GPGPU große Vorteile bringen werdne. In fernerer Zukunft ist auch denk bar, dass CPUs und GPUs verschmelzen werden.