Parallel Virtual Machine (PVM) Überblick PVM unterstützt: –verteilungstransparente Programmierung –Kommunikation durch Nachrichten –einfache Lastverteilung.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

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.
Einführung in die Programmierung Ausführbare Klassen
Einführung in die Programmierung Zusammenfassung
Progwerkstatt JAVA Klasse, Objekte, Konstruktoren, Methoden
Imperative Programmierung -Entwicklungswerkzeuge
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Java: Dynamische Datentypen
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: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Ein Beispiel in Java.
Konstruktoren.
Objekte und Arbeitsspeicher
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 7 User Interfaces in Java Sommersemester 2003 Lars Bernard.
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 6. Story Driven Modeling Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Einführung in Java1 Einführung in JAVA.
DVG Klassen und Objekte
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
Bestimmung des ggT zweier Zahlen
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sitzung 3: Klassen, Objekte, Arrays und Kontrollstrukturen
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 7 Sitzung 7: User Interfaces in Java.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
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,
Telecooperation/RBG Technische Universität Darmstadt Copyrighted material; for TUD student use only Grundlagen der Informatik I Thema 16: Ausnahmebehandlung.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Informatik Objekte und Klassen 1. Objektorientiertes Modellieren und Programmieren 1.1 Objekte und Klassen.
Objektorientiertes Konstruieren
Variablenkonzept Klassisch, in Java Basistyp
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
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.
Starten der Entwicklungsumgebung (IDE)
Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger.
Programmiervorkurs WS 2014/15 Methoden
Voyager Eigenschaften/Vorzüge Universalität: –ROI-Modelle: CORBA, RMI, DCOM –verschiedene Namens-, Verzeichnisdienste Nachrichtentypen: synchron, oneway,
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.
Übung Informatik I exercise01. 2 Inhaltsübersicht Nachbesprechung Übung 1 Individuelle Fragen/Bemerkungen.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Java-Kurs Übung Besprechung der Hausaufgabe
Threads in Java Threads  Sprachumfang von Java Der Java-Standard fordert nur die Unterstützung von Thread-Prioritäten. Es gibt keine Forderung bzgl.:
Wieland Schwinger Softwareentwicklung 2 Assertions.
PVM – Parallel Virtual Machine Michael Springmann.
Java Programme nur ein bisschen objektorientiert.
Tutorium Software-Engineering SS14 Florian Manghofer.
Schwarz, Lubkoll : Javakurs LE Organisatorisches ● Wer sind wir? ● Was machen wir hier? ● Was haben wir davon? ● Was habt ihr davon?
Konstruktoren.
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
Hello World! Javakurs 2013 Arne Kappen
JAVA lernen: Methoden.
Ein Referat von Sabrina Vissel, darleen paul und yannick fuchs
Implementieren von Klassen
 Präsentation transkript:

Parallel Virtual Machine (PVM) Überblick PVM unterstützt: –verteilungstransparente Programmierung –Kommunikation durch Nachrichten –einfache Lastverteilung –dynamische Integration/Ausschluss von Rechnern PVM unterstützt heterogene Applikationen (bzgl. Programmiersprache, Rechnerarchitektur), ABER hier Einsatz einer speziellen Java-Version.

PVM-Installation Gesamtpaket/Bibliotheken liegen unter (Aufgaben  Material) jpvm.jar und die Applikationsklassen müssen im CLASSPATH liegen, d.h. die Variable CLASSPATH muss richtig gesetzt sein (Kommandozeilenparameter reicht nicht).

PVM-Initialisierung # Starten eines Dämons auf allen Rechnern h i > java jpvm.jpvmDaemon jpvm daemon: h i, port #p i # Starten der Console+Dämon auf lokalem Rechner > java jpvm.jpvmConsole jpvm> # Jeden entfernten Rechner eintragen (für alle i  lokal) jpvm> add Host name: h i Port number: p i # Testen, ob alle angemeldet sind jpvm> ps h 1, 0 tasks:... Local, 1 tasks: jpvm Console

