Das Kefk Network Wiki befindet sich im Testbetrieb.


GPGPU

Aus Kefk.

Wechseln zu: Navigation, Suche

GPGPU steht für General Purpose Computation on Graphics Processing Unit, und bedeutet, dass der Grafikprozessor für Aufgaben verwendet wird, für die er eigentlich nicht entwickelt wurde. Unter bestimmten Voraussetzungen kann hiermit eine enorme Geschwindigkeitssteigerung im Vergleich zu CPUs erzielt werden.

Inhaltsverzeichnis

Überblick

GPGPU steht für "General Purpose Computation on 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 oder 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 Algorithmen, bei denen der Quotient aus ausgeführten Rechenoperationen pro ausgeführter Lese/Schreib- Operation groß ist). In vielen Aufgabenbereichen des Non-photorealistic Rendering ist dies der Fall, sodass dieser Bereich als Grenze zwischen "normaler" Grafikberechnung und allgemeiner Verwendung der GPU die Forschung auf dem Gebiet wesentlich vorantreibt.

Geschichte

Die Anfänge des GPGPU sind gleichzusetzen mit den Anfängen der programmierbaren Grafikpipeline, 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 sicherlich durch einen entsprechenden Kurs auf der SIGGRAPH 2004 (http://www.siggraph.org/s2004/conference/courses/32.php?pageID=conference). Als ein erstes Referenzwerk 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ösungen sowie die Tatsache, dass Grafikkarten heute in nahezu jedem PC zu finden sind.

Nachteile

Viele von der GPU gelösten Aufgaben 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 Ω(n*log²(n)) beträgt.

Programmierung

Da in der aktuellen Rechnerorganisation kein Mechanismus vorgesehen ist, der Programme direkt auf der GPU ausführbar macht, ist es notwendig, eine auf der CPU ausgeführte Rahmenanwendung zu implementieren, die die entsprechenden Funktionsaufrufe der Grafikkarte tätigt. Soll beispielsweise eine Anwendung mit Hilfe von Fragment- Shadern durchgeführt werden, so müssen hierzu zunächst Fragments erzeugt werden, was in der Regel durch das Rendern eines Rechtecks erreicht wird. Die zu verwendenen Daten, die Anweisung, ein Rechteck bei aktiviertem Fragment- Shader zu rendern sowie den Shader- Code selbst erhält die Grafikkarte dabei von der CPU- basierten Rahmenanwendung. Das Ergebnis muss ebenfalls von der Rahmenanwendung weiterverarbeitet (z. B. gespeichert) werden, falls es nicht nur in Form des berechneten Framebuffers angezeigt werden soll.

Literatur

  • Pharr, Matt: GPU Gems 2: Part IV - General-Purpose Computation on GPUs: A Primer. Addison Wesley Publishing Company, 2005

Weblinks

Wikipedia
Dieses Dokument entstammt in seiner ersten oder einer späteren Version der deutschsprachigen Wikipedia. Es ist dort zu finden unter dem Stichwort GPGPU, die Liste der bisherigen Autoren befindet sich in der Versionsliste; die Originalfassung kann dort auch bearbeitet werden. Alle Texte der Wikipedia und ihre Derivate stehen unter der GNU-Lizenz für freie Dokumentation.
Persönliche Werkzeuge
Andere Sprachen