Table of Contents
Fetching ...

Distributed Order Recording Techniques for Efficient Record-and-Replay of Multi-threaded Programs

Xiang Fu, Shiman Meng, Weiping Zhang, Luanzheng Guo, Kento Sato, Dong H. Ahn, Ignacio Laguna, Gregory L. Lee, Martin Schulz

TL;DR

This paper proposes two novel techniques that use Distributed Clock and Distributed Epoch recording schemes to eliminate excessive thread synchronization for OpenMP record and replay and integrates ReOMP into ReMPI, an existing scalable MPI record-and-replay tool, with only a small MPI-scale-independent runtime overhead.

Abstract

After all these years and all these other shared memory programming frameworks, OpenMP is still the most popular one. However, its greater levels of non-deterministic execution makes debugging and testing more challenging. The ability to record and deterministically replay the program execution is key to address this challenge. However, scalably replaying OpenMP programs is still an unresolved problem. In this paper, we propose two novel techniques that use Distributed Clock (DC) and Distributed Epoch (DE) recording schemes to eliminate excessive thread synchronization for OpenMP record and replay. Our evaluation on representative HPC applications with ReOMP, which we used to realize DC and DE recording, shows that our approach is 2-5x more efficient than traditional approaches that synchronize on every shared-memory access. Furthermore, we demonstrate that our approach can be easily combined with MPI-level replay tools to replay non-trivial MPI+OpenMP applications. We achieve this by integrating \toolname into ReMPI, an existing scalable MPI record-and-replay tool, with only a small MPI-scale-independent runtime overhead.

Distributed Order Recording Techniques for Efficient Record-and-Replay of Multi-threaded Programs

TL;DR

This paper proposes two novel techniques that use Distributed Clock and Distributed Epoch recording schemes to eliminate excessive thread synchronization for OpenMP record and replay and integrates ReOMP into ReMPI, an existing scalable MPI record-and-replay tool, with only a small MPI-scale-independent runtime overhead.

Abstract

After all these years and all these other shared memory programming frameworks, OpenMP is still the most popular one. However, its greater levels of non-deterministic execution makes debugging and testing more challenging. The ability to record and deterministically replay the program execution is key to address this challenge. However, scalably replaying OpenMP programs is still an unresolved problem. In this paper, we propose two novel techniques that use Distributed Clock (DC) and Distributed Epoch (DE) recording schemes to eliminate excessive thread synchronization for OpenMP record and replay. Our evaluation on representative HPC applications with ReOMP, which we used to realize DC and DE recording, shows that our approach is 2-5x more efficient than traditional approaches that synchronize on every shared-memory access. Furthermore, we demonstrate that our approach can be easily combined with MPI-level replay tools to replay non-trivial MPI+OpenMP applications. We achieve this by integrating \toolname into ReMPI, an existing scalable MPI record-and-replay tool, with only a small MPI-scale-independent runtime overhead.
Paper Structure (23 sections, 7 figures, 4 tables)

This paper contains 23 sections, 7 figures, 4 tables.

Figures (7)

  • Figure 1: The $\tt{gate\_in/out}$ functions
  • Figure 2: Design overview
  • Figure 3: ST and DC recording
  • Figure 4: ST record-and-replay
  • Figure 5: DC ($\tt{X}$=0) and DE ($\tt{X}$=$X_C$) record-and-replay
  • ...and 2 more figures