コンパイラによる多レベル並列度抽出のアプローチ
安里 彰 山中 栄次 小沢 年弘 木村
康則 マルチブロセッサコンピューティング富士通研究室 asato@flab.fujitsu.co.jp,
yamanaka@lp.nm.fujitsu.co.jp ozawa@flab. fujitsu. co.jp, ykimura@flab.
fujitsu. co.jp
1.はじめに
我々の研究至では、プログラムの並列度を最大限に抽出可能なコンパイラ開発を目標に、粗粒度並列と細粒度並列の両面から研究を行っている。前者については分散メモリ型マルチブロセッサ
(DMP)向けのOpenMP[1]
APIの拡張を進めている。これは、スレッドやデータとプロセッサの対応関係を陽に記述して、効率良い並列処理を目指すアプローチである。一方、後者については、predicate
命令[2]を有するVLIWプロセッサ用のコンパイラ開発を通じて、命令レベル並列度の向上を目指している。本シンポジウムでは、これら両者の研究の概要を紹介する。
2.OpenMPのDMP向けの拡張
(1)Processor groupと Index distribution
本拡張の中心的な概念に、Processor gmupと Index distributionがある。前者はプログラム
実行やデータ割付の対象となるプロセッサ群を抽象化したもの、後者はそれらの間の対応関係を示 すものである。これらは今回新たに追加した
directiveによって宣言することができる。
(2)データとループの分剖
上記の概念を用いると、ソースプログラム上で配列データやループの分割と各プロセッサへの割付けを明示的に記述できる。図1に例を示す。
3.Predicate命令によるILPの向上
(1)Predicate命令
命令レベル並列度の向上を狙うアプローチの一つにPredicate命分がある。Predicate命令の導入により、従来は条件分岐命令を挟んで複数の基本ブロックに分かれていた命令群を同一基本ブロックに置くことが可能になり、プログラムを効率良く実行できる。
(2)コンパイラの試作
我々はPredicate命令を含む最適なコードを生成するコンパイラを試作した。ターゲットはSPARC
に似た命令セットを持つ4並列VLIWプロセッサを想定した。Predicate命令を扱う場合、レジス夕の生存期間の解析が複雑になるので、従来のコンパイラとは異なる機能が必要になる。我々は、レジス夕割り当てに先立って仮スケジューリングを行い、必要な情報を集めるアプローチを採った。図2に処理の流れを示す。
Preference
[1] OpenMP Architecture Review Board, "OpenMP Fortran Application Program
Interface Version 1.0", October, 1997.
[2] Scott A.Mahlke, et al. "A Comparison of Full and Partial Predicated
Execution Support for ILP Processors",22th ISCA, June, 1995.
|