Revision [7387]

This is an old revision of Mpi made by ToBo on 2009-01-11 11:21:22.

 

MPI


1. Eigenschaften

  • Architektur und Hardware unabhängig
  • geeignet für Rechner mit mehreren CPUs und für Cluster mit mehreren Rechnern (auch für Cluster mit Multicorerechnern)
  • sichere Datenübertragung
  • Entwicklung von parallelen Algorithmen, Anwendungen und Bibliotheken


2. Implementierungen


nicht zu verwechseln mit OpenMP


3. Informationsmaterial

4. Programme bei MPICH2


mpicc compiles and links MPI programs written in C
mpicxx compiles and links MPI programs written in C++
mpiexec runs an MPI program
mpd process mager
mpdallexit shutdown all process magers (mpd)
mpdcleanup removes the Unix socket on local (the default) and remote machines in case the mpd crashed badly and did not remove it
mpdtrace Llsts hostname of each of the mpds in the ring
mpdringtest measures the time a single message going around the ring of mpds <num> times (default once): mpdringtest 100


5. MPD einrichten


5.1Einen einzelnen mpd zum testen starten


mpd -d



5.2mpd auf einem Rechner mit 4 Cpus einrichten


mpd --daemon --ncpus=4



5.3mpd-Ring auf mehreren Rechnern einrichten

  • Die Datei /etc/hosts auf allen Rechner anpassen oder mit DnsServer DNS-Server arbeiten. Aufpassen mit localhost! Siehe dazu unten Fehlerbehandlung.
  • Einen extra Benutzer auf allen Maschinen für die Arbeit mit MPI einrichten. Bei der Arbeit mit MPI muss man davon ausgehen, dass sich ei Eindringling ohne weitere Vorkehrungen von jedem beliebigen System auf alle anderen Systeme Zugang verschaffen kann.
  • Am besten mittels NfsServer NFS einen User-Account auf allen Rechnern einrichten, so sind alle benutzerspezifischen Einstellungen und die Parallelprogramme auf allen Rechner gleich vorhanden.
  • Etwas bequemer geht es beim Start des mpd, wenn die Passworteingaben wegfallen. Das kann mittels LinuxSshPublicKeyAuth Public-Key-Authentifizierung erreicht werden.
  • MpiMpdRing MPD-Ring mit bootmpd starten.


5.4Weitere Parameter für mpd


echo gibt Informationen aus, wie z.B. die Portnummer
mpd --echo


--listenport=4991


6. Beispiele


Eigene Beispiele
Beispiele aus MPICH2
  • shared/examples_graphics/cpi_anim
  • shared/examples_graphics/cxgraphics


7. Fehlerbehandlung


7.1Fehlermeldung von mpd oder mpdboot


mpd HOST1 (handle_mpd_output 392): failed to handshake with mpd on HOST2; recvd output={}

/etc/hosts
127.0.0.1       localhost.localdomain   localhost
10.3.6.1        HOST1
10.3.6.2        HOST2


7.2mpd bereinigen


Bei Experimentieren kann das löschen aller Überreste von mpd interessant sein.

Auf jeder Maschine ausführen
mpdallexit; mpdcleanup


7.3mpd beschäftigt


mpiexec_amygdala (mpiexec 392): no msg recvd from mpd when expecting ack of request

1 Minute abwarten und nochmal versuchen



CategoryStudiumSE
Siehe auch
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki