Es wurde gezeigt, daß es unter
PVM
einfach ist, ein vorhandenes heterogenes Netz von Workstations
als einen virtuellen Parallelrechner zu nutzen.
Aufgrund der weiten Verbreitung von
PVM
ist es möglich, die unter diesem System entwickelten
parallelen Programme auch auf echte Parallelrechner und massiv-parallele
Systeme zu portieren.
Wie an dem Beispiel eines parallelen
Branch & Bound--Algorithmus
jedoch deutlich wurde,
stößt diese Portierbarkeit schnell auf Grenzen, wenn ein
unregelmäßiges Problem gelöst
werden soll und dabei dynamische Lastverteilung eine große Rolle spielt.
Kommunikation und Lastverteilung können auf einem
MPP
nur effizient gestaltet werden, wenn
möglichst alle Eigenschaften der Hardware transparent sind, was aber
gegen die Konzeption von
PVM
spricht.
Eine interessante Alternative bietet sich hier durch das
Message Passing Interface
(MPI)
an.
MPI
ist ein Standard für portable Parallelprogrammierung [4].
Er wurde im Mai 1994 endgültig von einem Gremium, an dem fast alle
Parallelrechnerhersteller beteiligt waren, festgelegt.
Er beschreibt etwa 120 Routinen, die eine
MPI--Implementation
auf einem parallelen System zur Verfügung stellen muß.
Da dieser Standard aus der Welt der Parallelrechner entstanden ist,
werden z.B. kein
gemeinsamer Bus, sondern Prozessor-Topologien bei den
Kommunikationsroutinen zugrundegelegt.
Für eine effiziente Implementation der
MPI--Routinen
auf einem bestimmten parallelen System
ist der entsprechende Hardware-Hersteller verantwortlich,
MPI
legt lediglich die Schnittstelle fest.
Es existiert mittlerweile auch schon eine Implementation für
Workstation-Cluster [5].
Der Anwender hat so die Möglichkeit, ein paralleles Programm zu
schreiben, was bei der Portierung
die Eigenschaften der entsprechenden Parallelrechner möglichst optimal
ausnutzt.
Bei all den Hilfestellungen, die die hier vorgestellten Systeme bieten, darf nicht vergessen werden, daß in erster Linie die eigentliche Parallelisierung eines Problems, welche nach wie vor der Anwender entwickeln muß, die Effizienz eines parallelen Programms bestimmt, inwieweit diese Parallelisierung auf der Hardware umgesetzt wird, ist nur zweitrangig.