Due to the increasing size of HPC machines, the fault presence is becoming an eventuality that applications must face. MPI provides no support for the execution past the detection of a fault, and this is becoming more and more constraining. With the introduction of the User-Level Fault Mitigation library (ULFM), it is now possible to repair the execution, but it needs changes in the applications' code. Moreover, ULFM isn't easy to introduce in a generic MPI application as it needs deep knowledge of the problem it's trying to solve. That is the reason why ULFM has been integrated into many frameworks that encapsulate the repair path and provide an easier to use API. Our effort proposes the Legio library, a system to easily introduce fault resiliency in an embarrassingly parallel MPI application. The focus was towards a transparent approach: the application needs almost no code changes to support Legio. The repair solution was also different from most of the already developed frameworks: while their focus is towards the recreation of the failed nodes and the restoration of a correct status, Legio bases on a shrinking approach that discards the failed nodes and lets the others proceed. This solution is expected to provide better performance in the recovery phase but will affect the accuracy of the result: a trade-off that many embarrassingly parallel applications are willing to do, like for example Monte Carlo approximators. We also the first evolution of the Legio library which includes a new communication structure that transparently reduces the size of the communicators used by the application. We tested our solutions on the Marconi100 cluster at CINECA, showing that the overhead introduced with the library is negligible and it doesn't limit the scalability properties of MPI. We also tested the library on real applications by injecting faults, to further prove the robustness of the solution. Finally, we discussed a further evolution, which can include C/R and achieve local recovery for a complete framework.

Dato l'aumento delle dimensioni dei cluster HPC, l'insorgere di guasti sta diventando un evento da considerare. Lo standard MPI non gestisce il comportamento dell'applicazione dopo l'insorgere di un guasto, e questo sta cominciando ad essere un forte limite agli sviluppi di architetture più potenti. Con l'introduzione della libreria ULFM è possibile gestire la presenza di guasti, riparando le strutture coinvolte e tornando ad uno stato corretto. Purtroppo, la maggior parte delle applicazioni MPI non è stata progettata considerando ULFM e adattare il codice non è un compito semplice. Queste difficoltà hanno dato alla luce dei framework che racchiudono le funzionalità proposte da ULFM ma espongono una semplice interfaccia per l'utente. Il nostro lavoro ha portato alla creazione di Legio, una libreria in grado di introdurre resilienza ai guasti in applicazioni MPI imbarazzantemente parallele. Uno degli obiettivi principali era la trasparenza: l'integrazione con l'applicazione MPI deve avvenire senza cambiamenti nel codice. Abbiamo adottato anche un approccio alternativo per la modalità di riparazione: se la maggior parte dei framework presenti si concentra sulla rigenerazione dei processi guasti, in Legio abbiamo optato per la riparazione senza sostituzioni. Questa soluzione riduce il tempo di riparazione ma danneggia anche la correttezza dell'applicazione, che produrrà un risultato meno accurato: questo compromesso è comunque accettabile in alcune applicazioni supportate, come ad esempio nelle approssimazioni Monte Carlo. Abbiamo prodotto anche una seconda versione che ridefinisce in modo trasparente la struttura della comunicazione in MPI, per ridurre la dimensione dei comunicatori. Abbiamo eseguito dei test sul cluster Marconi100 gestito da CINECA, mostrando come il costo di utilizzo di Legio sia trascurabile. Abbiamo inoltre testato la robustezza di applicazioni reali usanti la nostra libreria iniettando dei guasti nel sistema: queste sono state in grado di risolvere i problemi e continuare la propria esecuzione. Abbiamo infine teorizzato l'introduzione di un sistema di checkpoint orientato al recupero locale dell'esecuzione. Abbiamo identificato nel plug-in MANA di DMTCP un possibile candidato per questa integrazione, e abbiamo considerato i vari passi da eseguire per riuscirci.

Legio : fault resiliency for embarrassingly parallel MPI applications

Rocco, Roberto
2019/2020

Abstract

Due to the increasing size of HPC machines, the fault presence is becoming an eventuality that applications must face. MPI provides no support for the execution past the detection of a fault, and this is becoming more and more constraining. With the introduction of the User-Level Fault Mitigation library (ULFM), it is now possible to repair the execution, but it needs changes in the applications' code. Moreover, ULFM isn't easy to introduce in a generic MPI application as it needs deep knowledge of the problem it's trying to solve. That is the reason why ULFM has been integrated into many frameworks that encapsulate the repair path and provide an easier to use API. Our effort proposes the Legio library, a system to easily introduce fault resiliency in an embarrassingly parallel MPI application. The focus was towards a transparent approach: the application needs almost no code changes to support Legio. The repair solution was also different from most of the already developed frameworks: while their focus is towards the recreation of the failed nodes and the restoration of a correct status, Legio bases on a shrinking approach that discards the failed nodes and lets the others proceed. This solution is expected to provide better performance in the recovery phase but will affect the accuracy of the result: a trade-off that many embarrassingly parallel applications are willing to do, like for example Monte Carlo approximators. We also the first evolution of the Legio library which includes a new communication structure that transparently reduces the size of the communicators used by the application. We tested our solutions on the Marconi100 cluster at CINECA, showing that the overhead introduced with the library is negligible and it doesn't limit the scalability properties of MPI. We also tested the library on real applications by injecting faults, to further prove the robustness of the solution. Finally, we discussed a further evolution, which can include C/R and achieve local recovery for a complete framework.
GADIOLI, DAVIDE
ING - Scuola di Ingegneria Industriale e dell'Informazione
15-dic-2020
2019/2020
Dato l'aumento delle dimensioni dei cluster HPC, l'insorgere di guasti sta diventando un evento da considerare. Lo standard MPI non gestisce il comportamento dell'applicazione dopo l'insorgere di un guasto, e questo sta cominciando ad essere un forte limite agli sviluppi di architetture più potenti. Con l'introduzione della libreria ULFM è possibile gestire la presenza di guasti, riparando le strutture coinvolte e tornando ad uno stato corretto. Purtroppo, la maggior parte delle applicazioni MPI non è stata progettata considerando ULFM e adattare il codice non è un compito semplice. Queste difficoltà hanno dato alla luce dei framework che racchiudono le funzionalità proposte da ULFM ma espongono una semplice interfaccia per l'utente. Il nostro lavoro ha portato alla creazione di Legio, una libreria in grado di introdurre resilienza ai guasti in applicazioni MPI imbarazzantemente parallele. Uno degli obiettivi principali era la trasparenza: l'integrazione con l'applicazione MPI deve avvenire senza cambiamenti nel codice. Abbiamo adottato anche un approccio alternativo per la modalità di riparazione: se la maggior parte dei framework presenti si concentra sulla rigenerazione dei processi guasti, in Legio abbiamo optato per la riparazione senza sostituzioni. Questa soluzione riduce il tempo di riparazione ma danneggia anche la correttezza dell'applicazione, che produrrà un risultato meno accurato: questo compromesso è comunque accettabile in alcune applicazioni supportate, come ad esempio nelle approssimazioni Monte Carlo. Abbiamo prodotto anche una seconda versione che ridefinisce in modo trasparente la struttura della comunicazione in MPI, per ridurre la dimensione dei comunicatori. Abbiamo eseguito dei test sul cluster Marconi100 gestito da CINECA, mostrando come il costo di utilizzo di Legio sia trascurabile. Abbiamo inoltre testato la robustezza di applicazioni reali usanti la nostra libreria iniettando dei guasti nel sistema: queste sono state in grado di risolvere i problemi e continuare la propria esecuzione. Abbiamo infine teorizzato l'introduzione di un sistema di checkpoint orientato al recupero locale dell'esecuzione. Abbiamo identificato nel plug-in MANA di DMTCP un possibile candidato per questa integrazione, e abbiamo considerato i vari passi da eseguire per riuscirci.
File allegati
File Dimensione Formato  
RRocco-Thesis.pdf

accessibile in internet per tutti

Dimensione 809.78 kB
Formato Adobe PDF
809.78 kB Adobe PDF Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/169750