手続き間自動並列化コンパイラWPP
佐藤真琴,青木雄一郎,和田清美,飯塚孝好,菊池純男 RWCPマルチプロセッサコンピューテイング日立研究所 {msatoh,
yu-aoki, kiyomi, iitsuka, kikuchi}@sdl.hitachi.co.jp
1.はじめに
我々は、共有メモリ型並列計算機向けの自動並列化コンパイラWPP (whole program parallelizer)
を開発している。これは、Fortran77逐次プログラムを手続き境界を越えて解析し、手続き呼出しを含むループを並列化できる。今回、我々は、WPPに
0penMPプログラム自動生成機能を追加した。これにより、WPPによる並列化結果が様々なハードウエア・プラットフオーム上で実行可能となった。また、日立コンパイラのバックエンドとの接続により日立SR8000ネイティブコードも生成可能である。
図1:WPPの構成
2.WPPの解析と並列化様能
WPP(図1)は以下の3フェーズから構成される。即ち、IP(手続き間)スカラ解析、IP配列解析、IP
並列化である。WPPはまた、コールグラフ等を作成する共通フレームワークも持つ。
(1)IPスカラ解析
IPスカラ解析は、各手続き中での変数の読み書きの様子を要約した集合を決定し、手続きクローニングと手続き間定数伝播によってプログラムを簡単化する。その結果、次のIP配列解析の精度が向上する。
(2)IP配列解析
IP配列解析は、各ループや手続き中で、各配列とそのリージョン(配列添字の集合)から成る集合を計算する。各集合は配列の読み書きの様子を要約した集合である。リージョン表現にはストライドや三角形のような複雑なリージョンを表現可能な連立線形不等式を用いる。
(3)IP並列化
IP並列化は、上記2つの解析で得られた情報を用いて、手続き呼出しを含むループを並列化する。また、IP変数プライベートイヒやIP並列リダクションのような、並列ループ数を増加させるいくつかの手法をループに適用する。
3.0penMPプログラム生成
OpenMPプログラム生成部は、コンパイラの解析情報から0penMP指示文の中間語を作成し、これらを含む全中間語を0penMPプログラムに変換する。
4.評価
2つのベンチマークプログラムからWPPが生成した0penMPプログラムをSGI TM "0rigin TM
2000上で実行し、ほぼリニアな性能向上を得た(図2)。日立SR8000でのネイティブコードの実行結果も同様であった。
5.おわりに
手続き問自動並列化コンパイラWPPに対して、 0penMPプログラム生成機能を追加した。EP、turb3d に対いまぼりニアな性能向上を得た。
SG1はSilicon Graphics,lnc.の商標です。 0rigin*2000はSillconvGraphics,lnc.の商標です。
|