Implementierung eines JaMP-Übersetzers zur Generierung von Java/OpenCL Code

Student:Florian Habur
Title:Implementierung eines JaMP-Übersetzers zur Generierung von Java/OpenCL Code
Type:bachelor thesis
Advisors:Dotzler, G.; Philippsen, M.
State:submitted on October 2, 2012
Prerequisits:
Topic:

Voraussetzungen
Java/OpenMP (JaMP - https://www2.cs.fau.de/research/JavaOpenMP/index.html) ist eine Umsetzung von OpenMP für Java. Sie erlaubt es Programmierern, Java Code mit Kommentaren (Annotationen) wie "//#omp parallel for" zu versehen. Der JaMP-Übersetzer ist dann dafür zuständig, an der entsprechenden Stelle parallelen Java-Code zu generieren, um die Schleife über mehrere Prozessoren zu verteilen.

Unser bisheriger, auf maximale Portabilität ausgelegter Ansatz ist an vielen Stellen komplex. Er benötigt einen speziellen Classloader, der zur Laufzeit entscheidet, ob paralleler Java-Code oder CUDA-Code ausgeführt wird. Außerdem wird der CUDA-Code erst zur Laufzeit generiert und übersetzt wodurch die Leistung des Systems reduziert wird.

OpenCL (Open Computing Language) ist eine Schnittstelle für uneinheitliche Parallelrechner, die z.B. mit Haupt-, Grafik- und/oder digitalen Signalprozessoren ausgestattet sind, und mit der zugehörigen Programmiersprache „OpenCL C" (Quelle: https://de.wikipedia.org/wiki/OpenCL) programmiert werden. OpenCL stellt also schon viel Funktionalität bereit, die für plattformübergreifende JaMP-Programmierung erforderlich ist.

Thema
Es soll daher eine OpenCL-Bibliothek entwickelt werden, die das nötige Interface bereitstellt, um OpenCL von Java aus zu nutzen. Ein Java-Compiler soll dahingehend verändert werden, mit JaMP Kommentaren annotierten Code in Aufrufe an die OpenCL-Wrapper-Bibliothek zu transformieren. Die Implementierung soll mit einer gängigen Benchmarksuite (z.B. Java Grande) evaluiert werden.

Literatur

  • http://www.khronos.org/opencl/
  • 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.

Meilensteine

  • Implementierung einer schlanken Java Bibliothek zur Verwendung von OpenCL
  • Implementierung eines JaMP-Compilers zur Erzeugung von Java/OpenCL Code
  • Messungen zur Leistungsfähigkeit der Implementierung mit Hilfe einer Benchmarksuite
  • Ausarbeitung
watermark seal