Implementierung des JaMP-Programmiermodells für eine Java-VM

Student:Georg Dotzler
Title:Implementierung des JaMP-Programmiermodells für eine Java-VM
Type:study thesis
Advisors:Klemm, M.; Philippsen, M.
State:submitted on October 2, 2008
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 Programmierers auf mehrere parallel ablaufende Aktivitätsträger aufzuteilen. Ein Beispiel hierfür ist der OpenMP-Standard.

Mit JaMP wurde der OpenMP-Standard 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. Die bisherige Implementierung ist folglich auf die Nuztung innerhalb Jackals abgestimmt und kann in einer JVM-Umgebung nicht genutzt werden.

Topic:

Der Eclipse-Java-Compiler soll erweitert werden, so dass dieser in der Lage ist, die OpenMP-Konstrukte von JaMP in parallelen Code zu übersetzen. Hierzu ist der existierende Code des Java-Übersetzers zu analysieren und die Stellen für die für JaMP nötigen Erweiterungen zu identifizieren. Das Zerteilen des Java-Quelltextes im Java-Übersetzer ist dahingehend zu erweitern, dass JaMP-Direktiven und bedingte Übersetzung unterstützt werden.

Im Anschluss ist der eingelesene JaMP-Quelltext in Byte-Code zu übersetzen. Hierzu muss der Java-Übersetzer um eine geeignete Transformation und Code-Erzeugung ergänzt werden, welche die JaMP-Direktiven in äquivalenten Byte-Code übersetzt.

Für die Übersetzung in Byte-Code bieten sich im Wesentlichen zwei Entwurfsmöglichkeiten. Erstens kann die parallele Region direkt in einen Java-Thread ausgelagert werden und so das Programm bereits zur Übersetzungszeit parallelisiert werden. Zweitens kann der parallele Anteil des Programs entsprechend in den Attributen der Class-Datei markiert werden. Die virtuelle Maschine führt die eigentliche Parallelisierung erst zur Laufzeit aus. Die erste Alternative ist für diese Arbeit zu implementieren. Die zweite Alternative ist im Rahmen des Ausblicks am Ende der Arbeit zu untersuchen.

Die Leistungsfähigkeit der Implementierung ist durch Experimente mit bekannten Benchmarks zu evaluieren. Hierbei ist darauf zu achten, dass die Implementierung ohne unnötigen Ballast auskommt, d.h. der Bearbeiter soll das System im Rahmen der Evaluation optimieren, so dass eine maximale Leistungsfähigkeit erreicht wird.

Im Rahmen der Ausarbeitung soll die Implementierung des Übersetzers und des Laufzeitsystems detailliert beschrieben werden. Weiterhin soll die Ausarbeitung die Leistungsfähigkeit diskutieren und diese anhand der verwendeten Benchmarks belegen.

Meilensteine

  • Erweiterung des Zerteilers des Eclipse-Java-Compilers zur Erzeugung eines abstrakten Syntaxbaums (AST) aus den OpenMP-Anweisungen.
  • Implementierung der Semantikprüfungen zur Validierung der Konformität des Java/OpenMP-Programms.
  • Implementierung der Code-Transformation, welche die OpenMP-Konstrukte auf die Java-Thread-API abbildet. Hierbei ist ein geeignetes Laufzeitsystem zu implementieren.
  • Implementierung/Erweiterung einer Testsuite zur Prüfung der Korrektheit der Java/OpenMP-Implementierung.
  • Messungen zur Leistungsfähigkeit der Implementierung mithilfe einer Benchmarksuite (z.B. JOMP-Version der Java Grande Benchmarks)
  • Optimierung des Übersetzers bzw. des Laufzeitssystem zur Steigerung der Leistungsfähigkeit der Implementierung.
  • Ausarbeitung.

Literatur

  • OpenMP Application Program Interface, Version 2.5, May 2005.
  • Klemm, Michael; Bezold, Matthias; Veldema, Ronald; Philippsen, Michael: JaMP: An Implementation of OpenMP for a Java DSM. In: Concurrency and Computation: Practice and Experience, 19:2332-2352, April 2007.
  • Klemm, Michael; Veldema, Ronald; Bezold, Matthias; Philippsen, Michael: A Proposal for OpenMP for Java. In: Proc. of the Intl. Workshop on OpenMP, Reims, France, 2006, CD-ROM.
  • Obdrzealek, Jan: OpenMP for Java. Technical Report, EPCC-SS-2000-08, EPCC, University of Edinburgh, Edinburgh, Scotland, 2000.
watermark seal