[論文レビュー] Support for Debugging Automatically Parallelized Programs
この論文では、相対的デバッグを用いてシリアル実行と並列実行を比較することで、自動並列化されたプログラムにおけるエラーを簡素化して特定するデバッグシステムを提示している。並列化ツールからのメタデータと動的インストルメンテーションを活用することで、ユーザーの作業負荷を最小限に抑え、細粒度での不一致の検出を実現し、デバッグのオーバーヘッドを顕著に低減するとともに、並列化に起因する障害を特定する。
We describe a system that simplifies the process of debugging programs produced by computer-aided parallelization tools. The system uses relative debugging techniques to compare serial and parallel executions in order to show where the computations begin to differ. If the original serial code is correct, errors due to parallelization will be isolated by the comparison. One of the primary goals of the system is to minimize the effort required of the user. To that end, the debugging system uses information produced by the parallelization tool to drive the comparison process. In particular, the debugging system relies on the parallelization tool to provide information about where variables may have been modified and how arrays are distributed across multiple processes. User effort is also reduced through the use of dynamic instrumentation. This allows us to modify the program execution without changing the way the user builds the executable. The use of dynamic instrumentation also permits us to compare the executions in a fine-grained fashion and only involve the debugger when a difference has been detected. This reduces the overhead of executing instrumentation.
研究の動機と目的
- 自動並列化ツールによって生成されたプログラムのデバッグに要する複雑さと作業負荷を低減すること。
- シリアル実行と並列実行を比較することで、自動並列化中に導入された障害を特定すること。
- 並列化ツールからのメタデータと動的インストルメンテーションを活用することで、ユーザーの関与を最小限に抑えること。
- 差異が検出された場合にのみ、実行の細粒度比較を実行することで、ランタイムオーバーヘッドを低減すること。
提案手法
- システムは、プログラムのシリアル版と並列版の実行トレースを比較する相対的デバッグを用いる。
- 並列化ツールからのメタデータに依存して、変更された変数やプロセス間での配列の分布を特定する。
- 再コンパイルなしでプログラムの振る舞いを変更できる動的インストルメンテーションを採用し、ランタイムでの比較を可能にする。
- 実行間に差異が検出された場合にのみデバッガを起動することで、オーバーヘッドを低減する。
- 変数の状態や制御フローにおける差異に焦点を当て、細粒度レベルでの実行比較を実施する。
- 既存のコンパイルおよびデバッグツールと統合することで、使いやすさとツールチェーンの互換性を維持する。
実験結果
リサーチクエスチョン
- RQ1自動並列化されたプログラムのデバッグ作業を、正確な障害特定を保証しつつ、どのようにして最小限にできるか?
- RQ2並列化ツールからのメタデータがデバッグプロセスをどのように支援できるか?
- RQ3動的インストルメンテーションは、シリアル実行と並列実行の間で効率的かつ細粒度の高い比較をどのように支援できるか?
- RQ4従来のデバッグと比較して、相対的デバッグは並列化に起因するエラーの特定をどのように改善するか?
- RQ5差異が生じる実行ポイントにのみデバッガの関与を制限することで、インストルメンテーションのオーバーヘッドを低減できるか?
主な発見
- 元のシリアルコードが正しいものと仮定した場合、システムはシリアル実行と並列実行の比較により、並列化に起因する障害を正常に特定した。
- 並列化ツールからのメタデータの活用により、デバッグ中に手動でのユーザー入力を著しく削減できた。
- 動的インストルメンテーションにより、実行可能ファイルへの非侵襲的変更が可能となり、ユーザーのビルドプロセスが保持された。
- 実際の差異が検出された時点でのみデバッガの関与を延期することで、デバッグのオーバーヘッドが低減した。
- 細粒度の比較により、差異の発生ポイントを正確に特定でき、障害診断の効率が向上した。
- AADEBUG 2000ワークショップでの検証を通じて、実世界のデバッグ環境でも実用的であることが示された。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。