Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Elldrich Herb Geändert vor über 9 Jahren
1
Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger
2
Einführung zWas ist MPI? zWas ist PVM? zWas ist jPVM? zWas ist JPVM?
3
was ist MPI? z„message passing interface“ zweltweiter Standard für „message passing programs“ zvereint die Vorteile mehrerer bereits bestehender Systeme
4
Was ist PVM? zStandard Software für distributed computing zNetzwerk agiert als ein großes System zin C/C++ und Fortran
5
Was ist jPVM? zin Java geschriebenes Interface zur PVM zbedient sich der native methods capability von Java zRechner müssen Java und PVM unterstützen
6
Was ist jPVM? zbestehende PVM-Programme wiederverwendbar
7
Was ist JPVM? zPVM in Java implementiert zexplizites message passing wie in PVM zdiverse syntaktische und semantische Veränderungen zur Anpassung an den Java-Programmierstil
8
Was ist JPVM? zUmstieg von PVM nach JPVM unkompliziert zVerbesserungen durch thread safety, multiple communication end-points (CEP) pro Task, maximale Portabilität
9
Was ist JPVM? zerschließung bis dato vom Network Parallel Computing ausgeschlossener Architekturen, wie Mac und Windows NT
10
Arbeitsweise der JPVM zInterface zErzeugung von Tasks zmessage passing zKommunikationsimplementierung zSystemkonfiguration
11
JPVM: Interface zwichtigste Klasse: jpvmEnviroment zjpvmEnviroment-Objekt entspricht CEP zwerden mit Identifikatoren vom Typ jpvmTaskId versehen zSchnittstelle zu den wichtigsten JPVM- Diensten
12
JPVM: Interface
13
JPVM: Taskgenerierung zpvm_spawn() zJeder neue Task erzeugt seine eigene Instanz der JVM. zVerteilung dieser Instanzen auf den Hostpool
14
JPVM: Taskgenerierung zJede JVM-Instanz verwaltet ein Task- Objekt (z. B. der Klasse „worker“). zpvm_spawn() gibt die ID des ersten erzeugten jpvmEnviroment-Objekts in einem neuen Task zurück zBeibehaltung der PVM-Signatur
15
JPVM: Message Passing zpvm_send() und pvm_recv() zZusammenfassung der Daten in einem jpvmBuffer
16
JPVM: Message Passing class jpvmBuffer { //ctor public jpvmBuffer(); //buffering public 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);... //extracting public void unpack(int v[], int n, int stride); public int upkint(); public void unpack(float v[], int n, int stride); public float upkfloat();... };
17
JPVM: Message Passing zzwei Methodengruppen: Packen und Extrahieren zÜberladung => einfacherer Code zOperationen für alle Grundtypen in skalarer Form und Vektorform
18
JPVM: Message Passing zasynchrones message passing zSendeparameter: Task-ID und message tag zEmpfangsparameter: keine, Task-ID oder message tag, Task-ID und message tag
19
JPVM: Message Passing zblock bis Nachricht empfangen zRückgabe einer jpvmMessage
20
JPVM: Message Passing class jpvmMessage { public int messageTag; public jpvmTaskId sourceTid; public jpvmBuffer buffer; };
21
JPVM: Kommunikation zTCP zein server socket pro jpvmEnviroment zjpvmTaskId kapselt IP und Port für TCP- Verbindung zthread safety
22
JPVM: Kommunikation
23
zinterne Warteschlange synchronisiert zmehrere Leser und Schreiber gleichzeitig zpvm_recv() fragt Warteschlange ab zpvm_send() synchronized
24
JPVM: Systemkonfiguration zein Daemon pro CPU zmanuelles Erzeugen von jpvmDaemon- Objekten zDaemons hauptsächlich für Taskgenerierung zuständig
25
JPVM: Systemkonfiguration zAnmeldung der Daemons über Konsolenprogramm: jpvmConsole zDaemon wartet auf Anfragen von Clients zdirekte Antwort auf Anfragen wie Taskstatus und Systeminformationen
26
JPVM: Systemkonfiguration zStarten eines neuen Threads bei Taskgenerierung => niedrigere Wartezeiten für andere Anfragen
27
JPVM: Beispiel import 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"); } } };
28
JPVM: Performance
30
JPVM/jPVM/PVM: Performancevergleich
32
Folgerungen zJPVM noch nicht „getuned“ zVerbesserungen im Bereich der JITs möglich zJPVM-Anwendungen portabler und viel einfacher zu warten als PVM- oder jPVM- Anwendungen
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.