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.
+1: Ich habe MPI Fehlerhandler nicht einen Gedanken gegeben, seit ich vor ein paar Jahren auf dem Kurs ging. –
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 –