2016-07-22 14 views
3

Ich verwende MPICH2. Wenn ich Prozesse mit mpiexec starte, stürzt der Ausfall eines Prozesses alle anderen Prozesse ab. Wie vermeide ich das?MPICH2, der Ausfall eines Prozesses wird alle anderen Prozesse abstürzen

+0

Vermeiden Sie es nicht! Das ist das gewünschte Verhalten in 99,9% der Fälle. Warum willst du sonst? – Gilles

+0

Wir wollen Fehler-Wiederherstellung implementieren: ein Prozess-Crash wir nur diesen neu starten. – dodolong

+5

Nun, Sie können nicht, da MPI es nicht unterstützt. Fehlertoleranz ist seit Jahrzehnten Gegenstand der Forschung in der MPI-Gemeinschaft und sollte in MPI 3.0 landen, was nicht der Fall war. Vielleicht für MPI 4.0 ... – Gilles

Antwort

4

In MPICH gibt es ein Flag namens -disable-auto-cleanup, das verhindert, dass der Prozessmanager automatisch alle Prozesse bereinigt, wenn ein einzelner Prozess fehlschlägt.

Allerdings hat MPI selbst nicht viel Unterstützung für die Fehlertoleranz, und die Arbeitsgruppe für Fehlertoleranz arbeitet daran, eine zukünftige Version des MPI-Standards hinzuzufügen.

Vorerst das Beste, was Sie tun können, ist die Handler entfernt Default-MPI-Fehler ändern von MPI_ERRORS_ARE_FATAL, die alle Prozesse verursacht abzubrechen, um etwas anderes wie MPI_ERRORS_RETURN, die den Fehlercode an die Anwendung zurückgeben würde und erlauben es, etwas zu tun sonst. Es ist jedoch nicht wahrscheinlich, dass Sie nach einem Fehler mehr kommunizieren können, insbesondere wenn Sie versuchen, die gemeinsame Kommunikation zu verwenden.