UnivIS
Informationssystem der Friedrich-Alexander-Universität Erlangen-Nürnberg © Config eG 
FAU Logo
  Sammlung/Stundenplan    Modulbelegung Home  |  Rechtliches  |  Kontakt  |  Hilfe    
Suche:      Semester:   
 Lehr-
veranstaltungen
   Personen/
Einrichtungen
   Räume   Forschungs-
bericht
   Publi-
kationen
   Internat.
Kontakte
   Examens-
arbeiten
   Telefon &
E-Mail
 
 
 Darstellung
 
Druckansicht

 
 
Einrichtungen >> Technische Fakultät (TF) >> Department Informatik (INF) >> Lehrstuhl für Informatik 2 (Programmiersysteme) >>
OpenMP/Java

JaMP ist eine Implementierung des bekannten OpenMP Standard für Java. JaMP erlaubt es (unter anderem) Schleifen zu parallelisieren, ohne sich mit der low-level Thread API von Java befassen zu müssen. Eine parallele Schleife hätte in JaMP folgende Form:

class Test {
...void foo(){
......//#omp parallel for
......for (int i=0;i<N;i++) {
.........a[i] = b[i] + c[i]
......}
...}
}

JaMP implementiert im Moment die Funktionalität von OpenMP 2.0 und Teile der Spezifikation 3.0 (z.B. die collapse clause). Die aktuelle JaMP Version erzeugt reinen Java Code und ist auf jeder JVM (ab Java 1.5) lauffähig. Die neueste Version kann sogar CUDA-fähige Hardware zur Ausführung von Schleifen verwenden, wenn der Schleifenrumpf eine Transformation nach CUDA möglich macht. Ist die Transformation nicht möglich, wird nebenläufiger Code für gängige Multicore-Prozessoren erzeugt. JaMP unterstütz auch die gleichzeitige Nutzung von mehreren Maschinenund Acceleratoren. Dieses wurde durch die Entwicklung von zwei Abstraktionsbibliotheken ermöglicht. Die untere Abstraktionsschicht bietet abstrakte Recheneinheiten, die von den eigentlichen Berechnungseinheiten wie CPUs und GPUs und ihrem Ort in einem Rechnerbündel abstrahieren. Eine weitere Abstraktionsschicht baut auf dieser Schicht auf und bietet Operationen zur Verwaltung partitionierter und replizierter Arrays. Ein partitioniertes Array wird dabei automatisch über die abstrakten Berechnungseinheiten verteilt, wobei die Geschwindigkeiten der einzelnen Berechnungseinheiten berücksichtigt werden. Welcher abstrakte Array-Typ für ein Array in einem Java-Programm konkret eingesetzt wird, wird vom JaMP-Übersetzer bestimmt, der erweitert wurde, um ein Programm entsprechend zu analysieren.

Im Jahr 2015 wurde das Task-Konzept (OpenMP 3.0) in JaMP integriert. Dadurch lassen sich rekursive Algorithmen mit JaMP parallelisieren.

Projektleitung:
Prof. Dr. Michael Philippsen

Beteiligte:
PD Dr. Ronald Veldema, Dr.-Ing. Georg Dotzler, Dr.-Ing. Thorsten Blaß

Laufzeit: 1.10.2009 - 1.10.2015

UnivIS ist ein Produkt der Config eG, Buckenhof