2010-11-16 23 views

risposta

3

Nota che una caratteristica che esiste dal MPI giorni 1.x è che si può impostare un gestore di errori: per esempio,

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

Come osserva Marco, la maggior parte di noi basta usare MPI_ERRORS_ARE_FATAL (che è l'impostazione predefinita) perché i nostri algoritmi sono molto pesanti e non possono essere facilmente recuperati (tranne attraverso il checkpoint, che la maggior parte di noi fa comunque).

Ma questo non deve essere il caso; è possibile avere le funzioni MPI restituire i messaggi di errore e provare a recuperare nel miglior modo possibile.

Ci sono alcuni pacchetti MPI fault-tolerant là fuori - http://icl.cs.utk.edu/ftmpi/ (che è un po 'vecchio e implementa solo la funzionalità MPI 1.2). Più recentemente, http://osl.iu.edu/research/ft/cifts/ è un approccio che viene inserito in OpenMPI come progetto separato, e vi è anche un pacchetto di checkpoint/riavvio a livello di sistema operativo, BLCR, che potrebbe essere di interesse.

Il forum MPI-3 sta discutendo un'API standard di tolleranza agli errori in MPI, quindi il ritmo di tali progetti è in accelerazione.

+0

+1: Non ho dato un errore ai gestori di errori MPI da quando ho partecipato al corso alcuni anni fa. –

+2

La recente versione 1.3.1 di MPICH2 è più tollerante ai guasti rispetto alle versioni precedenti. Tollera i singoli errori di processo quando MPI_ERRORS_RETURN viene utilizzato come gestore degli errori, ma le operazioni collettive potrebbero non riuscire in modi imprevisti o sospendere il programma. Quella versione supporta anche BLCR. Ecco il changelog relativo: https://svn.mcs.anl.gov/repos/mpi/mpich2/tags/release/mpich2-1.3.1/CHANGES –

1

Non proprio, MPI non fornisce out-of-the-box tolleranza ai guasti. Potresti scrivere i tuoi programmi per gestire il fallimento di un processo, ma molti di noi no, viviamo con i nostri programmi in crash quando l'hardware muore. Questa situazione sta cambiando con l'emergere di supercomputer con centinaia di migliaia di processori e il tempo medio tra i guasti dell'ordine dei secondi.