Ü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.