160 likes | 281 Views
Parallel Programming. OpenMP und JOMP. http://n.ethz.ch/~klauserc/FS10/PP/. Übersicht. Nachbesprechung der Übung 9 OpenMP und JOMP. 1. Nachbesprechung Übung 9. Game of Life MVC. Wieso funktioniert das so nicht?. Application.java. Model.java. getState. state. oldState. newState.
E N D
Parallel Programming OpenMP und JOMP http://n.ethz.ch/~klauserc/FS10/PP/
Übersicht • NachbesprechungderÜbung 9 • OpenMP und JOMP
Game of Life MVC Wieso funktioniert das so nicht? Application.java Model.java getState state oldState newState setState Model Field.java View/Controller
Game of Life MVC GUI aktualisieren Application.java Model.java state oldState SwingUtilities.invoke* setState newState Model Field.java View/Controller
Game of Life MVC Modell aktualisieren Application.java Model.java oldState copyState SwingUtilities.invoke* newState state‘ Model oldState Field.java View/Controller
Fork-Join Sequential code for { Parallel code } Sequential code for { Parallel code } Sequential code
OpenMP in Java = JOMP • //omp parallel for [additional directives] • for(int i = START; i < END; i += INC){ • //thecode • } • 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 • intsum = 0; • inttemp; • //omp parallel for private(temp) shared(sum) • for(int i = 0; i < 500; i++){ • temp = i*5; • //ompcritical • { • sum += temp; • } • }
JOMP verwenden • jomp1.0b.jar zum CLASSPATH hinzufügen • JOMP-Compiler aufrufen via java jomp.compiler.JompNameOfFile • Java-Compiler aufrufen via javac *.java • Programmausführen via java “-Djomp.threads=N” NameOfFile
WTF is “CLASSPATH”? • Umgebungsvariable • Analog zu PATH unter Unix/Windows • Zuweisen in cmd.exe • set CLASSPATH=jomp1.0b.jar;. • Zuweisen in Psh • $env:CLASSPATH = “jomp1.0b.jar;.” • Zuweisen in bash • ihrwisst das besseralsich :-P • Enthält ‘;’-getrennteListe von Verzeichnissen und *.jar-Dateien, die Java durchsucht
So in Ordnung? • int[] a = new int[50]; • int b; • //omg parallel for lastprivate(b) • for(inti = 0; i < a.length; i++){ • a[i] = b++; • } • System.out.println(b);