Über das Implementieren von Farm-Skeletten

Michael Poldner, Universität Münster
 
Der heutige Stand der Technik für die Programmierung von massiv
parallelen Systemen ist der Einsatz von Message Passing Bibliotheken,
wie MPI. Jedoch ist diese Art der Programmierung mit vielen Problemen
verbunden, denn die MPI-Programmierung erfolgt auf einem relativ
niedrigen Programmierniveau und der Programmierer muss sich mit
typischen Kommunikationsproblemen wie Synchronisation, Deadlocks und
Starvation selbst befassen.

Eine wertvolle Alternative für die Entwicklung paralleler Software
sind Algorithmische Skelette. Ein Skelett kapselt eine
Kontrollstruktur mit allen notwendigen parallelen
Kommunikationsdetails, welche anschließend mit bestimmten Funktionen
instanziiert werden kann, um bestimmte Aufgaben durchzuführen. Mit
Hilfe von taskparallelen Skeletten lassen sich Architektur unabhängige
Prozesstopologien elaborieren. Die Konstruktion von taskparallelen
Skeletten kann sich wiederum auf Kommunikationsbibliotheken wie MPI
stützen. Eines der bekanntesten taskparallelen Skelette ist die Farm,
welche eine bestimmte Funktion auf alle Elemente einer Datenmenge
ausführt. Wir haben unterschiedliche Implementierungen des
Farm-Skeletts hinsichtlich der Skalierbarkeit, des Overheads,
potentieller Engpässe und der Lastverteilung untersucht und geprüft,
wie sich der gewählte MPI-Kommunikationsmodus auf die Performanz
auswirkt. Auf Basis von experimentellen Ergebnissen werden die Vor-
und Nachteile der unterschiedlichen Ansätze und Topologien
dargelegt. Weiterhin wird ein einfacher Algorithmus zur
ordnungsgemäßer Terminierung von Prozesssystemen vorgestellt.