Melden Sie sich hier an, um auf Kommentare und die Whitepaper-Datenbank zugreifen zu können.

Kein Log-In? Dann jetzt kostenlos registrieren.

Falls Sie Ihr Passwort vergessen haben, können Sie es hier per E-Mail anfordern.

Der Zugang zur Reseller Only!-Community ist registrierten Fachhändlern, Systemhäusern und Dienstleistern vorbehalten.

Registrieren Sie sich hier, um Zugang zu diesem Bereich zu beantragen. Die Freigabe Ihres Zugangs erfolgt nach Prüfung Ihrer Anmeldung durch die Redaktion.

07.08.1992 - 

Programmierung von Parallelrechnern

Das Problem liegt in der Portierung existierender SW

*Karl Solchenbach arbeitet bei der Pallas Gesellschaft für Parallele Anwendungen und Systeme mbH in Brühl.

Der Höhepunkt des Mannheimer Supercomputer Seminars 1989 war ein Streitgespräch zur Zukunft des Supercomputing mit dem Titel "Vektorcomputer versus Parallelrechner". Diese damals hochaktuelle Frage ist heute eindeutig entschieden: Alle Supercomputer-Hersteller setzen auf massiv-parallele Architekturen und haben entsprechende Systeme (mehr oder weniger offiziell) angekündigt. Auch DV-Marktführer IBM und DEC, die bisher recht zurückhaltend agierten, entdecken nun den Parallelrechner-Markt.

Die Architekturen der Parallelrechner sind immer noch sehr vielfältig (und für viele potentielle Käufer verwirrend). Die wesentlichen Unterscheidungsmerkmale sind:

- Kontrollfluß: SIMD oder MIMD?

- Physikalische und logische Speicherorganisation: lokal oder global?

- Granularität und Skalierbarkeit: wenige starke oder sehr viele relativ schwache Prozessoren?

In vielen Firmen werden Workstations nachts oder an Wochenenden nicht genutzt und stellen somit eine ungeheure Reserve an Rechenkapazität dar. Pallas hat Softwarekomponenten entwickelt, mit deren Hilfe vernetzte Workstations als Parallelrechner für große Anwendungen eingesetzt werden können.

Ohne zusätzliche Hardware-Investitionen kann so für gewisse Anwendungen (mit geringem, internem Datentransfer) Supercomputerleistung bereitgestellt werden.

Außerdem läßt sich durch dieses Konzept der Übergang zur parallelen DV risikoärmer gestalten: Software-Portierungen können zunächst auf Workstation-Clustern durchgeführt werden und sind dann ohne Änderungen auf massiv-parallelen Rechnern aller Hersteller lauffähig.

Parallelrechner werden heute überwiegend für technisch-wissenschaftliche Anwendungen eingesetzt, in denen Rechnerhöchstleistung benötigt wird. Beispiele sind die Simulation von Strömungen um Flugzeuge und Autokarosserien, die Optimierung von Brennräumen, die Berechnung von Crash-Tests, die Entwicklung neuer Pharmaka, das Verständnis experimentell nicht zugänglicher physikalischer Phänomene.

Dementsprechend sind die dominierenden Programmiersprachen Fortran und - derzeit noch von geringerer Bedeutung - C.

Andere aktuelle Anwendungsfelder sind beispielsweise Finanzmarktanalysen, Datenbankanwendungen und Information-Retrieval. Diese nichttechnischen Anwendungen stellen ein enormes Potential für den Parallelrechnermarkt dar, sollen aber in diesem Artikel keine Rolle spielen.

Die Architektur-Vielfalt bestimmt bisher auch die Programmierung der Parallelrechner. Für jede Parallelrechner-Klasse gibt es ein spezielles Programmiermodell:

Multi-Vektorcomputer: Die Parallelität dieser Rechner dient nach wie vor überwiegend der Erhöhung des Durchsatzes. Für parallele Anwendungen muß der SIMD-Vektorrechner mit der (moderaten) MIMD-Parallelität kombiniert werden. Neben speziellen Ansätzen einzelner Hersteller (etwa Crays Autotasking) wurde das sogenannte PCF-Fortran des Parallel Computing Forum entwickelt, das auf Schleifen-Paralielität beruht (Pardo) und funktionale Parallelität unterstützt (Parallel Sections).

