1 / 32

Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine

Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger. Einführung. Was ist MPI? Was ist PVM? Was ist jPVM? Was ist JPVM?. was ist MPI?. „message passing interface“ weltweiter Standard für „message passing programs“

Download Presentation

Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Einführung • Was ist MPI? • Was ist PVM? • Was ist jPVM? • Was ist JPVM?

  3. was ist MPI? • „message passing interface“ • weltweiter Standard für „message passing programs“ • vereint die Vorteile mehrerer bereits bestehender Systeme

  4. Was ist PVM? • Standard Software für distributed computing • Netzwerk agiert als ein großes System • in C/C++ und Fortran

  5. 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

  6. Was ist jPVM? • bestehende PVM-Programme wiederverwendbar

  7. 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

  8. Was ist JPVM? • Umstieg von PVM nach JPVM unkompliziert • Verbesserungen durch thread safety, multiple communication end-points (CEP) pro Task, maximale Portabilität

  9. Was ist JPVM? • erschließung bis dato vom Network Parallel Computing ausgeschlossener Architekturen, wie Mac und Windows NT

  10. Arbeitsweise der JPVM • Interface • Erzeugung von Tasks • message passing • Kommunikationsimplementierung • Systemkonfiguration

  11. JPVM: Interface • wichtigste Klasse: jpvmEnviroment • jpvmEnviroment-Objekt entspricht CEP • werden mit Identifikatoren vom Typ jpvmTaskId versehen • Schnittstelle zu den wichtigsten JPVM-Diensten

  12. JPVM: Interface

  13. JPVM: Taskgenerierung • pvm_spawn() • Jeder neue Task erzeugt seine eigene Instanz der JVM. • Verteilung dieser Instanzen auf den Hostpool

  14. 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

  15. JPVM: Message Passing • pvm_send() und pvm_recv() • Zusammenfassung der Daten in einem jpvmBuffer

  16. 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(); ...};

  17. JPVM: Message Passing • zwei Methodengruppen:Packen und Extrahieren • Überladung => einfacherer Code • Operationen für alle Grundtypen in skalarer Form und Vektorform

  18. JPVM: Message Passing • asynchrones message passing • Sendeparameter: Task-ID und message tag • Empfangsparameter: keine, Task-ID oder message tag, Task-ID und message tag

  19. JPVM: Message Passing • block bis Nachricht empfangen • Rückgabe einer jpvmMessage

  20. JPVM: Message Passing class jpvmMessage {public int messageTag;public jpvmTaskId sourceTid;public jpvmBuffer buffer;};

  21. JPVM: Kommunikation • TCP • ein server socket pro jpvmEnviroment • jpvmTaskId kapselt IP und Port für TCP-Verbindung • thread safety

  22. JPVM: Kommunikation

  23. JPVM: Kommunikation • interne Warteschlange synchronisiert • mehrere Leser und Schreiber gleichzeitig • pvm_recv() fragt Warteschlange ab • pvm_send() synchronized

  24. JPVM: Systemkonfiguration • ein Daemon pro CPU • manuelles Erzeugen von jpvmDaemon-Objekten • Daemons hauptsächlich für Taskgenerierung zuständig

  25. JPVM: Systemkonfiguration • Anmeldung der Daemons über Konsolenprogramm: jpvmConsole • Daemon wartet auf Anfragen von Clients • direkte Antwort auf Anfragen wie Taskstatus und Systeminformationen

  26. JPVM: Systemkonfiguration • Starten 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 tasksjpvmTaskId tids[] = new jpvmTaskId[N];jpvm.pvm_spawn("worker",N,tids);for (int i=0;i<N; i++) { // Farm out workjpvmBuffer 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. JPVM: Performance

  30. JPVM/jPVM/PVM: Performancevergleich

  31. JPVM/jPVM/PVM: Performancevergleich

  32. 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

More Related