Tesla
PRODUKTINFOS
WEITERE INFOS
  • Software-Entwicklungstools

    Programmierung CUDA-fähiger Grafikprozessoren

  • CUDA / Tesla Supercomputing NewsletterCUDA / Tesla Supercomputing Newsletter
    Abonnieren Sie den CUDA Tesla Supercomputing Newsletter, um regelmäßig Informationen zur parallelen Prozessorarchitektur von NVIDIA und ihren vielfältigen Einsatzmöglichkeiten zu erhalten und zu erfahren, wie die Leistung des Grafikprozessors genutzt werden kann, um komplexe Berechnungen in einem Bruchteil der auf der CPU benötigten Zeit durchzuführen. Außerdem erfahren Sie alle Neuigkeiten zu den NVIDIA Tesla Computing-Lösungen und wie sie für die wichtigsten Berechnungen der Welt skaliert werden können.

  • NVIDIA CUDA
WICHTIGE LINKS

GPU-Computing

 

Mit „GPU-Computing“ (wörtl.: Grafikprozessorberechnungen) ist die Verwendung von Grafikprozessoren für allgemeine wissenschaftliche und technische Berechnungen gemeint.
Beim GPU-Computing werden eine CPU und ein Grafikprozessor gemeinsam für heterogene Berechnungen eingesetzt. Der sequenzielle Teil der Anwendung läuft auf der CPU und der rechenintensive Teil auf dem Grafikprozessor. Aus Sicht des Benutzers läuft die Anwendung dadurch schneller, da die Verwendung des leistungsstarken Grafikprozessors die Ausführung beschleunigt.

Heterogeneous Computing

Der Entwickler der Anwendung muss diese so modifizieren, dass die rechenintensiven Kernels dem Grafikprozessor zugeordnet werden. Die übrigen Teile der Anwendung verbleiben auf der CPU. Dass eine Funktion dem Grafikprozessor zugeordnet wird, beinhaltet auch, sie so umzuschreiben, dass die Parallelität in der Funktion offengelegt wird, und C-Schlüsselwörter zum Verschieben von Daten vom und zum Grafikprozessor hinzuzufügen.

GPU-Computing wird durch die massiv-parallele Architektur der NVIDIA-Grafikprozessoren, bekannt als CUDA-Architektur, möglich gemacht. Die CUDA-Architektur besteht aus Hunderten von Prozessorkernen, die im Verbund wirken, um die in der Anwendung abgelegten Daten zu verarbeiten.

Der Grafikprozessor der Tesla-10-Serie gehört zur zweiten Generation der CUDA-Architektur mit Funktionen, die für wissenschaftliche Anwendungen optimiert wurden. Solche Funktionen sind unterem Hardwareunterstützung mit doppelt genauen Gleitkommaberechnungen nach dem IEEE-Standard, lokale Datencaches in Form eines über den Grafikprozessor verteilten gemeinsam genutzten Speichers und Zugriffe auf miteinander verbundene Speicher.

„Grafikprozessoren haben sich dahin gehend entwickelt, dass sich viele gebräuchliche Anwendungen einfach auf dem Grafikprozessor implementieren lassen und darauf wesentlich schneller laufen als auf bisherigen Multi-Core-Systemen. Die Systemarchitektur der Zukunft ist ein Hybridsystem aus Grafikprozessoren mit parallelen Recheneinheiten und Multi-Core-CPUs.“

Prof. Jack Dongarra
Leiter des Innovative Computing Laboratory
The University of Tennessee

Die Geschichte des GPU-Computing

Am Anfang standen Grafikchips als Grafikpipelines mit festgelegten Funktionen. Im Laufe der Jahre wurden diese Grafikchips in immer größerem Umfang programmierbar, sodass NVIDIA schließlich den ersten Grafikprozessor (GPU) vorstellen konnte. In den Jahren 1999–2000 begannen Forscher auf Gebieten wie der medizinischen Bildgebung und des Elektromagnetismus und ganz besonders Computerwissenschaftler, Grafikprozessoren für allgemeine Rechneranwendungen einzusetzen. Sie fanden heraus, dass das hervorragende Leistungsverhalten der Grafikprozessoren bei Gleitkommaberechnungen bei einer Vielzahl von wissenschaftlichen Anwendungen zu einer gewaltigen Leistungssteigerung führte. Eine neue Entwicklung mit Namen GPGPU (General Purpose Computing on GPUs – „allgemeine Berechnungen auf Grafikprozessoren“) war geboren.

Das Problem dabei war jedoch, dass GPGPU zur Programmierung des Grafikprozessors spezielle Grafikprogrammiersprachen wie OpenGL und Cg erforderte. Die Entwickler mussten ihren wissenschaftlichen Anwendungen das Aussehen von Grafikanwendungen geben und bei Problemstellungen mit Dreiecken und Polygonen operieren. Dadurch konnte die enorme Leistung der Grafikprozessoren nicht in dem gewünschten Ausmaß der Wissenschaft zugänglich gemacht werden.

NVIDIA erkannte das Potenzial, das darin lag, diese Leistung breiteren Wissenschaftskreisen verfügbar zu machen. NVIDIA entschloss sich, in die Modifizierung des Grafikprozessors zu investieren, um ihn für wissenschaftliche Anwendungen voll programmierbar zu machen, und zwar in Hochsprachen wie C und C++. Daraus entwickelte sich die CUDA-Architektur für Grafikprozessoren.

CUDA-Parallelarchitektur und paralleles CUDA-Programmiermodell

Die parallele CUDA-Hardwarearchitektur tritt zusammen mit dem parallelen CUDA-Programmiermodell auf. Dieses stellt einen Satz Abstraktionen zur Verfügung, mit denen sich Fein und Grobdaten und die parallele Ausführung von Aufgaben formulieren lassen. Der Programmierer kann wählen, ob er die Parallelität in Hochsprachen wie C, C++ oder Fortran oder aber mit Treiber-APIs wie OpenCL™ oder DirectX™ 11 Compute formulieren will.

GPU-ComputingOvrw.png

Die erste Programmiersprache, die NVIDIA unterstützt hat, war C. Eine Reihe von Software-Entwicklertools für C für CUDA ermöglicht es, dass der Grafikprozessor in der Sprache C und nur mit einem minimalen Vorrat an Schlüsselwörtern oder Erweiterungen programmiert werden kann. In Kürze werden auch Fortran, OpenCL und weitere Sprachen unterstützt werden.

Das parallele CUDA-Programmiermodell leitet Programmierer an, das jeweilige Problem grob in mehrere Unterprobleme aufzuteilen, die unabhängig voneinander parallel gelöst werden. Fein aufgelöste Parallelität in den Unterproblemen wird dann so formuliert, dass jedes Unterproblem gemeinsam parallel gelöst werden kann.

Die CUDA-Grafikprozessorarchitektur und das parallele CUDA-Berechnungsmodell werden inzwischen mit Hunderten von Anwendungen und fast 1000 veröffentlichten Forschungsmaterialien eingesetzt. In der CUDA Zone werden viele dieser Anwendungen und Materialien aufgelistet.

OpenCL ist eine Marke von Apple Inc., in Lizenz verwendet von der Khronos Group Inc.
DirectX ist eine eingetragene Marke der Microsoft Corporation.