FITL: Extending LLVM for the Translation of Fault-injection Directives

TitleFITL: Extending LLVM for the Translation of Fault-injection Directives
Publication TypeConference Paper
Year of Publication2015
AuthorsDenny, Joel E., Lee Seyong, and Vetter Jeffrey S.
Conference NameProceedings of the Second Workshop on the LLVM Compiler Infrastructure in HPC
Conference LocationAustin, TX, USA
ISBN Number978-1-4503-4005-2
KeywordsC pragma, compiler intermediate representation, directive-based programming, fault injection, LLVM, OpenARC, resiliency

The frequency of hardware errors in HPC systems continues to grow as system designs evolve toward exascale. Tolerating these errors efficiently and effectively will require software-based resilience solutions. With this requirement in mind, recent research has increasingly employed LLVM-based tools to simulate transient hardware faults in order to study the resilience characteristics of specific applications. However, such tools require researchers to configure their experiments at the level of the LLVM intermediate representation (LLVM IR) rather than at the source level of the applications under study. In this paper, we present FITL (Fault-Injection Toolkit for LLVM), a set of LLVM extensions to which it is straightforward to translate source-level pragmas that specify fault injection. While we have designed FITL not to be tied to any particular compiler front end or high-level language, we also describe how we have extended our OpenARC compiler to translate a novel set of fault-injection pragmas for C to FITL. Finally, we present several resilience studies we have conducted using FITL, including a comparison with a source-level fault injector we have built as part of OpenARC.