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

Slides:



Advertisements
Ähnliche Präsentationen
programmiert April-Juni 2003 von Knut Riechmann
Advertisements

der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Einführung in die Programmierung Ausführbare Klassen
1 Spezielle Packages des Java SDK (1.4) java.nio.
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Internetzugriff mit Strings und Streams
Java News & Music Der Chat
Threads Richard Göbel.
Indirekte Adressierung
FH-Hof Sockets in Java Richard Göbel. FH-Hof Kommunikation über das Internet - Grundlagen Ein Rechner wird im Internet über die so genannte IP- Adresse.
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 4 Vererbung Sommersemester 2003 Lars Bernard.
Automatisches Testen und Bewerten von Java-Klassen
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
DVG Einführung in Java1 Einführung in JAVA.
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Das Roboterprojekt Einführung Der erste Entwurf Das Thread-Konzept Hindernisse Website.
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
Bestimmung des ggT zweier Zahlen
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Programmierung im Netz und Internet: Einführung in die Programmiersprache Java Teil I 1 Klassen Objekte von.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Learning By Doing TCP/IP Netzwerke mit TCP/IP Das Internet verwendet weitgehend das rund 30-jährige TCP/IP-Protokoll (TCP: Transmission Control Protocol,
Socket-Programmierung
Informatik Objekte und Klassen 1. Objektorientiertes Modellieren und Programmieren 1.1 Objekte und Klassen.
Objektorientiertes Konstruieren
Optimale Ursprungsgerade
Wilfried Imrich CuP - Java Erste Vorlesung Entspricht ungefähr Kapitel 1.1 des Skriptums Wilfried Imrich Montanuniversität Leoben Freitag, 4. Oktober 2002.
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
JOMP
Parallelisierung für Multiprozessor-Maschinen Teil 2.
Javelin Internet-based parallel computing using Java.
Programmiervorkurs WS 2014/15 Methoden
Voyager Eigenschaften/Vorzüge Universalität: –ROI-Modelle: CORBA, RMI, DCOM –verschiedene Namens-, Verzeichnisdienste Nachrichtentypen: synchron, oneway,
Threads in Java Wiederholung der BS Grundlagen Alois Schütte AOSD1.
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
3. Beschreibung von Abläufen durch Algorithmen 3.4 Zufall
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Robuste Programme durch Ausnahmebehandlung
Übung Informatik I exercise01. 2 Inhaltsübersicht Nachbesprechung Übung 1 Individuelle Fragen/Bemerkungen.
Java-Kurs - 3. Übung Hausaufgabe Arrays For-Schleifen.
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Parallel Virtual Machine (PVM) Überblick PVM unterstützt: –verteilungstransparente Programmierung –Kommunikation durch Nachrichten –einfache Lastverteilung.
Threads in Java Threads  Sprachumfang von Java Der Java-Standard fordert nur die Unterstützung von Thread-Prioritäten. Es gibt keine Forderung bzgl.:
Web Services Spezielle Methoden der SWT Liste V – WS 2008/2009 Christian Boryczewski.
PVM – Parallel Virtual Machine Michael Springmann.
Multiprocessing mit OpenMPI Marius Albath. Vorlesung Betriebssysteme, Was ist OpenMPI Was ist OpenMPI OpenMPI Standard Setup OpenMPI Standard.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
Hello World! Javakurs 2013 Arne Kappen
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
Grundkurs Informatik 11-13
Mit der Turtle Java Programmieren
Grundkurs Informatik mit Java
Ein Referat von Sabrina Vissel, darleen paul und yannick fuchs
Tutorstunde 10.
Implementieren von Klassen
 Präsentation transkript:

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

Einführung zWas ist MPI? zWas ist PVM? zWas ist jPVM? zWas ist JPVM?

was ist MPI? z„message passing interface“ zweltweiter Standard für „message passing programs“ zvereint die Vorteile mehrerer bereits bestehender Systeme

Was ist PVM? zStandard Software für distributed computing zNetzwerk agiert als ein großes System zin C/C++ und Fortran

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

Was ist jPVM? zbestehende PVM-Programme wiederverwendbar

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

Was ist JPVM? zUmstieg von PVM nach JPVM unkompliziert zVerbesserungen durch thread safety, multiple communication end-points (CEP) pro Task, maximale Portabilität

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

Arbeitsweise der JPVM zInterface zErzeugung von Tasks zmessage passing zKommunikationsimplementierung zSystemkonfiguration

JPVM: Interface zwichtigste Klasse: jpvmEnviroment zjpvmEnviroment-Objekt entspricht CEP zwerden mit Identifikatoren vom Typ jpvmTaskId versehen zSchnittstelle zu den wichtigsten JPVM- Diensten

JPVM: Interface

JPVM: Taskgenerierung zpvm_spawn() zJeder neue Task erzeugt seine eigene Instanz der JVM. zVerteilung dieser Instanzen auf den Hostpool

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

JPVM: Message Passing zpvm_send() und pvm_recv() zZusammenfassung der Daten in einem jpvmBuffer

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

JPVM: Message Passing zzwei Methodengruppen: Packen und Extrahieren zÜberladung => einfacherer Code zOperationen für alle Grundtypen in skalarer Form und Vektorform

JPVM: Message Passing zasynchrones message passing zSendeparameter: Task-ID und message tag zEmpfangsparameter: keine, Task-ID oder message tag, Task-ID und message tag

JPVM: Message Passing zblock bis Nachricht empfangen zRückgabe einer jpvmMessage

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

JPVM: Kommunikation zTCP zein server socket pro jpvmEnviroment zjpvmTaskId kapselt IP und Port für TCP- Verbindung zthread safety

JPVM: Kommunikation

zinterne Warteschlange synchronisiert zmehrere Leser und Schreiber gleichzeitig zpvm_recv() fragt Warteschlange ab zpvm_send() synchronized

JPVM: Systemkonfiguration zein Daemon pro CPU zmanuelles Erzeugen von jpvmDaemon- Objekten zDaemons hauptsächlich für Taskgenerierung zuständig

JPVM: Systemkonfiguration zAnmeldung der Daemons über Konsolenprogramm: jpvmConsole zDaemon wartet auf Anfragen von Clients zdirekte Antwort auf Anfragen wie Taskstatus und Systeminformationen

JPVM: Systemkonfiguration zStarten eines neuen Threads bei Taskgenerierung => niedrigere Wartezeiten für andere Anfragen

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"); } } };

JPVM: Performance

JPVM/jPVM/PVM: Performancevergleich

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