Parallel Programming OpenMP und JOMP
Übersicht 1. Nachbesprechung der Übung 9 2. OpenMP und JOMP
1. NACHBESPRECHUNG ÜBUNG 9
Application. java Game of Life MVC View / Controller Model. java Field. java oldState newState state setState getState Model Wieso funktioniert das so nicht ?
Application. java Game of Life MVC View / Controller Model. java Field. java oldState newState state Model setState SwingUtilities.invoke* GUI aktualisieren
Application. java Game of Life MVC View / Controller Model. java Field. java oldState newState state‘ Model copyState SwingUtilities.invoke* Modell aktualisieren oldState
Game of Life: der Code
2. OPENMP UND JOMP
Fork-Join for { } } Sequential code Parallel code Sequential code Parallel code Sequential code
OpenMP in Java = JOMP //omp parallel for [additional directives] for(int i = START; i < END; i += INC){ //the code } START, END und INC müssen Loop - Invariant sein Variablen, die innerhalb des loops deklariert werden, sind automatisch private. Variablen, die ausserhalb von // omp parallel deklariert werden sind automatisch shared.
JOMP: private/shared; critical int sum = 0; int temp; //omp parallel for private(temp) shared(sum) for(int i = 0; i < 500; i++){ temp = i*5; //omp critical { sum += temp; }
JOMP verwenden 1. jomp 1.0 b. jar zum CLASSPATH hinzufügen 2. JOMP - Compiler aufrufen via java jomp.compiler.Jomp NameOfFile 3. Java - Compiler aufrufen via javac *.java 4. Programm ausführen via java “-Djomp.threads=N” NameOfFile
WTF is “CLASSPATH”? Umgebungsvariable Analog zu PATH unter Unix / Windows Zuweisen in cmd. exe set CLASSPATH = jomp 1.0 b. jar ;. Zuweisen in Psh $env : CLASSPATH = “jomp 1.0 b. jar ;. ” Zuweisen in bash ihr wisst das besser als ich :- P Enthält ‘;’- getrennte Liste von Verzeichnissen und *. jar - Dateien, die Java durchsucht
OMG?! Kurzes Beispiel
So in Ordnung? int[] a = new int[50]; int b; //omg parallel for lastprivate(b) for(int i = 0; i < a.length; i++){ a[i] = b++; } System.out.println(b);
FRAGEN?