General Purpose Computation on Graphics Processing Unit


General Purpose Computation on Graphics Processing Unit

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 technischen oder wirtschaftlichen Simulationen sein. Bei parallelen Algorithmen kann so eine enorme Geschwindigkeitssteigerung im Vergleich zum Hauptprozessor erzielt werden.

Inhaltsverzeichnis

Überblick

GPGPU ist aus den Shadern der Grafikprozessoren hervorgegangen. Die Stärke liegt im gleichzeitigen Ausführen gleichförmiger Aufgaben, wie dem Einfärben von Pixeln oder der Multiplikation großer Matrizen. Da der Geschwindigkeitszuwachs moderner Prozessoren derzeit nicht mehr durch die Erhöhung des Taktes zu erreichen ist, ist die Parallelisierung ein wichtiger Faktor zum Erreichen höherer Rechenleistungen moderner Computer. Der Vorteil der Verwendung der GPU gegenüber der CPU liegt in der höheren Rechenleistung und der höheren Speicherbandbreite. Die Geschwindigkeit wird hauptsächlich durch den hohen Grad an Parallelität der Rechenoperationen des Grafikprozessors erreicht. Die GPU hat folgende Rechnerarchitekturen implementiert:

Rechenleistung Speicherbus-Datenrate
ATI Radeon HD 5870 2720,0 GFlops 153,6 GByte/s
NVIDIA GeForce GTX 295 1788,5 GFlops 223,8 GByte/s
Intel Core i7-970 94,0 GFlops 4,8 GByte/s
Intel Pentium 4
mit SSE3, 3,6 GHz
14,4 GFlops 5,0 GByte/s

Fragment- und Vertex-Shader können zeitgleich ausgeführt werden. 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.

Geschichte

Shader waren anfangs nur für spezielle Funktionen, die eng mit grafischen Berechnungen verknüpft waren, verbunden. Um die Geschwindigkeit der Berechnung einzelner Pixel zu beschleunigen ging man dazu über, die Berechnung einzelner Pixel gleichzeitig auszuführen, indem man mehrere gleichartige Rechenwerke einsetzte. Man kam auf den Gedanken diese sehr beschränkten Fähigkeiten der Shader zu erweitern, um sie zu massiv-parallelen Rechneneinheit für beliebige Aufgaben zu befähigen. Moderne GPUs haben bis zu 1000 dieser Shadereinheiten und können so bis zu 1000 Rechnenoperationen gleichzeitig ausführen. Shader sind im Vergleich zu einer CPU sehr einfach aufgebaut.

Kritik

Durch OpenCL existiert eine einheitliche Schnittstelle zur Umsetzung von GPGPU-Berechnungen. Der Nachteil gegenüber herkömmlichen CPUs ist die massive Parallelität, mit der die Programme ausgeführt werden müssen, um die Vorteile zu nutzen. Auch sind GPUs im Funktionsumfang beschränkt. Für den wissenschaftlichen Bereich existieren spezielle Grafikmodelle (Nvidia Tesla, AMD FireStream). Der Speicher dieser Grafikkarten verfügt über Fehlerkorrekturverfahren und deren Fähigkeiten in der Berechnung von Gleitkommazahlen mit hoher Genauigkeit sind sehr viel höher, was sich auch in den Kosten widerspiegelt.

Programmierung

Für die Entwicklung GPGPU-fähiger Programme stehen vor allem OpenCL und CUDA zur Verfügung. OpenCL ist ein offener Standard der auf vielen Plattformen zur Verfügung steht, CUDA dagegen ist ein proprietäres Framework von Nvidia und auch nur auf GPUs dieses Herstellers lauffähig. Um Programme auf einer GPU auszuführen benötigt man ein Hostprogramm, das die Steuerung des Informationsflusses übernimmt. Meist wird zur Laufzeit der in einer C-ähnlichen Sprache formulierte GPGPU-Code auf Anweisung des Hostprogrammes kompiliert und an den Grafikprozessor zur Weiterverarbeitung gesandt, der dann die errechneten Daten an das Hostprogramm zurückgibt.

Literatur

  • Matt Pharr: GPU Gems 2. Addison Wesley Publishing Company, 2005, ISBN 978-0321335593, Part IV - General-Purpose Computation on GPUs: A Primer.
  • David B. Kirk: Programming Massively Parallel Processors: A Hands-on Approach [Paperback]. Morgan Kaufmann, February 5 2010, ISBN 978-0123814722.

Siehe auch

Weblinks


Wikimedia Foundation.

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

  • 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

  • Graphics Processing Unit — NV20 GPU einer Nvidia GeForce 3 Der Grafikprozessor (englisch Graphics Processing Unit – GPU, seltener Visual Processing Unit – VPU[1]) dient zur Berechnung der Bildschirmausgabe auf Computern und Spielekonsolen. Dieser befindet sich entweder auf …   Deutsch Wikipedia

  • Central processing unit — CPU redirects here. For other uses, see CPU (disambiguation). An Intel 80486DX2 CPU from above An Intel 80486DX2 from below …   Wikipedia

  • DirectX Graphics — Microsoft DirectX Entwickler: Microsoft Corporation Aktuelle Version: 10.1 (März 2009 Build) …   Deutsch Wikipedia

  • Graphic Processing Units — NV20 GPU einer Nvidia GeForce 3 Der Grafikprozessor (englisch Graphics Processing Unit – GPU, seltener Visual Processing Unit – VPU[1]) dient zur Berechnung der Bildschirmausgabe auf Computern und Spielekonsolen. Dieser befindet sich entweder auf …   Deutsch Wikipedia

  • 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.… …   Deutsch Wikipedia

  • 3D-Grafikkarte — Grafikkarte für den PCIe Slot Eine Grafikkarte steuert in einem Personal Computer die Bildschirmanzeige. Grafikkarten werden entweder als PC Erweiterungskarten (über die Bussysteme ISA, VLB, PCI, AGP oder über …   Deutsch Wikipedia

  • GraKa — Grafikkarte für den PCIe Slot Eine Grafikkarte steuert in einem Personal Computer die Bildschirmanzeige. Grafikkarten werden entweder als PC Erweiterungskarten (über die Bussysteme ISA, VLB, PCI, AGP oder über …   Deutsch Wikipedia

  • Graka — Grafikkarte für den PCIe Slot Eine Grafikkarte steuert in einem Personal Computer die Bildschirmanzeige. Grafikkarten werden entweder als PC Erweiterungskarten (über die Bussysteme ISA, VLB, PCI, AGP oder über …   Deutsch Wikipedia

  • Graphikkarte — Grafikkarte für den PCIe Slot Eine Grafikkarte steuert in einem Personal Computer die Bildschirmanzeige. Grafikkarten werden entweder als PC Erweiterungskarten (über die Bussysteme ISA, VLB, PCI, AGP oder über …   Deutsch Wikipedia