Author: Roger Kowalewski Title: Nasty-MPI: A Systematic Stress Testing Approach for Correctness Debugging in MPI-3 RMA Abstract: The Message Passing Interface (MPI) as the de-facto standard for developing High Performance Computing (HPC) applications provides two communication models. The traditional one is two-sided communication, where MPI processes share data with point-to-point messages or collective operations and are implicitly synchronized by message matching. In contrast, the one-sided model defines an interface for Remote Memory Access (RMA), allowing one process to specify all communication parameters for both the sending and receiving side. One-sided communication semantically decouples data movement and synchronization by providing support for asynchronous reads and updates of distributed shared memory. While such an interface can be extremely efficient, it poses several challenges. Improper synchronization of possibly conflicting asynchronous memory accesses to shared data may result in errors, such as data races or ordering violations. Due to the ever increasing scale of applications and machines, such synchronization errors are hard to debug and cannot always be easily reproduced. This master thesis presents Nasty-MPI, a new tool that supports developers in verifying the correctness of their MPI-3 RMA programs. The tool can be attached to any MPI program without code modification. It dynamically intercepts and transforms RMA operations into different executions which are still valid in terms of the MPI standard. Given an application with a latent synchronization error, Nasty-MPI will force a manifestation of the error that can easily be detected with the help of program invariants (e.g., assert statements). An experimental evaluation shows that the tool can detect synchronization errors in even simple configurations which would otherwise only shown in much more complex scenarios.