2010-11-16 18 views

Respuesta

3

Tenga en cuenta que una característica que ha existido desde 1.x días MPI es que se puede configurar un controlador de errores: por ejemplo,

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

Como señala Marcos, la mayoría de nosotros sólo tiene que utilizar MPI_ERRORS_ARE_FATAL (que es el valor predeterminado) porque nuestros algoritmos son muy pesados ​​en el estado y no se pueden recuperar fácilmente (excepto mediante puntos de control, que la mayoría de nosotros hacemos de todos modos).

Pero eso no tiene que ser el caso; puede hacer que las funciones de MPI devuelvan los mensajes de error y trate de recuperar lo mejor que pueda.

Hay algunos paquetes MPI tolerantes a fallas por ahí - http://icl.cs.utk.edu/ftmpi/ (que es un poco viejo y solo implementa la funcionalidad MPI 1.2). Más recientemente, http://osl.iu.edu/research/ft/cifts/ es un enfoque que se coloca en OpenMPI como un proyecto separado, y también hay un paquete de punto de control/reinicio del sistema operativo, BLCR, que puede ser de interés.

El foro MPI-3 está discutiendo una API estándar de tolerancia a fallas en MPI, por lo que el ritmo de dichos proyectos es cada vez más acelerado.

+0

+1: No he pensado en los manejadores de errores MPI desde que comencé el curso hace unos años. –

+2

La reciente versión 1.3.1 de MPICH2 es más tolerante a fallas que las versiones anteriores. Tolera fallas de proceso individuales cuando MPI_ERRORS_RETURN se utiliza como controlador de errores, pero las operaciones colectivas pueden fallar de formas inesperadas o colgar el programa. Esa versión también es compatible con BLCR. Aquí está el registro de cambios relevante: https://svn.mcs.anl.gov/repos/mpi/mpich2/tags/release/mpich2-1.3.1/CHANGES –

1

En realidad no, MPI no proporciona tolerancia a fallos fuera de la caja. Podrías escribir tus programas para lidiar con el fracaso de un proceso, pero la mayoría de nosotros no, vivimos con nuestros programas fallando cuando el hardware muere. Esta situación está cambiando con la aparición de superordenadores con cientos de miles de procesadores, y el tiempo medio entre fallas del orden de segundos.

Cuestiones relacionadas