PVM Programmstart etc. Start von PVM-Applikationen wie Java- Applikationen auf beliebigem Rechner mit Dämonen (Adresse in lokalem File, z.B. /tmp/jpvmd.USER, c:\Temp\jpvmd-USER.txt) Herunterfahren des Gesamtsystems mit dem Befehl halt auf der PVM-Konsole Aktive PVM-Applikationen werden nicht beendet! Bei Problemen mit dem Hochfahren von PVM alle alten Referenzdateien löschen.

JPVM-Basisklassen JPVM-Task  Instanz von jpvmEnvironment JPVM-Task hat eindeutigen Namen jpvmTaskId Aufsetzen von Nachrichten mittels class jpvmBuffer { public jpvmBuffer(); // generiert leere Instanz // Füllmethode für (fast) jeden Datentyp public void pack( val); public void pack( vs[],int n,int stride); //Zugriffsmethode für skalare Datentypen public upk (); public void unpack( vals[],int n,int stride);); jpvmBuffer dürfen nach dem Senden nicht mehr manipuliert werden! Entgegennahme von Nachrichten mittels class jpvmMessage { public int messagetag; //zur Klassifizierung public jpvmTaskId sourceTid; // Quelle public jpvmBuffer buffer; // Inhalt }

JPVM - Senden und Empfangen class jpvmEnvironment { // Senden von Nachrichten // an einzelne JPVM-Tasks public void pvm_send(jpvmBuffer buf, // was jpvmTaskId tid, // wohin int tag); // Nachrichtenart // an mehrere JPVM-Tasks public void pvm_mcast(jpvmBuffer bug,jpvmTaskID tids[], int ntids, int tag); // Empfangen von Nachrichten public jpvmMessage pvm_recv(); // blockierend public jpvmMessage pvm_nrecv(); // nichtblockierend public boolean pvm_probe();// Test, ob Nachricht da ist }

JPVM-Erzeugen neuer Tasks Methode in jpvmEnvironment : int pvm_spawn(String cls, //Name der Java-Klasse int num, // Anzahl der neuen Tasks jpvmTaskId tids[]// Container für ); // die neuen TaskIDs –Erzeugung von num JVM –Aufruf von cls.main({}) in jeder JVM –Anzahl erzeugter Tasks als Rückgabe (-1  Fehler)  Zeit- und speicheraufwendiges Starten paralleler verteilter Tasks Kontaktaufnahme zum PVM-System durch Instanziierung von jpvmEnvironment Neue Tasks haben keine Standard Ein-/Ausgabe. (Debugging mit Files, flush() nicht vergessen).

JPVM-Was noch fehlt... Eigene TaskId: jpvmTaskId pvm_mytid() falls Erzeugung mit spawn, TaskID des Vaters jpvmTaskId pvm_parent() Abmelden beim JPVM System void pvm_exit(); Möglicher Programmieransatz SPMD (Single Program Multiple Data) –jede verteilte, parallele Komponente benutzt das gleiche Programm (die gleiche Java-Klasse) –die Ausführung ist abhängig von internen Daten (z.B. „Wurde ich mit spawn erzeugt oder direkt vom Nutzer?“)

JPVM- Ein einfaches Beispiel import jpvm.*; public class Hello { public static void main(String args[]) { // connect to JPVM jpvmEnvironment jpvm = new jpvmEnvironment(); if (jpvm.pvm_parent() == null) { // I‘m the master, create servants... jpvmTaskId servants = new jpvmTaskId[5]; int res = jpvm.pvm_spawn(“Hello“,5, servants);} else { // I‘m the servant.. out = new FileWriter(jpvm.mytid.toString()); out.write(“I‘m alive...“); } jpvm.exit(); // finished }

Bewertung von parallelen Applikationen Beschleunigung (Speedup): Effizienz (Efficiency): Für t 1 sollte eine sequentielle Programmversion gemessen werden. Amdahls Gesetz: Lineare Beschleunigung Übliche Beschleunigung S n

GnuPlot in 5 Minuten # n t(ms) Zweidimensionale Messdaten in einem File plot.dat Starten von GnuPlot: Hostname> gnuplot gnuplot> plot “plot.dat“ title “Aufgabe2“ gnuplot> set output “plot.eps“ gnuplot> set terminal postscript eps gnuplot> replot gnuplot> quit Hostname>