Die Programmierung wird durch gut vektorisierende und parallelisierende Compiler und Präprozessoren (VAST, KAP) unterstützt.

MIMD-Rechner (mit lokalem Speicher): Eine sehr "natürliche" Programmierung dieser Rechner stellt das CSP (Communicating Sequential Processes) Modell dar. Es wird in Fortran und C durch herstellerspezifische Message-Passing-Befehle (beispielsweise SEND/RECEIVE) implementiert. Damit werden Daten zwischen den lokalen Speichern transferiert und Prozesse synchronisiert. In der Regel stehen synchrone und asynchrone Kommunikationsmechanismen zur Verfügung, wobei der letztere eine Mailbox beinhaltet, aus der jeder Prozeß selektiv und unabhängig von der Sendereihenfolge Nachrichten empfangen kann.

SIMD-Rechner: Hier ist das Modell der Datenparallelität vorherrschend. Dies bedeutet, daß jede Instruktion auf alle Daten angewandt wird und die Parallelität durch Verteilung der Daten auf die Prozessoren erzielt wird.

Die Programmierung ist damit ähnlich wie die der Vektorrechner und basiert auf den Array-Befehlen des Fortran90-Standards.

Workstation-Cluster: Diese werden vom softwaretechnischen Standpunkt aus wie MIMD-Rechner mit lokalem Speicher betrachtet.

Die Neuprogrammierung von Anwendungen sollte auf MIMD-Rechnern nicht wesentlich komplexer als die herkömmliche sequentielle Programmierung sein. Was fehlt, sind integrierte Entwicklungsumgebungen (Tools, Debugger etc.) und ein standardisiertes, von allen Herstellern unterstütztes Message-Passing-Modell.

Das weitaus größere Problem der MIMD-Rechner liegt in der Portierung existierender Anwendungsprogramme. Es gibt bis heute (und auch in näherer Zukunft) keine automatische Transformation sequentieller Fortran- und C- Programme in das Message-Passing-Modell. Ansätze wie "Aspar", "Forge/Mimdizer" und "Superb" können nur einfache Programm- und Dätenstrukturen behandeln und dem Entwickler allenfalls gewisse Hilfestellungen geben.

Der tiefere Grund für das Fehlen automatischer Transformationstools liegt darin, daß algorithmische und Datenstrukturen in Sprachen wie Fortran oder C nicht adäquat repräsentiert werden. So ist beispielsweise das Netz von finiten Elementen nicht als geometrisches Objekt, sondern als indirekt adressierter Array dargestellt. Die MIMD-Parallelisierung solcher Anwendungen basiert nun aber auf der geometrischen Gebietszerlegung (Domain Decomposition) und verlangt globale Informationen, die im sequentiellen Programm auf lokaler Ebene nicht mehr enthalten sind und die deshalb der Code-Entwickler einfließen lassen muß.

Es gibt Modelle aber noch keine Standards

Wenn auch noch keine Standardisierung eines Message-Passing-Modells erfolgt ist, so gibt es doch einige herstellerunabhängige Modelle, die auf vielen Plättformen implementiert worden sind und die somit Portabilität garantieren:

- Parmacs

sind vom Argonne National Laboratory und der Gesellschaft für Mathematik und Datenverarbeitung (GMD) entwickelt worden und enthalten zusätzlich zur Message-Passing-Funktionalität auch Befehle, um Prozesse optimal auf Prozessortopologien abzubilden. Die Parmacs sind auf nahezu allen Parallelrechnern und Workstation- Netzwerken aIs Third-Party-Produkt verfügbar. Auf dem Parsytec-GC-Rechner, der bald auch mit dem leistungsfähigen T9000-Prozessor auf dem Markt sein wird, ist eine sehr effiziente Parmacs-Implementierung realisiert worden, die als Bestandteil der Systemsoftware direkt von Parsytec ausgeliefert wird. Auch der englische Hersteller Meiko plant, die Parmacs als Komponente seiner Systemsoftware anzubieten.

