Application-level Fault Tolerance and Resilience in HPC Applications
暂无分享,去创建一个
espanolEl rapido aumento de las necesidades de computo de distintas ramas de la ciencia ha provocado un gran crecimiento en el rendimiento ofrecido por los supercomputadores. Cada vez se construyen sistemas de computacion de altas prestaciones mayores, con mas recursos hardware de distintos tipos, lo que hace que las tasas de fallo del sistema aumenten. Por tanto, el estudio de tecnicas de tolerancia a fallos eficientes resulta indispensable para garantizar que los programas cientificos puedan completar su ejecucion, evitando ademas que se dispare el consumo de energia. La tecnica checkpoint/restart es una de las mas populares. Sin embargo, la mayor parte de la investigacion en este campo se ha centrado en estrategias stop-and-restart para aplicaciones de memoria distribuida tras la ocurrencia de fallos-parada. Esta tesis propone tecnicas checkpoint/restart a nivel de aplicacion para los modelos de programacion paralela mas populares en supercomputacion. Se han implementado protocolos de checkpointing para aplicaciones hibridas MPI-OpenMP y aplicaciones heterogeneas basadas en OpenCL, prestando en ambos casos especial atencion a la portabilidad y la maleabilidad de la solucion. Con respecto a aplicaciones de memoria distribuida, se propone una solucion de resiliencia que puede ser usada de forma generica en aplicaciones MPI SPMD, permitiendo detectar y reaccionar a fallosparada sin abortar la ejecucion. En su lugar, se vuelven a lanzar los procesos fallidos y se recupera el estado de la aplicacion con una vuelta atras global. A mayores, esta solucion de resiliencia ha sido optimizada implementando una vuelta atras local, en la que solo los procesos fallidos vuelven atras, empleando un protocolo de almacenaje de mensajes para garantizar la consistencia y el progreso de la ejecucion. Por ultimo, se propone una extension de una libreria de checkpointing para facilitar la implementacion de estrategias de recuperacion ad hoc ante corrupciones de memoria. Muchas veces, este tipo de errores puede gestionarse a nivel de aplicacion, evitando desencadenar un fallo-parada y permitiendo una recuperacion mas eficiente. EnglishThe rapid increase in the computational demands of science has lead to a pronounced growth in the performance offered by supercomputers. As High Performance Computing (HPC) systems grow larger, including more hardware components of different types, the system's failure rate becomes higher. Efficient fault tolerance techniques are essential not only to ensure the execution completion but also to save energy. Checkpoint/restart is one of the most popular fault tolerance techniques. However, most of the research in this field is focused on stop-and-restart strategies for distributed-memory applications in the event of fail-stop failures. This thesis focuses on the implementation of application-level checkpoint/restart solutions for the most popular parallel programming models used in HPC. Hence, we have implemented checkpointing solutions to cope with fail-stop failures in hybrid MPI-OpenMP applications and OpenCL-based programs. Both strategies maximize the restart portability and malleability, ie., the recovery can take place on machines with different CPU / accelerator architectures, and/ or operating systems, and can be adapted to the available resources (number of cores/accelerators). Regarding distributed-memory applications, we propose a resilience solution that can be generally applied to SPMD MPI programs. Resilient applications can detect and react to failures without aborting their execution upon fail-stop failures. Instead, failed processes are re-spawned, and the application state is recovered through a global rollback. Moreover, we have optimized this resilience proposal by implementing a local rollback protocol, in which only failed processes rollback to a previous state, while message logging enables global consistency and further progress of the computation. Finally, we have extended a checkpointing library to facilitate the implementation of ad hoc recovery strategies in the event of soft errors) caused by memory corruptions. Many times, these errors can be handled at the software-Ievel, tIms, avoiding fail-stop failures and enabling a more efficient recovery. galegoAs necesidades computacionais das distintas ramas da ciencia medraron enormemente nos ultimos anos, o que provocou un gran crecemento no rendemento proporcionado polos supercomputadores. Cada vez construense sistemas de computacion de altas prestacions de maior tamano, con mais recursos hardware de distintos tipos, o que fai que as taxas de fallo destes sistemas tamen medren. Polo tanto, o estudo de tecnicas de tolerancia a fallos eficientes e indispensabel para garantires que os programas cientificos poidan completar a sua execucion, evitando ademais que se dispare o consumo de enerxia. O checkpoint/restart e unha das tecnicas mais populares. Sen embargo, a maioria da investigacion levada a cabo nas ultimas decadas centrase en estratexias stop-and-restart para aplicacions de memoria distribuida tralo acontecemento dun fallo-parada. Esta tese propon tecnicas checkpoint/restart a nivel de aplicacion para os modelos de programacion paralela roais populares en supercomputacion. Implementaronse protocolos de checkpointing para aplicacions hibridas MPI-OpenMP e aplicacions heteroxeneas baseadas en OpenCL, en ambolos dous casos prestando especial coidado a portabilidade e maleabilidade da solucion. En canto a aplicacions de memoria distribuida, proponse unha solucion de resiliencia que pode ser empregada de forma xenerica en aplicacions MPI SPMD, permitindo detectar e reaccionar a fallos-parada sen abortar a execucion. Neste caso, os procesos fallidos volvense a lanzar e o estado da aplicacion recuperase cunha volta atras global. A maiores, esta solucion de resiliencia optimizouse implementando unha volta atras local, na que so os procesos fallidos volven atras, empregando un protocolo de almacenaxe de mensaxes para garantires a consistencia e o progreso da execucion. Por ultimo, proponse a extension dunha libreria de checkpointing para facilitares a implementacion de estratexias de recuperacion ad hoc ante conupcions de memoria. En moitas ocasions, estos erros poden ser xestionados a nivel de aplicacion, evitando desencadear un fallo-parada e permitindo unha recuperacion mais eficiente.