Skip to main content
QUICK REVIEW

[論文レビュー] Profiling parallel Mercury programs with ThreadScope

Paul Bone, Zoltán Somogyi|arXiv (Cornell University)|Sep 7, 2011
Parallel Computing and Optimization Techniques参考文献 10被引用数 3
ひとこと要約

この論文では、並列Haskellプログラムを対象として開発されたThreadScopeプロファイラを、並列Mercuryプログラムに適応する手法を提案している。著者たちは、コールシーケンスカウント(CSCs)、ガベージコレクション(GC)統計、タスクレベルのパフォーマンスデータといったMercury固有のメトリクスをThreadScopeに拡張することで、並列実行の挙動を詳細に可視化・分析することが可能となり、アプリケーション開発者、ランタイムシステム実装者、自動並列化ツールの研究者を支援する。

ABSTRACT

The behavior of parallel programs is even harder to understand than the behavior of sequential programs. Parallel programs may suffer from any of the performance problems affecting sequential programs, as well as from several problems unique to parallel systems. Many of these problems are quite hard (or even practically impossible) to diagnose without help from specialized tools. We present a proposal for a tool for profiling the parallel execution of Mercury programs, a proposal whose implementation we have already started. This tool is an adaptation and extension of the ThreadScope profiler that was first built to help programmers visualize the execution of parallel Haskell programs.

研究の動機と目的

  • 並列化特有の問題(タスクのオーバーヘッドやロードバランシングの不均衡など)が深刻化するため、並列Mercuryプログラムにおけるパフォーマンスボトルネックの診断が困難であるという課題に対処すること。
  • 視覚的・メトリクスベースのプロファイリングを通じて、アプリケーションプログラマーが自身の並列Mercuryプログラムの挙動を理解し最適化できるようにすること。
  • ランタイムシステム実装者が、ワーカースレッドの応答性やキャッシュの局所性といった低レベルの挙動を測定・改善できるようにすること。
  • 自動並列化ツール開発者が、実プログラム実行からの正確で測定可能なパフォーマンスデータを提供されることで、コスト・ベネフィットヒューリスティクスのキャリブレーションが可能になるようにすること。

提案手法

  • コールシーケンスカウント(CSCs)、ガベージコレクション(GC)統計、マットレータ時間とGC時間の比率といった、Mercury固有の実行メトリクスを収集できるように、ThreadScopeプロファイラを拡張すること。
  • 並列コンジュンクションとその個々のコンジュンクトを色分けされたタイムラインで表示できるように、ThreadScopeの可視化フレームワークを変更すること。CPU使用率とタスクのライフタイムを可視化する。
  • ユーザーがイベントにマウスオーバーして、NANOSECS_PER_CALL、GC_STATS、MUTATOR_VS_GC_TIME といった動的メトリクスを照会できるインタラクティブなGUI機能を追加すること。
  • すべての動的並列コンジュンクションの出現を一覧表示し、それらのタイムライン表現にナビゲートできる機能を実装すること。
  • 自動並列化ツールのチューニングに使用可能な、すべての関連メトリクスを含む機械可読形式の出力フォーマットを設計すること。
  • Mercuryのランタイムセマンティクスに適合しつつ、拡張性と互換性を保ちながら開発の負荷を最小限に抑えるために、既存のThreadScopeインfraを活用すること。

実験結果

リサーチクエスチョン

  • RQ1関数型言語向けに開発された既存のプロファイリングツールは、Mercuryのような論理プログラミング言語の特異な実行モデルをどのように適応してサポートできるか?
  • RQ2従属AND並列論理プログラムにおける問題の診断に最も価値のあるパフォーマンスメトリクスは何か?
  • RQ3ThreadScopeの可視化およびメトリクス収集機能は、Mercuryの並列コンジュンクションやタスクスケジューリングの動的挙動をサポートできるように拡張可能か?
  • RQ4プロファイリングデータは、論理プログラミングにおける自動並列化ヒューリスティクスの正確性を向上させるためにどのように活用できるか?
  • RQ5プロファイル実行から得られる、ワーカースレッドの応答性やキャッシュ局所性といったランタイムシステム挙動のインサイトは何か?

主な発見

  • Mercury向けにThreadScopeを適応することで、CPU使用率、タスク生成、ブロッキング挙動を反映したタイムラインを用いた並列実行の可視化が可能になった。これはHaskellでの利用と同様のものである。
  • NANOSECS_PER_CALL、GC_STATS、MUTATOR_VS_GC_TIME といった重要なパフォーマンスメトリクスが正常に収集・公開されており、パフォーマンスチューニングに不可欠である。
  • インタラクティブなGUI機能により、個々の並列コンジュンクションやそのコンジュンクトレベルで動的メトリクスを照会できるため、細粒度の分析が可能になった。
  • すべての関連パフォーマンスメトリクスを含む機械可読形式の出力ファイルの生成をサポートしており、自動並列化ツールのキャリブレーションとの統合が可能になった。
  • ワークショップ開催時点では、提案されたメトリクスの少なくとも1/3が実装済みであり、年内中に完全なサポートが得られると予想されている。
  • 既存で実績のあるプロファイリングインfraを活用することで、複雑な並列システム向けのドメイン特化パフォーマンス分析ツールを構築するコストを顕著に削減できることが、本手法によって示された。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。