Servicename
Kommunikationsaufbau über einen "Servicenamen"
Servicename beliebig gewählt, applikationsweit bekannt
Server "veröffentlicht" das Paar (servicename, portname)
Client fragt nach portname zum servicename
"vermittelnder Dritter" = Nameserver
Vorhandensein eines Nameservers im Standard nicht vorgeschrieben,
u.U. nicht von allen Implementierungen unterstützt!
"Reichweite" des Service-Namens:
wie weit eindeutig, welche Clients finden ihn?
z.B. jobweit, rechnerweit, netzweit
Implementation kann über MPI_Info evtl. Reichweite beschränken
MPI-Routinen dafür:
MPI_publish_name
Server veröffentlicht portname für servicename
MPI_Unpublish_name
Servicename wird wieder gelöscht
MPI_Lookup_name
Client erfragt portname zum servicename
Bemerkungen zum Beispielprogramm (
lbpi_q.c
,
query.c
,
query.h
)
Server: abfragbare Version des Programms
LBPI
Client: fragt Server nach Stand der Pi-Berechnung
Server:
Task 0: server, wickelt Kommunikation mit Client ab
Task 1: master, verteilt Arbeit an Slaves und sammelt ein
Task 2-n: slaves, berechnen Teilaufgaben
Master unterscheidet Server- und Slave-Antworten am Rank
Harter Abbruch am Ende durch den Master
Unpublish nötig, sonst Fehler beim nächsten Programmstart
Client:
nur eine Task
holt aktuellen Stand der Berechnung und gibt Zwischenergebnis aus
LAM-Implementierung:
Vorläufer des Standards implementiert (etwas andere Namen)
Server-Task muß Rank 0 haben
Peter Junglas 16.2.1999