GPGPU

GPGPU

General Purpose Computation on Graphics Processing Unit, kurz GPGPU, bezeichnet die Verwendung des Grafikprozessors zur Berechnung von Aufgaben, die in keinem Zusammenhang mit der eigentlichen Grafikberechnung stehen. Dies können z. B. Berechnungen zu technischen oder wirtschaftlichen Simulationen sein.

Unter bestimmten Voraussetzungen kann hiermit eine enorme Geschwindigkeitssteigerung im Vergleich zu CPUs erzielt werden.

Inhaltsverzeichnis

Überblick

GPGPU ist eine Entwicklung im Bereich der Grafik-Hardware, namentlich der programmierbaren Pipeline durch Fragment- und Vertex-Shader sowie der enormen Geschwindigkeit von GPUs notwendig oder sinnvoll erscheinende 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 verhältnismäßig viele Rechenoperationen und wenige Lese-/Schreiboperationen durchgeführt werden). In vielen Aufgabenbereichen des nicht-fotorealistischen Renderns 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 [1]. 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:

Rechenleistung Speicherbus-Bandbreite
NVIDIA GeForce 6800 60 GFlops 18 GByte/s
Intel Pentium 4
mit SSE3, 3,6 GHz
14,4 GFlops 5 GByte/s
NVIDIA GeForce GT200 1063 GFlops n/a
ATI RV770 1200 GFlops [2] n/a
Intel Core 2 Quad Q6600 21,4 GFlops [2] n/a

Die Geschwindigkeit wird hauptsächlich durch den hohen Grad an Parallelität der Rechenoperationen des Grafikprozessors (GPU) erreicht. Die GPU hat folgende Rechnerarchitekturen implementiert

sowie

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 \Omega\left(n \cdot \log^2\left(n\right)\right) beträgt.

Auch haben Grafikkarten üblicherweise relativ wenig Speicher, was man jedoch durch spezielle GPGPU-Grafikkarten mit mehr Speicher, aber dafür ohne Bildschirmausgabe zu kompensieren versucht (z.B. NVIDIA Tesla, AMD FireStream).

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 verwendenden 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

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

Siehe auch

Weblinks

Quellen

  1. GPGPU-Kurs auf der SIGGRAPH 2004
  2. a b So funktionieren Top-Grafikkarten. In: Chip. 2008, Nr. 10, September 2008, ISSN 0170-6632, S. 60ff. 

Wikimedia Foundation.

Игры ⚽ Поможем сделать НИР

Schlagen Sie auch in anderen Wörterbüchern nach:

  • GPGPU — o General Purpose Computing on Graphics Processing Units es un concepto reciente dentro de informática que trata de estudiar y aprovechar las capacidades de cómputo de una GPU. Una GPU es un procesador diseñado para los cómputos implicados en la… …   Wikipedia Español

  • GPGPU — General purpose computing on graphics processing units (GPGPU, also referred to as GPGP and to a lesser extent GP²) is the technique of using a GPU, which typically handles computation only for computer graphics, to perform computation in… …   Wikipedia

  • GPGPU — В этой статье не хватает ссылок на источники информации. Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена. Вы можете отредактировать эту статью …   Википедия

  • GPGPU — General Purpose Processing on Graphics Processing Units GPGPU est l abréviation de General Purpose Processing on Graphics Processing Units, c est à dire calcul générique sur un processeur graphique. GPGPU en modèle de remplacement du CPU Jusqu à… …   Wikipédia en Français

  • General-Purpose Processing on Graphics Processing Units — GPGPU est l abréviation de General Purpose Processing on Graphics Processing Units, c est à dire calcul générique sur un processeur graphique afin de bénéficier de leur capacité de traitement massivement parallèle. Sommaire 1 GPGPU en modèle de… …   Wikipédia en Français

  • BrookGPU — is the Stanford University Graphics group s compiler and runtime implementation of the Brook stream programming language for using modern graphics hardware for non graphical, or general purpose computations. Use of Graphics Processing Unit (or… …   Wikipedia

  • Graphics processing unit — GPU redirects here. For other uses, see GPU (disambiguation). GeForce 6600GT (NV43) GPU A graphics processing unit or GPU (also occasionally called visual processing unit or VPU) is a specialized circuit designed to rapidly manipulate and alter… …   Wikipedia

  • CUDA — Developer(s) Nvidia Corporation Stable release 4.0 / May 17 2011; 6 months ago (May 17 2011) Operating system Windows XP and later Mac OS X Linux …   Wikipedia

  • General Purpose Computation on Graphics Processing Unit — (kurz GPGPU, vom Englischen für Allzweck Berechnung auf Grafikprozessoreinheit(en)) bezeichnet die Verwendung eines Grafikprozessors für Berechnungen über seinen ursprünglichen Aufgabenbereich hinaus. Dies können beispielsweise Berechnungen zu… …   Deutsch Wikipedia

  • Larrabee (GPU) — Larrabee is the codename for a graphics processing unit (GPU) chip that Intel is developing separately from its current line of integrated graphics accelerators. The video card containing Larrabee is expected to compete with GeForce and Radeon… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”