1 / 14

PVM – Parallel Virtual Machine

PVM – Parallel Virtual Machine. Michael Springmann. PVM Eigenschaften. Aufbau von Hypercomputern / Beowulf-Cluster verteilte Ressourcen als virtueller Rechner einfache Installation und Konfiguration leichte Programmeerstellung durch Bibliothek für Message-Passing-Funktionen

tambre
Download Presentation

PVM – 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. PVM – Parallel Virtual Machine Michael Springmann

  2. PVM Eigenschaften • Aufbau von Hypercomputern / Beowulf-Cluster • verteilte Ressourcen als virtueller Rechner • einfache Installation und Konfiguration • leichte Programmeerstellung durch Bibliothek für Message-Passing-Funktionen • Heterogenität auf Applikations-, Maschinen-und Netzwerk-Ebene möglich • Anforderungen dementsprechend niedrig

  3. PVM - Entwicklung • PVM 1.0 • Ab 1989 entwickelt von Vaidy Sunderam und Al Geist am Oak Ridge National Laboratory • Nur intern genutzt / nicht veröffentlicht • PVM 2.0 • Februar 1991 an der UTK veröffentlicht • PVM 3.0 • Februar 1993 veröffentlicht • Wurde de facto Standard für paralleles Rechnen • Aktuell PVM 3.4.4 • Letzte Aktualisierung September 2001

  4. Bestandteile von PVM • Anwendungen • pvmd: PVM Dämon • pvm: Konsole • Bibliotheken • pvm3 • C Interface • FORTRAN Interface • ... weitere wie Perl, Python, Java erhältlich • Tools • XPVM • Debugger • Anwendung (z.B. pvmpov)

  5. PVM Dämon PVM Dämon gepackte Daten und Statusinformationen Programm 1 Programm 2 Knoten 1 Knoten 2 PVM Dämon • Läuft auf jedem Rechner im Cluster • Führt KEINE Berechnungen durch • Fungiert als Message-Router und Controller

  6. PVM Dämon PVM Dämon Programm 1 Programm 2 Separate TCP-Verbindung Knoten 1 Knoten 2 Task-Task-Kommunikation • Mit pvm_setopt(PvmRoute, PvmRouteDirect)lässt sich diese auch beschleunigen gepackte Daten und Statusinformationen

  7. PVM Konsole • Wird mit Befehl „pvm“ gestartet • Startet wenn nötig pvmd • Zeigt den Prompt „pvm>“ • Nimmt Befehle entgegen, z.B. • add <host> • delete <host> • conf • ps -a • quit • halt • spawn [->] • Zeigt die Ausgabe

  8. PVM Hostfile Optionen • Befehl „add“ startet neuen Dämon auf <host> • Optionen können direkt oder in „hostfile“ angegeben werden • lo=userid • so=pw • dx=Pfad zu pvmd • ep=Pfad zu Anwendungen • sp=relative Leistung im Cluster • min. 1, max. 100000, default ist 1000 • bx=Pfad zum Debugger • wd=Arbeitsverzeichnis • ip=Hostname • so=ms

  9. PVM C Bibliothek • Kontrollfunktionen • ähnlich Befehlen auf der Konsole • Beispiele • int info = pvm_addhosts(char **hosts, int nhost, int *infos) • int info = pvm_delhosts(char **hosts, int nhost, int *infos) • int tid = pvm_mytid(void) • int info = pvm_kill(int tid) • Informationsfunktionen • Beispiele • int tid = pvm_parent(void) • int dtid = pvm_tidtohost(int tid) • int info = pvm_perror(char *msg) • int val = pvm_getopt(int what)

  10. PVM C Bibliothek II • Signal-Funktionen • int info = pvm_sendsig(int tid, int signum) • int info = pvm_notify(int about, int msgtag, int ntask, int *tids) • Nachrichten-Puffer-Funktionen • Beispiele • int bufid = pvm_initsend(int encoding) • int bufid = pvm_getsbuf(void) • int oldbuf = pvm_setrbuf(int bufid) • int info = pvm_freebuf(int bufid)

  11. PVM C Bibliothek III • Funktionen zum Packen und Senden • int info = pvm_pkint(int *np, int nitem, int stride) • int info = pvm_pkdouble(int *dp, int nitem, int stride) • int info = pvm_pkstr(char *cp) • int info = pvm_packf(printf-like format ...) • int info = pvm_send(int tid, int msgtag) • int info = pvm_mcast(int *tids, int ntask, int msgtag) • Funktionen zum Empfangen und Entpacken • int bufid = pvm_recv(int tid, int msgtag) • int bufid = pvm_nrecv(int tid, int msgtag) • int bufid = pvm_trecv(int tid,int msgtag,struct timeval *tmout) • int bufid = pvm_probe(int tid, int msgtag) • int info = pvm_upk*(...) wie pvm_pk*

  12. PVM C Bibliothek IV • Gruppenfunktionen • PVM bietet dynamische, benannte Gruppen • Erleichtert hierdurch erheblich die Programmierung • Beispiele • int inum = pvm_joingroup(char *group) • int info = pvm_lvgroup(char *group) • int size = pvm_gsize(char *group) • int tid = pvm_gettid(char *group, int inum) • int inum = pvm_getinst(char *group, int tid) • int info = pvm_bcast(char *group, int msgtag) • int info = pvm_reduce(void (*func)(), void *data, int nitem, int datatype, int msgtag, char *group, int root) • func kann vordefinierte Funktionen PvmMax, PvmMin, PvmSum oder PvmProduct annehmen • int info = pvm_barrier(char *group, int count)

  13. Quellen • Bücher • Al Geist et al.: PVM - A User‘s Guide and Tutorial for Networked Parallel ComputingMIT Press 1994 • Internet • PVM Homepage: http://www.epm.ornl.gov/pvm/pvm_home.html(leider seit Wochen offline) • Netlib.org: http://www.netlib.org/pvm3/ • Studienarbeit von Carsten Schindler: http://parallel.fh-bielefeld.de/ti/studien/pvm/title.html

  14. Ende der Präsentation

More Related