Dynamische Prozessmengen im JaMP-Programmiermodell

Student:Matthias Bezold
Title:Dynamische Prozessmengen im JaMP-Programmiermodell
Type:diploma thesis
Advisors:Klemm, M.; Philippsen, M.
State:submitted on October 4, 2006
Prerequisits:

Für Shared-Memory-Systeme existieren zahlreiche Übersetzer, die es dem Programmierer erlauben, ein sequentielles Programm mittels Übersetzer-Direktiven zu parallelisieren. Der Übersetzer unternimmt hierbei die nötigen Schritte, um einen als parallel ausführbar markierten Programmteil ohne weiteres Zutun des Programmiers auf mehrere parallel ablaufende Aktivitätsträger aufzuteilen. Ein Beispiel hierfür ist der OpenMP-Standard.

Die automatische Parallelisierung beruht auf der Tatsache, dass alle Aktivitätsträger im gleichen Adressraum ablaufen und so auf einen gemeinsamen Speicherbereich zugreifen können. Das Jackal-System bietet mit seiner Implementierung eines DSMs (Distributed Shared Memory) eine Umgebung für Java, die als Basis für diese Art von automatischer Parallelisierung (auch im Rechnerbündel) dienen kann.
Mit JaMP wurde ein spezieller OpenMP-Dialekt für das DSM-System Jackal implementiert. JaMP lehnt sich dabei eng an die Vorgaben des OpenMP-Standards an und bildet diese möglichst genau auf das von Jackal bereitgestellte DSM ab.

Topic:

Im Rahmen der Arbeit soll untersucht werden, wie im JaMP-Programmiermodell erreicht werden kann, dass die Anzahl der Prozesse, die für die Ausführung einer parallelen Anwendung genutzt werden, dynamisch zur Laufzeit verändert werden kann. Dynamische Veränderung bedeutet in diesem Zusammenhang, dass die Menge der Prozesse der Applikation jederzeit vergrößert oder verkleinert werden kann.

Bei der Veränderung der Prozessmenge soll es möglich sein, nicht nur an speziellen (benutzersichtbaren) Synchronisationspunkten (Barrieren, Ende von Iterationsblöcken, usw.) eine Neuaufteilung der Rechenlast durchzuführen, sondern auch während ein Iterationsblock berechnet wird. Es ist zu untersuchen, welche Techniken hierbei angewendet werden können. Adäquate Techniken sind zu implementieren. Beispielsweise kann die Ausführung eines Iterationsblocks nicht auf triviale Weise wiederholt werden, da eine Wiederholung aufgrund von möglichen Seiteneffekten eine Veränderung der Programmsemantik bewirken würde. Es ist zu beachten, dass die umgesetzten Techniken das Laufzeitverhalten der Applikation nur in einem sehr geringen Maß beeinflussen. Die Implementierung der dynamischen Prozessmengen ist auf dieses Ziel hin zu optimieren.

Die Untersuchung gliedert sich in zwei Hauptbereiche: 1) Implementierung der Veränderung innerhalb dynamischer paralleler Schleifen; 2) Implementierung der Neuaufteilung statisch zugewiesener paralleler Schleifen. Es ist weiterhin durch die Implementierung zu klären, welchen Einfluss die Änderung der Prozessmenge auf parallele Regionen hat.

Die durch die Arbeit erweiterte Implementierung des JaMP-Systems soll durch Leistungsmessungen untermauert werden. Dabei ist nachzuweisen, in welchem Bereich sich die Leistungseinbußen bewegen, die durch die Unterstützung von dynamischen Prozessmengen verursacht werden. Durch Micro-Benchmarks soll nachgewiesen werden, welche Kosten durch die Neuaufteilung und Veränderung der Prozessmenge entstehen.

watermark seal