Einseitige Kommunikation
Grundidee:
Task kann auf Speicher anderer Tasks ohne deren Beteiligung zugreifen (wie bei "Shared Memory")
Speicherbereiche müssen vom Besitzer für den Zugriff freigegeben werden
Verschiedene Mechanismen zur Synchronisation
Einsatzbereiche:
unregelmäßig verteilte Daten (z.B. dünn besetzte Matrizen)
Probleme mit dynamischer Lastverteilung bei sehr unterschiedlicher Aufgabengröße (z.B. in Computational Chemistry)
wichtige Funktionen
MPI_Alloc_mem
besondere Speicherallozierung
MPI_Win_create
,
MPI_Win_free
erzeugt/vernichtet "Windows" = Speicherbereiche, auf die Tasks der gleichen Gruppe zugreifen dürfen
MPI_Get
,
MPI_Put
,
MPI_Accumulate
Zugriff auf entfernten Speicher: Lesen, Schreiben, Aufaddieren etc.
MPI_Win_lock
,
MPI_Win_unlock
Synchronisation der Zugriffe durch Locking-Verfahren ("gegenseitiger Ausschluß")
MPI_Win_fence
Synchronisation durch eine "Barrier" für Zugriffe
Beispielprogramm
Peter Junglas 16.2.1999