Die Parmacs wurden auch von der kürzlich gegründeten RAPS-Initiative (Real Applications on Parallel Systems) als erstes Programmiermodell ausgewählt. RAPS wird von großen europäischen Software-Anbietern und -Nutzern getragen, die ihre Codes parallelisieren und interessierten Herstellern als Benchmarks anbieten. Damit soll verhindert werden, daß im Rahmen von Rechnerbeschaffungen jeder Hersteller in unnötiger Mehrfacharbeit den gleichen Code parallelisiert, die parallelen Versionen in der Regel aber nicht als Produkte weiter unterstützt werden. Pallas koordiniert hierbei die Kooperation mit den beteiligten Herstellern (Convex, Cray, Fujitsu, IBM, Intel).

- Express

ist ein Produkt der US-Firma Parasoft und in den USA weit verbreitet. In Europa ist Express über Distributoren erhältlich.

- PVM

bedeutet Parallel Virtual Machine und ist ein Public-Domain-Paket des Oak Ridge National Laboratory. PVM wurde entwickelt, um heterogene Workstation-Netze zu einem parallelen System zusammenzufassen.

Eine weitergehende Standardisierung hin zu einem allgemein akzeptierten Message-Passing-Modell wäre wünschenswert. Diesbezüglich haben sich zwei Initiativen formiert, die sowohl in den USA als auch in Europa eine solche Standardisierung forcieren wollen. Der europäischen Initiative (SHAPES), die durch die EG-Kommission ins Leben gerufen wurde und die von Pallas als "neutrale Instanz" angeführt wird, gehören alle europäischen Hersteller an; die führenden US-Hersteller haben ihre Kooperationsbereitschaft signalisiert. Trotz der teilweise großen Gegensätze unter den Beteiligten bestehen gute Chancen, im nächsten Jahr einen von einer breiten transatlantischen Mehrheit getragenen Message-Passing-Standard vorlegen zu können.

Auf Initiative von Ken Kennedy (Rice University, Houston) wurde im vergangenen Jahr das High Performance Fortran Forum (HPFF) ins Leben gerufen. Basierend auf einem datenparallelen Konzept sollen Erweiterungen zu Fortran90 definiert werden, um massiv-parallele Rechner zu unterstützen. Mit Hilfe der HPF-Erweiterungen kann der Software-Entwickler mit seinem für den Compiler nicht zugänglichen Know-how die Datenaufteilung spezifizieren. Diese Informationen werden als Direktiven codiert, so daß der HPF-Code auf sequentiellen Rechnern lauffähig ist.

Das HPFF wird von allen Herstellern unterstützt und sehr schnell (im November 1992) einen Sprachvorschlag vorlegen. Die ersten Compiler, welche die

durch die HPF-Direktiven spezifizierten Datenaufteilungen in Message Passing Calls umwandeln, werden bald danach erwartet. Noch offene Punkte sind die Behandlung irregulärer Datenstrukturen und funktionaler Parallelität.

In den nächsten beiden Jahren werden alle Supercomputer-Hersteller skalierbare massiv-parallele Systeme mit physikalisch verteilten Speichern anbieten. Für deren Programmierung wird es drei Alternativen geben:

- Virtual shared memory (VSM)

Mit diesem Konzept ist Kendall Square Research, deren Rechner im Juni 1992 offiziell angekündigt werde, zur Zeit allein am Markt, andere Hersteller werden 1993 folgen. VSM bedeutet, daß die verteilten Speichereinheiten vom Betriebssystem logisch als gemeinsamer Speicher behandelt werden und keine explizite Datenaufteilung durchgeführt werden muß. Sequentielle Programme sind sofort ablauffähig und können stetig in ihrer Leistung optimiert werden.

Um VSM-Rechner mit hinreichender Effizienz betreiben zu können, muß schnelle Hardware für die Kommunikation eingesetzt werden.

- HPF

Für alle MIMD- und SIMD-Rechner wird das datenparallele HPF-Modell angeboten werden. HPF realisiert den globalen Speicher auf Sprachebene. Anwendungen mit regulären Datenstrukturen (Gittern, Matrizen) werden sehr elegant in HPF formuliert werden können. Tools und Compiler werden dafür sehr gute Effizienzen erzielen.

- Message-Passing-Standard

Für Anwendungen mit unstrukturierten Daten oder mit funktionaler Parallelität wird ein allgemein akzeptiertes lowlevel Message-Passing-Modell zur Verfügung stehen. Auch für Fälle, in denen die komfortablere VSM- oder HPF-Programmierung keine optimale Effizienz erzielen, werden auf Message Passing basierende Implementierungen durchgeführt werden.