Parallelrechner

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springenZur Suche springen
Parallelrechner, einCray-2 (1986)

EinParallelrechner ist einRechner, in demRechenoperationen gleichzeitig unter anderem auf mehrerenHaupt- oderGrafikprozessoren durchgeführt werden können.

Inhaltsverzeichnis

Anwendungsbereiche

[Bearbeiten |Quelltext bearbeiten]

Grob können die folgenden Anwendungsbereiche unterschieden werden:

Massiv-parallele Verarbeitung

[Bearbeiten |Quelltext bearbeiten]

Verteilte Problemstellungen, wie z. B.Wettervorhersagen. Dabei wird z. B. die Erdoberfläche in Planquadrate aufgeteilt und jeweils ein Prozessor übernimmt die Berechnung für ein Planquadrat. Um die Einflüsse zwischen benachbarten Planquadraten zu berücksichtigen, müssen dazu die Prozesse auf den unterschiedlichen Prozessoren untereinander Daten austauschen und dazu synchronisiert werden.

Computer, die für diese Art von Aufgabenstellung ausgelegt sind, können einige tausendHauptprozessoren enthalten. Man verwendet dafür den BegriffMassiv-parallele Computer. Neben Wettervorhersagen finden sich Anwendungen für solche Architekturen z. B. in allen Bereichen vonSimulationen (siehe z. B.Chemoinformatik,Computerphysik).

Pipelining

[Bearbeiten |Quelltext bearbeiten]

Problemstellungen, bei denen größere Datenmengen in mehreren aufeinander folgenden Schritten verarbeitet werden, sogenanntesPipelining. Z. B. lassen sich die Module einesCompilers (Präprozessor, lexikalische Analyse, semantische Analyse, Optimierung, Codeerzeugung), als parallel laufende Prozesse realisieren.

Jeder Prozess reicht seine Ausgabe dabei an den nachfolgenden Prozess weiter und ist damit frei um die nächsten Daten zu verarbeiten, während der nachfolgende Prozessschritt von einem anderen Prozess erledigt wird. Dabei kann jeder der Prozesse jeweils einem Prozessor zugewiesen werden, so dass eine weitgehende echte Parallelisierung der Verarbeitung erreicht wird.

Problemstellungen dieser Art sind in der Regel für Rechner geeignet, die über vergleichsweise wenige Prozessoren verfügen.

Man spricht in diesem Fall häufig vonMultithreading oderNebenläufigkeit. Allerdings ist für Multithreading (Thread = Faden) nicht zwingend erforderlich, dass die verschiedenen Prozesse (Threads) jeweils auf einem eigenen Prozessor laufen. Denkbar wäre ebenso, die verschiedenen Prozessequasi parallel auf einem einzigen Prozessor laufen zu lassen. Allerdings können dann die Geschwindigkeitsvorteile nicht realisiert werden.

Optimierung

[Bearbeiten |Quelltext bearbeiten]

Parallelcomputer erhöhen ihre Arbeitsgeschwindigkeit, indem sie den Rechenaufwand auf ihre Prozessoren verteilen. Um die volle Leistungsfähigkeit eines Parallelrechners ausnutzen zu können, muss die Programmierung entsprechend angepasst werden. Dafür stehen eine Reihe von Programmierschnittstellen zur Verfügung (siehe Abschnitt weiter unten).

Die Verteilung der Rechenlast auf mehrere Prozesse erfordert immer einen zusätzlichen Aufwand, um diese Verteilung zu organisieren und zu koordinieren. Dieser Aufwand steigt mit der Anzahl der Prozesse in der Regelüberproportional an. Je nach bestehenden Abhängigkeiten ist es auch nicht immer möglich, Prozesse zu parallelisieren. Eine Aufgabenstellung so zu implementieren, dass sie einen Parallelrechner effizient nutzt, erfordert deshalb ein tiefes Verständnis der Problemstellung, und es muss immer eine Kosten-Nutzen-Abwägung getroffen werden, um für die Parallelisierung ein Optimum zu finden. Es gilt die knappenRessourcen – Rechenzeit, Speicherzugriffe, Datenbusse – effizient zu nutzen. Stets sollte der sequentielle Programm-Overhead minimal sein (Amdahlsches Gesetz).

Auch die Art der Vernetzung der Hardwarekomponenten hat Einfluss auf dieEffizienz. Für viele Problemstellungen lassen sich gute Ergebnisse mit folgendenTopologien erzielen:

  • Cube (Konfiguration aus 8 Rechnern. Vernetzung entspricht einemQuader).
  • Hyper-Cube (n-dimensionale Quader)

GPU-Cluster

[Bearbeiten |Quelltext bearbeiten]

In den letzten Jahren sind Grafikkarten auf den Markt gekommen die teilweise mehr als 2000 Rechenkerne besitzen. Eigentlich für die Berechnung von Farbverläufen, Texturen usw. konzipiert, lassen sich diese Rechenkerne auch für die Parallelisierung anderer Berechnungen nutzen. Für massiv parallele Anwendungen wurden deshalb mittlerweile auch Rechner gebaut, die Cluster aus mehreren hundert Grafik-Prozessoren oder Grafikkarten enthalten.[1][2] Damit lassen sich Rechnerarchitekturen erreichen, die statt einiger Tausend, einige Hunderttausend Prozessoren enthalten.

Programmierschnittstellen

[Bearbeiten |Quelltext bearbeiten]
  • OpenCLOpen Computing Language (Schnittstelle für uneinheitliche Parallelrechner)
  • CUDACompute Unified Device Architecture (Schnittstelle um die Grafikkarte für parallele Berechnungen nutzen zu können)
  • OpenHMPPHybrid Multicore Parallel Programming
  • OpenACC
  • OpenMPOpen Multi-Processing

Siehe auch

[Bearbeiten |Quelltext bearbeiten]

Weblinks

[Bearbeiten |Quelltext bearbeiten]
Commons: Parallelrechner – Sammlung von Bildern, Videos und Audiodateien

Einzelnachweise

[Bearbeiten |Quelltext bearbeiten]
  1. Heise-Artikel: Passwortknacken durch Riesen-GPU-Cluster
  2. GPU Clusters for High-Performance Computing, University of Illinois
Abgerufen von „https://de.wikipedia.org/w/index.php?title=Parallelrechner&oldid=248858571
Kategorie: