Efficient Application-level Fault Tolerance Methods for Large Scale HPC Applications

Language
en
Document Type
Doctoral Thesis
Issue Date
2022-10-04
Issue Year
2022
Authors
Shahzad, Faisal
Editor
Abstract

Over the last decade, the continuous increase in supercomputers’ computing power has been made possible mainly due to the high degree of parallelism at the component level. However, due to this large component count, the Mean Time Between Failure (MTBF) of the overall machine is falling drastically and is currently in the order of few hours for the large supercomputers in the Top500 list. This has accelerated the fault tolerance research in the High-Performance Computing (HPC) field, where many directions are being explored for finding an optimal solution. The main goal is that the applications should survive failure(s), and be able to recover from them with a minimal overhead.

This thesis tackles the fault tolerance issue from two directions: the data recovery and process-recovery mechanisms after process failure(s). Both these approaches complement each other to create a comprehensive solution for making fault-tolerant applications.

For the data recovery, we use the classical Application-Level Checkpoint/Restart (ALCR) approach, as it inherently has the potential to reduce the checkpoint data size to a minimum. In addition, we explore, analyze, and implement various optimization techniques that further minimize its overhead impact on the application’s runtime. For process recovery, we rely on the libraries that offer the possibility to carry on a parallel program execution despite failed processes. In this regard, we first explore the PGAS-style communication library GASPI, which offers this basic fault-tolerant communication functionality based on the timeout approach. Using GASPI, we have developed a library tool that offers the possibility of integrating fault tolerance in applications in a simplified manner. In this tool, the communicator is observed by a health monitor process that manages the health checking and failure recovery operations for all other processes. The failed processes are replaced from a pool of spare processes that are started with the application but remain idle until needed. For the data recovery after process replacement, a separate library module is implemented that enables ALCR functionality for creating checkpoints of GASPI based applications at the node-level in a fault-prone environment. We have then used these tools in different applications at a large scale for testing and benchmarking purposes.

As the MPI communication library is the de facto standard for highly parallel environments, we have developed a library (CRAFT) that offers the ALCR functionality and process-level FT for MPI-based applications. Here, we have also focused on the ease-of-use of the ALCR functionality so that its integration should require minimal code changes in the application. The basic and most frequently used checkpoint data-types can be used directly out-of-the-box without writing any IO-routines in the application. The library offers the IO in multiple formats and is equipped with a straightforward extension mechanism for the user-defined data-types. As a means of overhead reduction, the library offers a builtin asynchronous checkpointing mechanism and supports the Scalable Checkpoint/Restart (SCR) library for node-level checkpointing.

For the process-level failure tolerance, CRAFT uses ULFM-MPI (a prototype faulttolerant MPI implementation) underneath but hides its intricate communication recovery details behind a more straightforward API. The user can choose between a shrinking or a non-shrinking communicator recovery approach based on the application. Subsequently, we use applications from various scientific branches to showcase CRAFT’s usage and benchmark its overheads on a large scale. The results show that checkpoint optimizations such as asynchronous or node-level checkpointing bring the runtime overhead to an acceptable range. In addition, the communication recovery process itself remains in the order of seconds, even for more than 2500 processes.

Abstract

In den letzten zehn Jahren wurde das kontinuierliche Wachstum der Rechenleistung von Supercomputern hauptsächlich aufgrund der hohen Parallelität auf der Komponentenebene ermöglicht. Aufgrund dieser großen Anzahl an Komponenten sinkt die mittlere Ausfallzeit der gesamten Maschine jedoch drastisch und liegt derzeit in der Größenordnung von wenigen Stunden bei den großen Supercomputern in der Top500-Liste. Dies hat die Forschung zur Fehlertoleranz im Bereich des High Performance Computing (HPC) beschleunigt, bei der viele Richtungen erforscht werden, um eine optimale Lösung zu finden. Das Hauptziel besteht darin, dass die Anwendungen einen Ausfall überleben und mit minimalem Aufwand wiederhergestellt werden können.

In dieser Dissertation befassen wir uns mit dem Fehlertoleranzproblem aus zwei Richtungen, nämlich den Datenwiederherstellungs- und Prozesswiederherstellungsmechanismen nach Prozessausfällen. Beide dieser Ansätze ergänzen sich gegenseitig, um eine umfassende Lösung für die Entwicklung fehlertoleranter Anwendungen zu ermöglichen.

Für die Datenwiederherstellung verwenden wir den klassischen Checkpoint/Restart Ansatz auf Anwendungsebene (ALCR), da er von Natur aus das Potenzial hat, die Größe der Checkpoint-Daten auf ein Minimum zu reduzieren. Darüber hinaus untersuchen, analysieren und implementieren wir verschiedene Optimierungstechniken, die die Auswirkungen des Overheads auf die Laufzeit der Anwendung weiter minimieren. Für die Prozesswiederherstellung verlassen wir uns auf die Bibliotheken, die die Möglichkeit bieten, eine parallele Programmausführung trotz ausgefallener Prozesse fortzusetzen. In diesem Zusammenhang untersuchten wir zunächst die Kommunikationsbibliothek GASPI, die diese grundlegende fehlertolerante Kommunikationsfunktionalität auf der Grundlage des Timeout-Ansatzes bietet. Mit GASPI haben wir ein Bibliothekstool entwickelt, das die Möglichkeit bietet, Fehlertoleranz auf vereinfachte Weise in Anwendungen zu integrieren. In diesem Tool wird der Kommunikator von einem Lebensüberwachungsprozess beobachtet, der die Gesundheitsprüfung und Fehlerbehebungsvorgänge für alle anderen Prozesse verwaltet. Die ausgefallenen Prozesse werden aus einem Pool von Ersatzprozessen ersetzt, die mit der Anwendung gestartet werden, aber im Leerlauf bleiben, bis sie benötigt werden. Für die Datenwiederherstellung nach dem Ersetzen von Prozessen ist ein separates Bibliotheksmodul implementiert, das die ALCR-Funktionalität zur Erstellung von Checkpoints von GASPI-basierten Anwendungen auf Knotenebene in einer fehleranfälligen Umgebung ermöglicht. Wir haben diese Tools dann in verschiedenen Anwendungen in großem Umfang zum Testing und Benchmarking eingesetzt.

Da die MPI-Kommunikationsbibliothek der De-facto-Standard für parallele Umgebungen ist, haben wir eine Bibliothek (CRAFT) entwickelt, die die ALCR-Funktionalität und Fehlertoleranz auf Prozessebene für MPI-basierte Anwendungen bietet. Dabei haben wir uns auch stark auf die Benutzerfreundlichkeit der ALCR-Funktionalität konzentriert, sodass für ihre Integration nur minimale Codeänderungen in der Anwendung erforderlich sind. Die grundlegenden und am häufigsten verwendeten Checkpoint-Datentypen können sofort verwendet werden, ohne dass IO-Routinen in der Anwendung geschrieben werden müssen. Die Bibliothek bietet die Checkpoint-IO Möglichkeit in mehreren Formaten und ist mit einem einfacheren Erweiterungsmechanismus für die benutzerdefinierten Datentypen ausgestattet. Um den Overhead zu reduzieren, bietet die Bibliothek einen eingebauten asynchronen Checkpointing-Mechanismus und unterstützt die SCR-Bibliothek (Scalable Checkpoint/Restart) für Checkpointing auf Knotenebene.

Für die Fehlertoleranz auf Prozessebene verwendet CRAFT ULFM-MPI (eine prototypische fehlertolerante MPI-Implementierung), verbirgt aber die komplizierten Details der Kommunikationswiederherstellung hinter einer einfacheren API. Der Benutzer kann je nach Anwendung zwischen einer verkleinerten oder einer nicht-verkleinerten Wiederherstellung des Kommunikators wählen. Anschließend werden die Anwendungen aus verschiedenen wissenschaftlichen Bereichen verwendet, um die Verwendung von CRAFT zu demonstrieren und seine Overheads in großem Maßstab zu testen. Die Ergebnisse zeigen, dass die Checkpoint-Optimierungen wie asynchrones Checkpointing, oder Checkpointing auf Knotenebene den Laufzeit-Overhead in einen akzeptablen Bereich bringen. Darüber hinaus bleibt der Aufwand für die Kommunikationswiederherstellung in der Größenordnung von Sekunden, selbst bei mehr als 2500 Prozessen.

DOI
Faculties & Collections
Zugehörige ORCIDs