MPI-3 is the de-facto standard for programming scientific applications in distributed memory machines. It provides two approaches to communicate shared data. Traditional two-sided communication requires active participation of both the sender and receiver for semantic message matching. In contrast, with one-sided communication a sender (origin) can operate on globally shared data using remote memory access (RMA) operations without active involvement of the receiving (target) process. As a result, one-sided communication decouples communication and synchronization. This model simplifies programming of irregular applications (e.g., graph processing) and enables data-centric programming abstractions like the partitioned global address space model (PGAS).
However, the shared memory like abstraction poses some challenges with respect to memory consistency. Since any process can write on globally shared data it requires proper synchronization to prevent data races. More specifically, if two access happen concurrently to an identical address and at least one these accesses is a write the program is malformed. In MPI-3 RMA a single operation may conflict with either
The first case where two RMA operations may conflict with each other has already been address with NastyMPI. This thesis complements prior work and addresses the second case. It requires to intercept any native memory access to detect memory inconsistencies. Intel provides a tool called PIN which may be used to track native memory accesses. Relevant information needs to be collected and checked against potentially overlapping RMA operations. Using this approach we can detect memory inconsistencies between native memory access and MPI-3 RMA operations. The result will be integrated into the test suite of DASH.
Prof. Dr. D. Kranzlmüller
Dauer der Arbeit:
Anzahl Bearbeiter: 1