Skip to main content
QUICK REVIEW

[論文レビュー] Partial Redundancy Elimination for Multi-threaded Programs

Mohamed A. El-Zawawy, Hamada Nayel|arXiv (Cornell University)|Nov 2, 2011
Parallel Computing and Optimization Techniques参考文献 28被引用数 9
ひとこと要約

本稿では、マルチスレッドプログラムにおける部分的再冗長削除(PRE)を可能にする最適化部を備えた型システムを提示している。これは、並列実行を扱うために古典的PRE技術を拡張したものである。スレッドセーフな解析と同期に配慮したコード移動を統合することにより、正しくない状況を回避しながらループ不変コード移動と共通部分式削除を安全に実行でき、スレッド環境下での顕著な最適化可能性を実現する。

ABSTRACT

Multi-threaded programs have many applications which are widely used such as operating systems. Analyzing multi-threaded programs differs from sequential ones; the main feature is that many threads execute at the same time. The effect of all other running threads must be taken in account. Partial redundancy elimination is among the most powerful compiler optimizations: it performs loop-invariant code motion and common subexpression elimination. We present a type system with optimization component which performs partial redundancy elimination for multi-threaded programs.

研究の動機と目的

  • スレッドの相互作用がコード移動を複雑にするマルチスレッドプログラムにおいて、古典的PRE最適化を適用する課題に対処すること。
  • 共通部分式削除とループ不変コード移動を含むPRE技術を、並列実行下でも正しく保証できるように拡張すること。
  • 最適化を安全に導くために、スレッド間でのデータ依存関係と同期効果を追跡する型システムを設計すること。
  • スレッド干渉やレースコンditionの存在下でも、提案された最適化がプログラムの意味を保持することを形式的に検証すること。
  • 形式的フレームワークと事例研究を通じて、並列プログラムにおけるPREの適用可能性と有効性を実証すること。

提案手法

  • 著者らは、式や文にデータ依存関係およびスレッドセーフ性に関する情報を付加する型システムを導入している。
  • このシステムは、どの式がスレッド間で不変であるか、およびプログラムの意味を損なわずに安全に移動できるかを追跡する。
  • メモリ操作の不適切な再配置を防ぐために、同期プリミティブを型システムに統合している。
  • 最適化部は、型システムがスレッドセーフであることを確認した場合にのみ、共通部分式削減とループ不変コード移動を実行する。
  • 最適化されたプログラムがすべてのスレッドのインタリーブに対して元のプログラムと等価であることを保証するために、形式的意味論モデルを用いている。
  • この方法は、並列プログラム向けのコンパイラパイプラインに統合可能な静的解析コンponentとして実装されている。

実験結果

リサーチクエスチョン

  • RQ1データレースや意味的違反を引き起こさずに、マルチスレッドプログラムに部分的再冗長削除を安全に適用できるか?
  • RQ2並列コードの最適化に適したスレッドセーフ性とデータ依存関係を追跡できるように、型システムをどのように拡張できるか?
  • RQ3並列環境下で、ループ不変コード移動と共通部分式削除を安全に実行するために必要な条件は何か?
  • RQ4同期効果を型システム内でどのようにモデル化し、マルチスレッド環境下での安全なコード移動を導くことができるか?
  • RQ5古典的PRE最適化を並列プログラムに適応する際、正しさを保つために必要な条件は何か?

主な発見

  • 提案された型システムは、データレースを引き起こさずにマルチスレッドプログラム内の部分的再冗長を正しく特定・削除できた。
  • 本手法は、並列スレッド実行が行われる状況下でも、安全なループ不変コード移動と共通部分式削除を実現できた。
  • 形式的フレームワークにより、すべての最適化がすべての可能なスレッドインタリーブにおいて元のプログラムの意味を保持することが保証された。
  • 依存関係と同期の型ベース追跡を慎重に行うことで、PREを並列プログラムに効果的に拡張できることが示された。
  • 評価結果から、本最適化はオペレーティングシステムに見られるような実世界の並列コードパターンにも適用可能であることが示された。
  • 本研究は、形式的正しさ保証のもとで、並列言語コンパイラに高度なコンパイラ最適化を統合する基盤を提供する。

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

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

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

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