Parallelrechner - LinkFang.de





Parallelrechner


Ein Parallelrechner ist ein Rechner, in dem Rechenoperationen gleichzeitig unter anderem auf mehreren Haupt- oder Grafikprozessoren durchgeführt werden können.

Anwendungsbereiche

Grob können die folgenden Anwendungsbereiche unterschieden werden:

Massiv-parallele Verarbeitung

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 tausend Hauptprozessoren enthalten. Man verwendet dafür den Begriff Massiv-parallele Computer. Neben Wettervorhersagen finden sich Anwendungen für solche Architekturen z. B. in allen Bereichen von Simulationen (siehe z. B. Chemoinformatik, Computerphysik)

Pipelining

Problemstellungen, bei denen größere Datenmengen in mehreren aufeinander folgenden Schritten verarbeitet werden, sogenanntes Pipelining. Z. B. lassen sich die Module eines Compilers (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 von Multithreading oder Nebenlä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 Prozesse Quasi parallel auf einem einzigen Prozessor laufen zu lassen. Allerdings können dann die Geschwindigkeitsvorteile nicht realisiert werden.

Optimierung

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 knappen Ressourcen – 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 die Effizienz. Für viele Problemstellungen lassen sich gute Ergebnisse mit folgenden Topologien erzielen:

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

GPU-Cluster

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

  • OpenCL Open Computing Language (Schnittstelle für uneinheitliche Parallelrechner)
  • CUDA Compute Unified Device Architecture (Schnittstelle um die Grafikkarte für parallele Berechnungen nutzen zu können)
  • OpenHMPP Hybrid Multicore Parallel Programming
  • OpenACC
  • OpenMP Open Multi-Processing

Siehe auch

Weblinks

 Commons: Parallelrechner  – Sammlung von Bildern, Videos und Audiodateien

Einzelnachweise

  1. Heise-Artikel: Passwortknacken durch Riesen-GPU-Cluster
  2. GPU Clusters for High-Performance Computing, University of Illinois

Kategorien: Rechnerarchitektur

Quelle: Wikipedia - http://de.wikipedia.org/wiki/Parallelrechner (Vollständige Liste der Autoren des Textes [Versionsgeschichte])    Lizenz: CC-by-sa-3.0

Änderungen: Alle Bilder mit den meisten Bildunterschriften wurden entfernt. Ebenso alle zu nicht-existierenden Artikeln/Kategorien gehenden internen Wikipedia-Links (Bsp. Portal-Links, Redlinks, Bearbeiten-Links). Entfernung von Navigationsframes, Geo & Normdaten, Mediadateien, gesprochene Versionen, z.T. ID&Class-Namen, Style von Div-Containern, Metadaten, Vorlagen, wie lesenwerte Artikel. Ansonsten sind keine Inhaltsänderungen vorgenommen worden. Weiterhin kann es durch die maschinelle Bearbeitung des Inhalts zu Fehlern gerade in der Darstellung kommen. Darum würden wir jeden Besucher unserer Seite darum bitten uns diese Fehler über den Support mittels einer Nachricht mit Link zu melden. Vielen Dank!

Stand der Informationen: August 201& - Wichtiger Hinweis: Da die Inhalte maschinell von Wikipedia übernommen wurden, ist eine manuelle Überprüfung nicht möglich. Somit garantiert LinkFang.de nicht die Richtigkeit und Aktualität der übernommenen Inhalte. Sollten die Informationen mittlerweile fehlerhaft sein, bitten wir Sie darum uns per Support oder E-Mail zu kontaktieren. Wir werden uns dann innerhalb von spätestens 10 Tagen um Ihr Anliegen kümmern. Auch ohne Anliegen erfolgt mindestens alle drei Monate ein Update der gesamten Inhalte.