Nächste Seite: High Performance Fortran:
Aufwärts: Parallelisierung
Vorherige Seite: Programmierung:
  Inhalt
Daten-Parallele-Programmierung
Das Programmierparadigma des Daten-Parallelen-Programmierens wurde speziell zur Programmierung von SIMD-Rechnern und MIMD-Rechnern mit gemeinsamen Speicher entwickelt. Hierbei kontrolliert ein einziges Programm den Ablauf der verteilten Operationen auf allen Prozessoren. Unterstützt werden hierbei hauptsächlich Feld-Operationen. Die Verteilung der Arbeit auf die Prozessoren und das Einfügen von Kommunikationen wird hierbei vom Compiler durchgeführt. Eine vollautomatische Parallelisierung ist allerdings nicht möglich. Die Steuerung des Compilers durch den Programmierer ist in Form von Compiler-Direktiven notwendig.
Das Programmiermodell der Daten-Parallelen-Programmierung hat folgende Eigenschaften:
- Ein Programm kontrolliert den Ablauf der Operationen. Der Programmierer muss sich nur mit einem Anweisungsstrom auseinandersetzen.
- Der Speicher wird als globaler Speicher behandelt, der nur einen Adressraum hat. Der Programmierer muss sich daher nicht um den Austausch von Daten zwischen den einzelnen Speichern der Prozessoren kümmern.
- Eine ,,lockere Synchronisation`` wird angestrebt, d.h. es ist nicht notwendig, dass zu einem Zeitpunkt alle Prozessoren dieselbe Instruktion ausführen. Notwendig ist die Ausführung desselben Programmabschnittes (z.B. gleiche Schleife) zu einem Zeitpunkt.
- Feld-Operationen werden automatisch parallel durchgeführt. Unabhängigkeiten müssen teilweise durch den Programmierer aufgezeigt werden.
- Zur Parallelisierung sind nur geringe Kenntnisse des Programmcodes notwendig.
Beim Entwurf einer Parallelisierung liegt der Hauptunterschied zwischen Message-Passing und der Daten-Parallelen-Programmierung darin, dass bei Message-Passing das komplette Programm in datenunabhängige Teile zerlegt werden muss, wobei bei der Daten-Parallelen-Programmierung die Struktur des sequentiellen Programms erhalten bleibt und durch Direktiven erweitert wird.
Unterabschnitte
Nächste Seite: High Performance Fortran:
Aufwärts: Parallelisierung
Vorherige Seite: Programmierung:
  Inhalt