[論文レビュー] Distributed Order Recording Techniques for Efficient Record-and-Replay of Multi-threaded Programs
本論文は Distributed Clock (DC) および Distributed Epoch (DE) 記録を提案し、同期および I/O のオーバーヘッドを低減することで OpenMP プログラムの効率的な記録と再現を実現。HPC ベンチマークで再現速度を最大 5.6 倍、記録オーバーヘッドを最大 29%低減する事例を示し、MPI+OpenMP ワークロードに対して ReMPI との統合も実現。
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 oolname into ReMPI, an existing scalable MPI record-and-replay tool, with only a small MPI-scale-independent runtime overhead.
研究の動機と目的
- ハイブリッド MPI+OpenMP HPC アプリケーションにおける非決定性がデバッグとテストを複雑にすることへの対応。
- 共有メモリアクセスの記録・再現時のオーバーヘッドを削減しつつ、再現の正確性を損なわないこと。
- スケーラブルな技術の開発:スレッドごとの記録をグローバル同期から切り離し、並列 I/O を実現すること。
- 既存の MPI 記録・再現ツール(ReMPI)と統合し、実際の HPC ワークロードでの適用性と実用性を示すこと。
提案手法
- 記録/再現時のアクセス順序を捉えるため、ゲート入力/gate_out を用いて共有メモリ領域を計装する。
- スレッドID の直列化記録を置換して、各スレッドの時計ファイルを用いてスレッドが共有メモリ領域に入る時刻を記録する。
- DE 記録を導入して、定義された並列条件下で命令を epoch に grouping することで同時実行を許容し、直列化を削減する。
- 条件 1 を定義して、ロード/ストアの特定の再順序を許容することで、再現の正確性を保ちながら一部の再並べ替えを許容する。
- 時計値とメモリ履歴から epoch を計算し、ロード/ストアの列を並列再現できるようにしつつ正確性を維持する。
- ReOMP を OpenMP に特化した記録・再現ツールとして実装;Clang/LLVM を介して OpenMP 構造を計装し、gate_in/out の処理のために libreomp.so と統合する。

実験結果
リサーチクエスチョン
- RQ1OpenMP プログラムの記録・再現時に共有メモリアクセスのオーバーヘッドをどのように削減できるか?
- RQ2再現において直列化と同期を緩和しても、決定性と正確性を一般的な OpenMP パターンで損なわないか?
- RQ3従来のスレッドID 直列化記録と比較して、DC / DE アプローチの性能利得はどの程度か?
- RQ4DC/DE 手法は MPI レベルの再現ツールとどの程度統合され、MPI+OpenMP ワークロードをどの程度サポートできるか?
主な発見
- DC/DE 記録は、直列化されたスレッドID 記録と比較して I/O およびスレッド間同期オーバーヘッドを大幅に低減する。
- DE 記録により 条件 1 の下で特定のロード/ストアの同時実行が可能となり、再現オーバーヘッドを削減する。
- 実験で、記録実行時に最大 29% のオーバーヘッド削減と、112 スレッドの実際の HPC アプリケーション(HACC)で約 5.6 倍の再現スピードアップを示す。
- ST 記録は、特に NUMA ドメイン間でスレッド数が増えるにつれて、再現時のスレッド間通信が多くなる。
- DC 記録は並列 I/O および I/O と計算の重なりを可能にし、多くのケースで ST よりスループットを向上させる。
- DE 記録は、データ競合が起こりやすい・緩和的データ競合状況においても epoch レベルの並列性を許容することで再現性能を追加的に向上させる。

より良い研究を、今すぐ始めましょう
論文設計から論文執筆まで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。