![Page 1: Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger](https://reader035.vdocuments.net/reader035/viewer/2022062512/55204d8249795902118d505f/html5/thumbnails/1.jpg)
Hauptseminar 2001 „Parallele Programmierung in Java“
- JPVM-Java Parallel Virtual Machine
Referent: Sebastian Steininger
![Page 2: Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger](https://reader035.vdocuments.net/reader035/viewer/2022062512/55204d8249795902118d505f/html5/thumbnails/2.jpg)
Einführung
Was ist MPI?
Was ist PVM?
Was ist jPVM?
Was ist JPVM?
![Page 3: Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger](https://reader035.vdocuments.net/reader035/viewer/2022062512/55204d8249795902118d505f/html5/thumbnails/3.jpg)
was ist MPI?
„message passing interface“
weltweiter Standard für „message passing programs“
vereint die Vorteile mehrerer bereits bestehender Systeme
![Page 4: Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger](https://reader035.vdocuments.net/reader035/viewer/2022062512/55204d8249795902118d505f/html5/thumbnails/4.jpg)
Was ist PVM?
Standard Software für distributed computing
Netzwerk agiert als ein großes System
in C/C++ und Fortran
![Page 5: Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger](https://reader035.vdocuments.net/reader035/viewer/2022062512/55204d8249795902118d505f/html5/thumbnails/5.jpg)
Was ist jPVM?
in Java geschriebenes Interface zur PVM
bedient sich der native methods capability von Java
Rechner müssen Java und PVM unterstützen
![Page 6: Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger](https://reader035.vdocuments.net/reader035/viewer/2022062512/55204d8249795902118d505f/html5/thumbnails/6.jpg)
Was ist jPVM?
bestehende PVM-Programme wiederverwendbar
![Page 7: Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger](https://reader035.vdocuments.net/reader035/viewer/2022062512/55204d8249795902118d505f/html5/thumbnails/7.jpg)
Was ist JPVM?
PVM in Java implementiert
explizites message passing wie in PVM
diverse syntaktische und semantische Veränderungen zur Anpassung an den Java-Programmierstil
![Page 8: Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger](https://reader035.vdocuments.net/reader035/viewer/2022062512/55204d8249795902118d505f/html5/thumbnails/8.jpg)
Was ist JPVM?
Umstieg von PVM nach JPVM unkompliziert
Verbesserungen durch thread safety, multiple communication end-points (CEP) pro Task, maximale Portabilität
![Page 9: Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger](https://reader035.vdocuments.net/reader035/viewer/2022062512/55204d8249795902118d505f/html5/thumbnails/9.jpg)
Was ist JPVM?
erschließung bis dato vom Network Parallel Computing ausgeschlossener Architekturen, wie Mac und Windows NT
![Page 10: Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger](https://reader035.vdocuments.net/reader035/viewer/2022062512/55204d8249795902118d505f/html5/thumbnails/10.jpg)
Arbeitsweise der JPVM
Interface
Erzeugung von Tasks
message passing
Kommunikationsimplementierung
Systemkonfiguration
![Page 11: Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger](https://reader035.vdocuments.net/reader035/viewer/2022062512/55204d8249795902118d505f/html5/thumbnails/11.jpg)
JPVM: Interface
wichtigste Klasse: jpvmEnviroment
jpvmEnviroment-Objekt entspricht CEP
werden mit Identifikatoren vom Typ jpvmTaskId versehen
Schnittstelle zu den wichtigsten JPVM-Diensten
![Page 12: Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger](https://reader035.vdocuments.net/reader035/viewer/2022062512/55204d8249795902118d505f/html5/thumbnails/12.jpg)
JPVM: Interfaceclass jpvmEnvironment {
public jpvmEnvironment(); // Constructor registers task with the JPVM systempublic void pvm_exit();
// Identity:public jpvmTaskId pvm_mytid();public jpvmTaskId pvm_parent();
// Task creation:public int pvm_spawn(String task_name, int num, jpvmTaskId tids[]);
// Send messages:public void pvm_send(jpvmBuffer buf, jpvmTaskId tid, int tag);public void pvm_mcast(jpvmBuffer buf, jpvmTaskId tids[], int ntids, int tag);
// Receive messages, blocking (non-blocking versions not depicted):public jpvmMessage pvm_recv(jpvmTaskId tid, int tag);public jpvmMessage pvm_recv(jpvmTaskId tid);public jpvmMessage pvm_recv(int tag);public jpvmMessage pvm_recv();
//Probe for message availability:public boolean pvm_probe(jpvmTaskId tid, int tag);public boolean pvm_probe(jpvmTaskId tid);public boolean pvm_probe(int tag);public boolean pvm_probe();
// System configuration and control:public jpvmConfiguration pvm_config();public jpvmTaskStatus pvm_tasks(jpvmConfiguration conf, int which);public void pvm_halt();
};
![Page 13: Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger](https://reader035.vdocuments.net/reader035/viewer/2022062512/55204d8249795902118d505f/html5/thumbnails/13.jpg)
JPVM: Taskgenerierung
pvm_spawn()
Jeder neue Task erzeugt seine eigene Instanz der JVM.
Verteilung dieser Instanzen auf den Hostpool
![Page 14: Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger](https://reader035.vdocuments.net/reader035/viewer/2022062512/55204d8249795902118d505f/html5/thumbnails/14.jpg)
JPVM: Taskgenerierung
Jede JVM-Instanz verwaltet ein Task-Objekt (z. B. der Klasse „worker“).
pvm_spawn() gibt die ID des ersten erzeugten jpvmEnviroment-Objekts in einem neuen Task zurück
Beibehaltung der PVM-Signatur
![Page 15: Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger](https://reader035.vdocuments.net/reader035/viewer/2022062512/55204d8249795902118d505f/html5/thumbnails/15.jpg)
JPVM: Message Passing
pvm_send() und pvm_recv()
Zusammenfassung der Daten in einem jpvmBuffer
![Page 16: Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger](https://reader035.vdocuments.net/reader035/viewer/2022062512/55204d8249795902118d505f/html5/thumbnails/16.jpg)
JPVM: Message Passing
class jpvmBuffer {
//ctorpublic jpvmBuffer();
//bufferingpublic void pack(int v[], int n, int stride);public void pack(int s);public void pack(float v[], int n, int stride);public void pack(float s); ...//extractingpublic void unpack(int v[], int n, int stride);public int upkint();public void unpack(float v[], int n, int stride);public float upkfloat(); ...};
![Page 17: Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger](https://reader035.vdocuments.net/reader035/viewer/2022062512/55204d8249795902118d505f/html5/thumbnails/17.jpg)
JPVM: Message Passing
zwei Methodengruppen:Packen und Extrahieren
Überladung => einfacherer Code
Operationen für alle Grundtypen in skalarer Form und Vektorform
![Page 18: Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger](https://reader035.vdocuments.net/reader035/viewer/2022062512/55204d8249795902118d505f/html5/thumbnails/18.jpg)
JPVM: Message Passing
asynchrones message passing
Sendeparameter: Task-ID und message tag
Empfangsparameter: keine, Task-ID oder message tag, Task-ID und message tag
![Page 19: Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger](https://reader035.vdocuments.net/reader035/viewer/2022062512/55204d8249795902118d505f/html5/thumbnails/19.jpg)
JPVM: Message Passing
block bis Nachricht empfangen
Rückgabe einer jpvmMessage
![Page 20: Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger](https://reader035.vdocuments.net/reader035/viewer/2022062512/55204d8249795902118d505f/html5/thumbnails/20.jpg)
JPVM: Message Passing
class jpvmMessage {
public int messageTag;public jpvmTaskId sourceTid;public jpvmBuffer buffer;
};
![Page 21: Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger](https://reader035.vdocuments.net/reader035/viewer/2022062512/55204d8249795902118d505f/html5/thumbnails/21.jpg)
JPVM: Kommunikation
TCP
ein server socket pro jpvmEnviroment
jpvmTaskId kapselt IP und Port für TCP-Verbindung
thread safety
![Page 22: Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger](https://reader035.vdocuments.net/reader035/viewer/2022062512/55204d8249795902118d505f/html5/thumbnails/22.jpg)
JPVM: Kommunikation
![Page 23: Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger](https://reader035.vdocuments.net/reader035/viewer/2022062512/55204d8249795902118d505f/html5/thumbnails/23.jpg)
JPVM: Kommunikation
interne Warteschlange synchronisiert
mehrere Leser und Schreiber gleichzeitig
pvm_recv() fragt Warteschlange ab
pvm_send() synchronized
![Page 24: Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger](https://reader035.vdocuments.net/reader035/viewer/2022062512/55204d8249795902118d505f/html5/thumbnails/24.jpg)
JPVM: Systemkonfiguration
ein Daemon pro CPU
manuelles Erzeugen von jpvmDaemon-Objekten
Daemons hauptsächlich für Taskgenerierung zuständig
![Page 25: Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger](https://reader035.vdocuments.net/reader035/viewer/2022062512/55204d8249795902118d505f/html5/thumbnails/25.jpg)
JPVM: Systemkonfiguration
Anmeldung der Daemons über Konsolenprogramm: jpvmConsole
Daemon wartet auf Anfragen von Clients
direkte Antwort auf Anfragen wie Taskstatus und Systeminformationen
![Page 26: Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger](https://reader035.vdocuments.net/reader035/viewer/2022062512/55204d8249795902118d505f/html5/thumbnails/26.jpg)
JPVM: Systemkonfiguration
Starten eines neuen Threads bei Taskgenerierung=> niedrigere Wartezeiten für andere Anfragen
![Page 27: Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger](https://reader035.vdocuments.net/reader035/viewer/2022062512/55204d8249795902118d505f/html5/thumbnails/27.jpg)
JPVM: Beispielimport jpvm.*;class example { public static void main(String args[]) { try { jpvmEnvironment jpvm = new jpvmEnvironment();// Spawn N worker tasks jpvmTaskId tids[] = new jpvmTaskId[N]; jpvm.pvm_spawn("worker",N,tids); for (int i=0;i<N; i++) { // Farm out work jpvmBuffer buf = new jpvmBuffer(); int work = getWork(i); buf.pack(data); jpvm.pvm_send(buf, tids[i], 123); } for (int i=0;i<N; i++) { // Receive results jpvmMessage message = jpvm.pvm_recv(tids[i]); int result = message.buffer.upkint(); processResult(result); } jpvm.pvm_exit(); } catch (jpvmException jpe) { System.out.println("Error - jpvm exception"); } }};
![Page 28: Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger](https://reader035.vdocuments.net/reader035/viewer/2022062512/55204d8249795902118d505f/html5/thumbnails/28.jpg)
JPVM: Performance
![Page 29: Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger](https://reader035.vdocuments.net/reader035/viewer/2022062512/55204d8249795902118d505f/html5/thumbnails/29.jpg)
JPVM: Performance
![Page 30: Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger](https://reader035.vdocuments.net/reader035/viewer/2022062512/55204d8249795902118d505f/html5/thumbnails/30.jpg)
JPVM/jPVM/PVM: Performancevergleich
![Page 31: Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger](https://reader035.vdocuments.net/reader035/viewer/2022062512/55204d8249795902118d505f/html5/thumbnails/31.jpg)
JPVM/jPVM/PVM: Performancevergleich
![Page 32: Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger](https://reader035.vdocuments.net/reader035/viewer/2022062512/55204d8249795902118d505f/html5/thumbnails/32.jpg)
Folgerungen
JPVM noch nicht „getuned“
Verbesserungen im Bereich der JITs möglich
JPVM-Anwendungen portabler und viel einfacher zu warten als PVM- oder jPVM-Anwendungen