Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger.

Ähnliche Präsentationen


Präsentation zum Thema: "Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger."—  Präsentation transkript:

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

29

30 JPVM/jPVM/PVM: Performancevergleich

31

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


Herunterladen ppt "Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger."

Ähnliche Präsentationen


Google-Anzeigen