今年度も計画開始時の予定をほぼ達成することができた。 具体的な成果は以下のとおりである。
以下、それぞれについて簡単に述べる。
まず、重力プロセッサチップについて述べる。以下、これを G6 チップと呼ぶ。 今年度の最大の成果は、チップが予定通り完成し、設計ミス、バグ等がなく実 用計算に使えることが確認できたことである。図 2 に完成したチップダイの 写真、図3にプロセッサモジュールとその評価用ボードの写真を示す。この2チッ プのシステムでピーク性能が 72 Gflops 相当 (1秒間に2粒子間相互作用を 12 億回計算)となり、10 ないし 20 PE 程度の中規模なベクトル並列計算機、あ るいは 100 ないし 200 PE 程度の大規模な MPP や PC クラスタと同 等のピーク性能になる。
昨年度の報告で述べたように、論理設計・シミュレーションは 1998年前半で 終了した。この後、最終的に動作確認がとれたのは 1999年10月である。この ように時間がかかったのは、チップの製造(物理レイアウト設計を含む)を担 当した東芝の作業に若干の問題があり、物理設計の変更が必要になったためで ある。この問題点のために、予想していた動作周波数で動かすのは多少難しく なった。
現状の LSI は、それでも要求の最低仕様の 100 MHz 動作は満たしており、チッ プ単体での性能が 36 Gflops (相当)と現在の最高速のマイクロプロセッサ のピーク性能の 24倍の性能をもつ。さらに、消費電力は予想よりも少ない 10W で収まっており、これは現在の高速マイクロプロセッサには 50W を超え るものも多いのに比べて 1 桁程度小さくなっている。チップ単体での価格は 高速なマイクロプロセッサの数分の1であり、ピーク性能で比べてほぼ2桁高い 価格性能比を実現できた。なお、この比率はシステム全体としてみればさらに 高いものになる。
典型的なアプリケーションを走らせた時の実効性能では、価格性能比 の差はさらに大きくなる。これは、GRAPE の場合には単一のアプリケーション に全体を最適化しており、現在の多くのマイクロプロセッサのようにメモリバ ンド幅の制約や演算器利用の非効率のために性能が落ちるといったことがない ためである。ただし、使用するアルゴリズムによっては、ハードウェア効率が 通常の計算機程度まで落ちることもある。これについては 4.3節 で述べる。
G6 チップの構成を図4に示す。従来の GRAPE チップと比べたこのチップの大 きな特色は、多数(6本)のパイプラインを集積したことと、メモリインター フェース、ホストインターフェースを含むほとんどすべての制御回路を内蔵し たことである。すなわち、1チップにメモリをつけ、簡単な I/O チャネルの先 に直接接続することで実際に動作するシステムが完成する。また、入力と出力 が分離されていることも特色であり、このために入出力の並行動作が可能にな り、高い通信スループットが実現できる。メモリには重 力を及ぼす粒子のデータ(位置、質量等)が格納され、各パイプラインの書き 込みレジスタには重力を受ける側の粒子データが格納される。計算中はメモリ からシーケンシャルに粒子データが読み出され、レジスタ内粒子との相互作用 が順番に計算され、求まった重力がアキュムレータにしまわれる。
モジュールの構成を図5にしめす。これは基本的には2つの G6チップにそれぞ れメモリをつけただけである。入力は2チップで共通であり、出力は並行して 読み出して合計するために2本でている。評価システムは、このモジュールを GRAPE-4 および GRAPE-5 で使った PCI インターフェースを通してホストに接 続するためのボードである。
計算機全体の概念設計は昨年度でほぼ終了していたが、回路の詳細設計は冷却シス テムを含む匡体や基板の物理設計と並行して行なう必要があり、特に冷却シス テムの決定には実 LSI チップの動作速度、消費電力の正確な評価が不可欠で あるため、システム全体の詳細設計は当初の計画通り今年度の作業となった。
全体システムは最大16台のクラスタからなり、1クラスタにプロセッサチップ を16個(プロセッサモジュールを8個)載せた基板(GRAPE-6 プロセッサボー ド、 G6PB)を16枚収納する。基板サイズは 8U 400 mm であり、 GRAPE-4 の基板に比べ一回り小さくなった。
G6PB の外部へのインターフェースは、論理的には G6チップのものと同じであ り、入力2本と出力1本を持つ。入力はそれぞれ全チップにブロードキャストさ れ、出力は上でのべたようにリダクションされて1本になる。
物理的には、G6PB の外部インターフェースはG6チップのものとは 大きくちがい、 LVDS をを使ったセミシリアル転送になっている。これに対し、 G6チップのインターフェースは単に 36ビット (32ビット +バイトパリティ) の同期転送であるに過ぎない。
先に述べたように、全体システムはG6PB の上にコントロールボード(G6CB)が つき、それがホストにつながることによって構成される。G6PBの機能は基本的 にはホストからの入力データのブロードキャストと G6PBからのデータのリダ クションであり、4:1 のツリー構造をとる。すなわち、16 PB からなる 1 ク ラスタでは、 CB が最上位1枚、中間層4枚の5枚必要ということになる。
現在、これらの基板は論理設計、回路の詳細設計が終了し、プリント基板を製 造中である。
GRAPE-5 チップは1990年に開発した低精度重力計算パイプラインチップである GRAPE-3 プロセッサチップの後継として開発したものであるが、GRAPE-6 プロ セッサチップのための技術的なテストの意味も兼ねて新しい試み をとり入れた。
チップ単体での演算速 度は 4.8 Gflops 相当と GRAPE-3/4 のプロセッサチップの 10 倍を実現した。 さらに、ハードウェア記述言語を使った設計の利点、問題点についても経験を 積むことができた。この経験は GRAPE-6 チップの設計に非常に役立った。
GRAPE-5 は、この GRAPE-5 チップ 8 個を 1 ボードに搭載して 40 Gflops の速度を出すものである。この GRAPE-5 を2台並列に動作させ、その 上で Barnes-Hut ツリーアルゴリズムを使った宇宙論的 N体計算で 1999年 のゴードン・ベル賞を受賞した(図6) 。今回の受賞はコスト・パフォーマンス部門で あり、実効性能において $7/Mflops という値を出したことが評価されたもの である。実効性能は2台並列のシステムで 6 Gflops であった。
この 6Gflops という数字は、ピーク性能が 80Gflops であるのに対して 10% 程度と決して高いものではない(なお、 Barnes-Hut ツリーに対しては、 MPPやベクトル並列型計算機の場合でも実効性能はピーク性能の 10% を超え ることは稀である)。このような、汎用計算機なみに低い効率になったのは、 Barnes-Hut アルゴリズムでは計算量が直接計算に対して減っているために、 相対的にホストで行なわれる計算やコミュニケーションの比率が大きいためで ある。しかし、逆にいえばそのような場合でも GRAPE のほうが汎用計算機に 比べて高い価格性能比を実現できるということを実証したという意味で、今回 の受賞の意義は非常に大きい。
疑似粒子多重極法は牧野が昨年提案した新しい計算方法である。基本的な考え 方は従来からある高速多重極法と全く同じであるが、通常の方法では多重極展 開の係数を使うのに対し疑似粒子多重極法ではその名の通り粒子を使って多重 極展開を表現し直す。
この方法のメリットは、アルゴリズムが簡単になることと多重極展開の評価に GRAPE が使えることである。が、必要な計算量がかなり増えると いう問題があった。例えば、4重極モーメントを表現するのに 12個の粒子が必 要になる。これに対し、通常の方法では4重極モーメントの計算は1粒子からの 重力の計算の2倍程度の計算量であるので、計算量が6倍に増えてしまっている ことになる。もちろん、 GRAPE を使う場合には先に述べた汎用計算機との大 きな性能差のために、この程度の損失があっても GRAPE と疑似粒子多重極法 の組み合わせが他の方法よりも優れてはいる。
昨年我々が提案した方法で計算量が大きくなるのは、疑似粒子の配置、質量を 決定する公式を導くのに球面調和関数の直交性を用いたからである。このため に、疑似粒子の配置上での数値積分自体が球面調和関数の直交性を満足する必 要があり、そのために粒子の数が増えていた。
例えば2重極モーメントの場合は、重力の場合のように力に符号がなければ粒 子一つで表現できる(重心におけばよい)というのは自明である。今回、われ われはこれと同様な方法を4重極モーメントの場合まで拡張することに成功した。 詳しい定式化はここでは触れないが、基本的には4重極モーメントテンソルを 対角化するような平面上に3個の同一質量の粒子を配置することで4重極モーメ ントまでを表現できることを示し、これを計算コードに実現した。この結果、 計算全体で 3 倍程度高速化された。同様な考え方を8重極以上に拡張可能かど うかは現在検討中である。
FPGA を使う再構成可能計算機を利用する上でもっとも問題になるのが、ソフ トウェアをどのようにして用意するかということである。 FPGA ハードウェア の自由度は極めて大きく、またその上での論理回路の実現に用いられている VHDL 等のハードウェア記述言語は基本的にはゲートレベル、あるいは変数と してビットベクトルレベルで記述するものであり、物理シミュレーションのプ ログラムを開発する研究者が簡単に習得、利用できるものではない。
もちろん、例えば Fortran や C で書かれたプログラムが直接ハードウェアに 表現されればそれでよいという考え方もあり得るが、通常の浮動小数点演算を 使ったのではハードウェアの無駄が大き過ぎ、現実的ではない。なお、この、 無駄の大きさは将来的実現できる回路規模が大きくなっても残る問題であるこ とに注意してほしい。 GRAPE のような専用計算機の場合には、小さな回路規 模で必要機能を実現できれば、並列化によってスループットを上げることがで きるからである。
現状の VHDL による記述と、 Cや Fortran のようなプログラミング言語での 表現の中間的なものとして、基本的な演算要素、すなわち固定小数点、浮動小 数点の加減算、乗算器やデータ型変換器を用意するということが考えられる。 ユーザーはこれらのものを組み合わせて必要な機能を実現するわけである。こ れは基本的にはモジュールコンパイラであるが、実用になるためにはデータ変 換や浮動小数点演算の実現方式についてさまざまな検討、評価が必要になる。 今年度は特に比較的精度が低い(語長が短い)場合に適当と考えられる演算方 式について実装の検討を行なった。