2010-11-16 12 views

Antwort

3

Beachten Sie, dass eine Funktion, die seit MPI 1.x Tage gegeben hat, ist, dass Sie einen Fehlerhandler festlegen können: zB

http://www.mpi-forum.org/docs/mpi-11-html/node148.html

Wie Mark stellt fest, die meisten von uns nur nutzen MPI_ERRORS_ARE_FATAL (was der Standard), weil unsere Algorithmen sehr state-lastig sind und nicht einfach wiederhergestellt werden können (außer durch Checkpointing, was die meisten von uns ohnehin tun).

Aber das muss nicht der Fall sein; Sie können die MPI-Funktionen die Fehlermeldungen zurückgeben und versuchen, so gut wie möglich wiederherzustellen.

Es gibt ein paar fehlertolerante MPI-Pakete da draußen - http://icl.cs.utk.edu/ftmpi/ (das ist etwas alt und implementiert nur MPI 1.2-Funktionalität). Kürzlich wurde http://osl.iu.edu/research/ft/cifts/ als ein separates Projekt in OpenMPI eingeführt, und es gibt auch ein Checkpoint/Restart-Paket auf Betriebssystemebene, BLCR, das von Interesse sein könnte.

Das MPI-3-Forum diskutiert eine Standard-Fehlertoleranz-API in MPI, daher beschleunigt sich das Tempo solcher Projekte.

+0

+1: Ich habe MPI Fehlerhandler nicht einen Gedanken gegeben, seit ich vor ein paar Jahren auf dem Kurs ging. –

+2

MPICH2s jüngstes Release 1.3.1 ist fehlertoleranter als frühere Releases. Es toleriert einzelne Prozessfehler, wenn MPI_ERRORS_RETURN als Error-Handler verwendet wird. Kollektive Operationen können jedoch auf unerwartete Weise fehlschlagen oder das Programm hängen. Diese Version unterstützt auch BLCR. Hier ist das relevante Changelog: https://svn.mcs.anl.gov/repos/mpi/mpich2/tags/release/mpich2-1.3.1/CHANGES –

1

Nicht wirklich, ist MPI nicht out-of-the-box-Fehlertoleranz. Sie könnten Ihre Programme schreiben, um mit dem Ausfall eines Prozesses fertig zu werden, aber die meisten von uns nicht, wir leben mit unseren Programmen abstürzen, wenn die Hardware stirbt. Diese Situation ändert sich mit dem Aufkommen von Supercomputern mit Hunderttausenden von Prozessoren und einer mittleren Zeit zwischen Ausfällen in der Größenordnung von Sekunden.