本節では、21世紀のHPC技術の発展に向けた自動並列化コンパイラ研究開発の重要性を述べ、国内の研究開発状況を海外との比較をまじえながら外観し国内の並列化コンパイラの製品化が遅れていることを示し、今後の対処策について論じる。
また、具体的に、現在直面しているコンパイラによる命令レベル並列性、ループ並列性の抽出の限界を打ち破るために、複数の粒度の並列性を使用することによりプログラム全域の並列性抽出を可能とするマルチグレイン並列化が重要であることを述べる。
さらに、他の重要な研究課題として、データのローカルメモリあるいは分散共有メモリへの自動分散(データローカライゼーション)、データ転送と処理のオーバーラッピングスケジューリング、コンパイラによるキャッシュ制御などについて述べる。
最後に、将来の実効性能が高く、使い易いHPC(スーパーコンピュータ、シングルチップマルチプロセッサを含む)を開発するためには、コンパイラによる並列化を支援するアーキテクチャが不可欠で、ソフト・ハードの協調設計が重要であることを述べる。
現在日本のスーパーコンピュータ業界は世界トップのハードウェア技術をもっており、現時点でピーク性能は1Tflopsを越え、21世紀初頭には数10Tflops以上のピーク性能をもつマシンが開発されると予想される。
しかし、現在のスーパーコンピュータは、ピーク性能の向上と共に実際にプログラムを実行したときの真の性能(実効性能)との差が大きくなっている、すなわちコストパフォーマンスに問題が生じている。また、使い勝手的にも、ユーザが問題中の並列性を抽出し、HPF、MPI、PVMなどの拡張言語、ライブラリを使用して、ハードウェアを効果的に使えるプログラムを作成しなければならず、一般のユーザには使いにくい、あるいは使いこなせないという問題がある。これらの問題にも関連し、世界のHPCマーケットを拡大できないという問題が生じている。
これらのコストパフォーマンス、使いやすさの問題を解決し、スーパーコンピュータのマーケットを拡大するためには、ユーザが使い慣れているFortran等の逐次型言語で書かれたプログラムから並列性を自動的に抽出し、ハードウェアを有効に動作させるようにスケジューリングする並列化コンパイラの開発が重要となる。
一方、汎用マイクロプロセッサの分野では、我が国の産業界は世界最高レベルとは言い難い状況にあることが認識されている。しかし、従来我が国の電子産業を支える一つの柱となっていたDRAM製造による利益確保が将来的に困難と予想される状況では、より付加価値の高い汎用マイクロプロセッサの開発が重要であると思われる。
その際、海外企業が大きなシェアをもち、さらに命令レベルの並列性の限界から将来的な実効性能の向上が難しいと予測されるスーパースカラやVLIWではなく、21世紀初頭の有力なアーキテクチャの一つとなると考えられるシングルチップマルチプロセッサについて検討を行うことは我が国産業界がこの分野で一定のシェアを獲得するために重要と考えられる。また、このようなシングルチップマルチプロセッサに関する検討は、上述のHPCの価格性能比向上に対しても重要な役割を果たすものと思われる。
ただ、このようなシングルチップマルチプロセッサの研究開発を行う際にも、単に従来の主記憶共有メモリアーキテクチャで、プロセッサを集積しただけでは、世界に対する国産プロセッサの優位性は得られない。アーキテクチャの独自性、高性能、低価格を達成するためには、プログラム中の命令レベル並列性、ループ並列性、粗粒度並列性をフルに使用できるマルチグレイン並列処理のようなシステムの高性能化及び誰にでも使える自動並列化を可能とする新しい並列処理手法を実現するコンパイラ技術と、それを生かせるような、日本独自のアーキテクチャの開発が重要である。
このような汎用マイクロプロセッサの分野で、世界のシェアを獲得するには、近い将来にスーパースカラあるいはVLIWのように命令レベル並列処理の限界が顕著になり、他アーキテクチャへの移行が進むと考えられる21世紀初頭に向けて製品を開発するのが良いと思われる。また、このアーキテクチャ移行の時期にシェアを獲得しないと、その後のプロセッサでのシェアの獲得は非常に難しいものになると危惧される。
上述のように、HPC分野、マイクロプロセッサの将来を支えるためには、自動並列化コンパイラの研究開発が重要である。
この自動並列化コンパイラに関する世界の研究状況をみてみると、従来自動並列化コンパイラの研究は、米国イリノイ大を中心に行われてきた。イリノイ大は、1970年代前半のILLIAC IVの開発以来、並列処理コンピュータのキーテクノロジーとしてProf. David Kuck、 Prof. David Paduaを中心に研究を行い、
などを通じ、現在、世界の大学、SGI CRAY、IBM、Intel、HPを始め、PGI、KAIなどのベンチャーで活躍している優れた人材を世界に向けて輩出している。
また、その他では、Rice大、Vienna大と企業を中心としたHPFとそのコンパイラの開発を始めとし、Stanford大、Purdue大、California大、Maryland大、Ohio State大など、多くの大学でアクティブな研究がなされている。またヨーロッパも Delft大、GMD大、IRISA等 大学、国立研究所、企業で活発な研究が行われている。
これに対して、国内では従来より自動並列化コンパイラの研究をしており、実際に動作するコンパイラを開発しているのは京都大学、早稲田大学等少数の大学、一部のコンピュータ企業のみである。また、商用の自動並列化コンパイラを比較してみると、我が国の製品は、ベクトル化コンパイラでは世界をリードしていたものの、マルチプロセッサ用コンパイラでは米国に比べ5年以上の遅れがあるように見える。また、RISC系プロセッサ用コンパイラに関しても日本独自の並列化コンパイル技術は極めてわずかである。
また学会レベルの活動からみてみると、自動並列化コンパイラ及びコンパイラとアーキテクチャの関連が議論される著名な会議は、Int'l Conf. on Supercomputing,Int'l Conf. Parallel Processing, Supercomputing, ASPLOS, PPoPP 等である。しかし、この分野の研究者が最重要視している学会は、コンパイラ関係の著名な研究者のみ論文投稿及び出席を招待するアメリカ、ヨーロッパのクローズなワークショップである。これらのワークショップには米国を中心としたLCPC:Workshop on Languages and Compilers for Parallel Computers, ヨーロッパを中心としたCPC: Compilers for Parallel Computers)があり、約10年前から組織化され、高度な議論が展開されている。しかし、我が国からの参加者(招待者)は早稲田大学、京都大学、一部の企業からの数人のみであり、アメリカ、ヨーロッパと比べ圧倒的に少ない。
このような状況を打破するためには、産・官・学が協力したマルチプロセッサスーパーコンピュータ用及びシングルチップマルチプロセッサ用のコンパイラの開発、及びそのコンパイラの性能評価を活かすことができるアーキテクチャの開発を行う継続的なプロジェクトが必要であると思われる。ここで継続的と言ったのは、世界を断然リードするコストパフォーマンスが良く使い易いスーパーコンピュータ、マイクロプロセッサを一つ開発して終わりではなく、フロントランナーとして継続的に新しい技術を生み出していく力(従来の日本に求められた力とは異なるより難しい力)を備えられるようにしなくてはならないという考えからである。
特に、このようなプロジェクトでは、最先端の研究を進めるだけではなく、研究者、技術者の絶対数が足りないことを考慮して、人材の育成にも力をいれるべきと思われる。
自動並列化コンパイラに関して今後研究を行うべき研究課題としては以下のようなものが考えられる。
(1)マルチグレイン並列化技術
サブルーティン、ループ、基本ブロック間粗粒度並列処理(マクロデータフロー処理)、ループ並列処理、プロセッサ間(近)細粒度処理、SCM内マルチグレイン処理、ベクトル処理を階層的に融合する技術で、プログラム全域の並列性を使用できる日本独自の新コンパイル手法であり、関連して以下の基礎技術要素の研究も含まれる。
(2)データローカライゼーション技術(データ分割配置)
従来はHPFなどによりユーザが最適化しようとしていたが難しかったデータの分割及びローカルメモリへの配置技術を、以下のような技術を用い自動化しようとする技術であり、以下のような要素技術から構成される。
(3)処理と通信のオーバーラッピングスケジューリング
これは、データローカライゼーションなどによりデータを最適配置しても削除できなかったデータ転送オーバーヘッドを、タスク処理とデータ転送をオーバーラッピングさせて(同時に)行うことにより、データ転送のオーバーヘッドを隠蔽しようとする技術であり、タスク実行およびプレロード、ポストストアを用いたデータ転送タイミングを最適に定める、スタティックスケジューリング、ダイナミックスケジューリング及びその混合モードのアルゴリズムの開発が重要である。
(4)キャッシュのソフトウェア制御技術
上述のプレロード、ポストストアを用いた処理とデータ転送のオーバーラッピングスケジューリング技術、データの分割配置技術の融合することにより、キャッシュのようなプロセッサ直近の高速メモリをコンパイラに制御させ、プログラム中の情報をフルに使うことにより、ハードウェアキャッシュにおけるミスヒットを劇的に減らそうとする技術であり、シングルチップマルチプロセッサの高速化の際に特に重要になると考えられる。
以上のようにマルチプロセッサ用自動並列化コンパイラは、我が国が現在世界最高のハードウェア技術をもっているHPC分野において、ハードウェアの高い性能を有効に引き出しプログラムを実行した時の真の性能(実効性能)を高め、価格性能比を改善するとともに、使いやすさを向上させるために重要な技術である。
またこの価格性能比の向上と使いやすさの向上は、従来比較的小さいと言われていた世界のHPCマーケットを拡大させ、我が国のHPC産業をさらに発展させることができると期待される。
さらに、マルチグレイン並列処理のようなコンパイル技術は、21世紀に日本の情報産業を支える技術となりうる高性能なシングルチップマルチプロセッサの開発のためにも重要である。
また、上記のようなペタフロップを睨んだ、コストパフォーマンスに優れた使い易いスーパーコンピュータの開発は、コンピュータ産業の発展のみならず、高速計算を必要とする省エネルギ・新エネルギを始めとした地球環境保全、原子力安全利用、電力安定供給、自動車・航空機設計等各種関連産業の発展にも大いに貢献できるものと期待される。
現在のデバイステクノロジーの延長を仮定し、今後10ないし15年のレンジでペタフロップスマシンを開発しようとすると、少なくとも1万〜10万プロセッサから構成される分散メモリ型の並列システムとなる。このようなシステムの構築に際しては、デバイス、アーキテクチャ、応用ソフトウェアが重要なのはもちろんであるが、プログラミングインタフェースに関する技術がとりわけ重要となる。高並列マシンにおいては、高いピーク性能を引き出す並列プログラミングが非常に困難であるからである。本節では並列プログラミングインタフェース技術について、現状と課題を述べる。また米国の主要な関連プロジェクトを概観し、我が国の今後のプロジェクトのあるべき姿を考える。
現在の並列システム上の並列プログラミングとしては、メッセージパッシング(MPI:Message Passing Interface[1]など)、データパラレル言語(HPF: High Performance Fortran[2]など)、共有メモリ用並列化指示行インタフェース(OpenMP[3]など)、スレッド並列化記述インタフェース、自動並列化インタフェースが代表的なものである。これらそれぞれについてその概要と現状について概観する。
(1) メッセージパッシング
メッセージパッシングは、プロセッサ間のデータ転送を、ユーザがライブラリを用いて明示的に記述する枠組である。SPMD(Single Program Multiple Data Stream)形式に基づいて、複数の制御の流れを意識したプログラミングが必要になる。
MPI(Message Passing Interface)は、分散メモリ型のプログラミングインタフェースとして、現在、最も標準的に用いられているものである。仕様はMPIF(MPI Forum)と呼ばれるプライベートなフォーラムで検討され、1994年6月にMPI1.0がまとめられた。その後、並列I/Oやプロセスの動的生成・消滅、1方向通信(One Sided Communication)などの機能をさらに追加したMPI2.0[4]の言語仕様が1997年7月に定められた。MPIの詳細についてはホームページhttp://www.mcs.anl.gov/mpi/ を参照されたい。
MPIは、現在、大半の商用並列マシン上でサポートされている。これらのMPIにはArgonne国立研究所とMississippi州立大学との共同で開発されたMPICH[5](http://www.mcs.anl.gov/mpi/mpich/ 参照)をもとにしたものが多い。MPICHは仮想デバイスの概念を導入することにより、システム依存部がコンパクトに切り離された構造になっており、移植性が高い。ベンダは、システム依存部を対象ハードウェアに適するように開発することで、効率の良いMPIを実装することができる。
MPI1.0について、1対1通信を行う限りにおいては、並列システム固有の最適化がかなり行われており、高い通信性能が期待できる。一方で、集団通信などのそれ以外の機能については、まだ満足できる性能レベルにあるとは言い難い。それぞれのシステムにおいて、さらなるマシン固有のチューニングが必要である。MPI2.0については、そろそろ最初のインプリメントが登場しようかという段階である。いずれにせよ、チューニングおよび、利用経験の蓄積と、これをシステムへフィードバックし、安定して高速なシステムとするには、あと1、2年はかかると思われる。
また、MPIの利用経験の蓄積やプログラミングツールの開発においては、まだ日本と欧米でかなりの開きがある。日本でMPIを駆使した並列プログラムを開発できる技術者が欧米に比べて非常に少ないことが主な原因と考えられる。このような技術者、研究者の育成は日本のHPC技術分野の振興にとって最も大きな課題の1つである。
(2) データパラレル言語
大規模な数値シミュレーションでは、配列として記述された大規模なデータについて、要素ごとに同様の処理を施すことが多い。データパラレル言語とは、このような処理に内在する並列性の抽出を主要目的として考案された言語インタフェースであり、商用システムとしては、コネクションマシンに実装されたCM-Fortranが最初である。並列化においては、処理の分割と対象データの分割が重要であるが、データの分割に重点をおいて並列プログラムを記述する。このため、分散メモリマシン用の並列化記述インタフェースとして適している。
現在のところ、HPF (High Performance Fortran)[1]が、デファクト標準として認知されている。HPFは、Rice大学のKen Kennedy教授を中心とするプライベートな組織HPFF(HPF Forum)で定められた言語である。活動は1991年に開始され、1993年にHPF1.0が制定された[2]。その後もHPFF2において、仕様の曖昧性のチェックや、HPF1.0で不十分であった機能拡張が検討され、1997年1月にHPF2.0[6]の仕様がまとめられた。HPFFのホームページが、http://www.crpc.rice.edu/HPFF/ にあり、HPF言語の仕様や関連研究プロジェクトの情報が得られる。
HPF処理系(コンパイラ)のインプリメントは、APR、PGI、NUGなどの欧米のベンチャー企業が先行した。現状では、PGIの処理系がシェアのかなりの部分を押さえている。最近では、日米の大企業によるHPF製品化が増えてきた。IBM、DEC、日立、富士通、NECなどが自社並列システム用のHPF処理系を製品化済み、もしくは製品化アナウンスしている。まずHPF1.1をサポートし、HPF2.0の公認拡張仕様を順次開発中というところが多い。
HPFの問題点としては、言語仕様、処理系が未成熟であることや、利用経験の蓄積の不足があげられる。特に、不規則なデータ参照パターンを持つ応用プログラムで効率の良いプログラムが書けない、あるいは書きにくいというHPF言語の制約が大きな問題となっている。また、欧米では、Rice大学、Vienna大学、Syracuse大学、GMD、Indiana大学など、多数の大学や国立研究機関がHPFコンパイラの大規模な開発を行っているのに対して、日本では、このような活動が非常に少ない。一方でベンダは、安定したシステムの開発が最優先のため、新規機能の開拓や、効果が不明な機能への挑戦は優先度が下がる傾向にある。これらの補完には、大学や国立研究機関によるコンパイラ技術の研究開発を活性化する必要がある。
また、MPIと同様に、HPFを利用した並列プログラミング経験の蓄積、並列プログラミング技術者、並列プログラミング支援ツールなどの研究開発も重要である。1996年にJAHPF (Japan Association for High Performance Fortran)[7]というプライベートな検討会が結成され、HPFの機能拡張、実用コードの並列化/評価、ベンチマークプログラム開発、日本語ドキュメントの整備などが行われている。このような活動をさらに広げていく必要がある。
(3) 共有メモリ用並列化指示行インタフェース
分散メモリマシンに比べて共有メモリマシン上の並列化は、データの分散配置を考える必要がないため簡単である。構造化され、並列化対象のはっきりしたプログラムなら、自動並列化で十分な並列化効果が得られる場合もある。しかし、一般の場合には、並列化ループの選択、粒度の調整、リダクション演算の認識、手続き呼び出しを含むループの並列化、DO Across型ループの並列化、同期の最適化、共有データ/ローカルデータの切り分け、スケジューリングなどをコンパイラがすべて効率良く行うことは困難である。そこで、指示行の形式でこれらの最適化をコンパイラに指示するための言語拡張が、共有メモリ用並列化指示行インタフェースである。CRAY、SX、Alliant、Convexといったベクトル並列マシンを対象に開発された「マイクロタスキング」が商用機では最も成功した例である。また、1991年にANSIのX3H5 でParallel Fortran[8]の標準仕様案が作成されたが、当時MPPが並列マシンの主流だったこともあり、正式標準として成立しなかった。しかし最近になって、SMPと呼ばれるRISCベースの並列マシンが多く製品化されるに伴い、OpenMP (http://www.openmp.org/)という仕様がデファクト標準を目指して検討されている。
OpenMPはSGIやIBM、KAI(Kuck & Associates Inc.)などが中心となってフォーラムを結成し、共有メモリ用並列化指示行インタフェースの標準化を目指しているもので、最初の仕様案がまとめられ、すでにKAIなどからOpenMPの処理系(トランスレータ)が製品化されている。
また、共有メモリマシンには、DSM(Distributed Shared Memory)と呼ばれる方式を採用するシステムが増えている。論理的には共有メモリであるが、物理的にはデータの格納場所によってアクセス速度に差が生じるシステムである。このようなシステムにおいては、高い性能を得るためにデータアクセスローカリティーの抽出が重要である。DSM用の言語機能、コンパイル方式の研究も今後重要性が増すであろう。
(4) スレッド並列化記述インタフェース
スレッド並列化記述インタフェースとは、複数の手続きを別々のスレッドで非同期に実行することにより並列処理を実現する枠組みである。並列化制御ライブラリを用いたFork〜Joinのプログラミングスタイルとなり、共有メモリマシン用のインタフェースである。ある意味では、データ転送を共有メモリアクセスと同期制御で行うメッセージパッシングととらえることもできる。Unix上では、pthreadライブラリがこのインタフェースの代表である。また、CRAYやSXなどの共有メモリベクトル並列マシンでも「マクロタスキング」として、同様の機能がサポートされている。
(5) 自動並列化インタフェース
現状の自動並列化コンパイラは、共有メモリマシンを対象とするものが中心であり、前記(3)の共有メモリ用並列化指示行インタフェースの発展形ととらえることができる。現在の技術レベルでは、ユーザが全く指示行を挿入しない場合の自動並列化の適用範囲は、かなり狭い。(3)でも述べたが、並列化ループの選択や、DOALL以外のループの並列化、手続き呼び出しを含むループの並列化その他の要因により、コンパイラにすべての判断を任せて効率の良いプログラムを生成できるケースが限られるからである。また、分散メモリシステムにおいては、データレイアウトの自動化がネックとなり、自動並列化コンパイラの実現が共有メモリマシンを対象とするものに比べて一層困難になっている。
前節において、科学技術計算分野における並列言語処理系の種々のインタフェースを概観した。ペタフロップスマシンが、1万プロセッサを超える高並列システムとなり、メモリアーキテクチャが分散メモリ形態になると仮定すると、これらのうちで(1)のメッセージパッシングまたは(2)のデータパラレル言語のどちらかのインタフェースを採用せざるを得ない。また、ペタフロップスマシンが、SMPクラスタのように共有メモリシステムをノードとして、これを多数結合したような、階層構造を持つことも考えられる。このような場合には、(3)、(4)、(5)の共有メモリ用の並列化パラダイムもノード内並列化の手段として重要となる。この際には、分散メモリ〜共有メモリの階層構造をもつ並列化パラダイムの統合も重要な課題となる。
また、ペタフロップスマシン上の言語関連機能としては、コンパイラだけでなく、ツールが重要である。並列プログラミング、チューニング、デバッグなどは、逐次システムを対象とするのに比べるとはるかに複雑で困難であるからである。
今後5年から10年で重要となる研究課題は以下のものが挙げられる。
並列化記述言語については、これまで常に米国が主導的役割を果たしてきた。3.2.3.1で述べた標準言語インタフェースについてもMPI、HPF、OpenMPなど、いずれも米国メンバを中心として結成されたフォーラムで仕様が検討されている。並列化ツールに関する、Ptoolsコンソーシアム(http://www.ptools.org/)についても同様である。この要因を分析してみると、以下のようにまとめられる。
この他に、実応用を見据えて並列化技術の振興を図るプロジェクトや活動として、以
下のものがある。
(1) NHSE(National HPCC Software Exchange: http://www.nhse.org/)
(2) Caltech Concurrent Computation Program
(http://www.netlib.org/utk/lsi/pcwLSI/text/BOOK.html)
(3) Enabling Technologies for Peta(FL)OPS Computingワークショップ
(4) PTOOLコンソーシアム(http://www.ptools.org/)
前節で、米国の並列化ソフトウェア関連研究を概観した。これらを踏まえて、我が国の並列化ソフトウェア関連のプロジェクトのあるべき姿を考えると、以下の要件が重要であると思われる。
(1) 応用指向であること
(2) 世界に開けたプロジェクトであること
(3) 産・官・学がバランス良く参加したプロジェクトであること
る。
(4) 複数のプロジェクト間の協調
(5) 議論の場
プロジェクトを成功させるためには、研究テーマの選定もさることながら、横と縦の連携が重要である。ここで横とは、産・官・学のことであり、縦は、応用からデバイスにいたる研究領域のことである。また、研究の成功には応用指向で研究の目的をはっきりと絞り込むことが重要である。日本でも最近は、このようなプロジェクトが増えてきた。RWCPで研究されているPCクラスタ、航技研のNWT、原研モンテカルロ装置、筑波大学CP-PACS、地球シミュレータなどは、応用を絞り込んだプロジェクトの良い例である。また、PDCや本ペタフロップスマシン技術調査ワーキンググループなど、研究交流を行う機会や、今後の研究のあり方について討議する場も以前に比べると増えてきているように思う。今後も、このような流れをさらに継続するとともに、プロジェクト間の連携、方向づけをさらに強化していくことが重要であると考える。
参考文献
引用URL一覧