We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

MUST: Compiler-aided MPI correctness checking with TypeART

Formale Metadaten

Titel
MUST: Compiler-aided MPI correctness checking with TypeART
Serientitel
Anzahl der Teile
542
Autor
Mitwirkende
Lizenz
CC-Namensnennung 2.0 Belgien:
Sie dürfen das Werk bzw. den Inhalt zu jedem legalen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen.
Identifikatoren
Herausgeber
Erscheinungsjahr
Sprache

Inhaltliche Metadaten

Fachgebiet
Genre
Abstract
In the context of MPI (Message Passing Interface), our talk presents a long-standing collaboration between RWTH Aachen and TU Darmstadt to further extend the MPI correctness checker tool MUST with memory allocation checking capabilities in the context of MPI (communication) calls for C/C++ target programs. To that end, we developed the LLVM compiler plugin TypeART. Both tools are open source and available under the BSD 3-clause license, see https://itc.rwth-aachen.de/must/ and https://github.com/tudasc/TypeART. In general, MUST’s correctness checking includes errors that already manifest - segmentation faults or incorrect results - and many errors that are invisible to the developer or only manifest with certain HPC systems and MPI libraries. MUST works by intercepting MPI calls of a target application at runtime, allowing for bookkeeping of the current program state. Thus, MUST can cope with the complex MPI semantics of, e.g., (a) collectives, (b) wildcards, or (c) datatypes. As a consequence of relying on intercepting MPI calls, though, MUST is unaware of the effective type of the allocated void* buffers used for the low-level MPI API. To that end, TypeART was developed to track memory (de-) allocation relevant to MPI communication. TypeART instruments heap, stack and global variable allocations with a callback to our runtime. The callback consists of (a) the memory address, (b) the type-layout information of the allocation (built-ins, user-defined structs etc.) and (c) number of elements. Thus, with TypeART, MUST can check for type compatibility between the type- less MPI communication buffer and the declared MPI datatype. Our tools also handle derived datatypes with complex underlying C/C++ data structures.