さて、GRAPE-4 で最初の目標は達成されたわけですが、半導体技術はどんどん
進むので新しいのを作ればもっと速くでき、今まではできなかった研究ができ
ます。なので、次をなんとかしましょう、という話を杉本と始めました。杉本
はそれなりに名前が通った研究者で、色々なところに知人も多いのですが、な
かなか良い話はありません。杉本は、「君が本郷(東大)の理学部で教授ならなん
とかなるんだけどね」とか勝手なことをいいますが、そんなことを言われても
どうしようもありません(私は駒場の教養学部で助教授でした)。で、杉本は
97年3月で定年となります。その定年も近いある日、杉本のところに棚からボ
タモチな話が飛び込んできます。未来開拓なんとか事業という新しい研究費枠
で、計算科学を一つのテーマとして推進することになったからその委員長になっ
てくれないか?というものです。
杉本は、委員長だと自分の子分にお金をつけるなんてあまりにあからさまだし、、、
とか考えたのか、委員長は別の人に譲り委員の一人となります。そういうわけ
で、 1997 年度から GRAPE-6 の開発を始めました。この時の目標は、最初は
200テラフロップスとか書いていたような気がします。段々下がって実際にで
きたのは 64 Tflops しかなかったのはちょっと私のプロジェクト管理がよろ
しくなかったためもあります。
GRAPE-6 では、GRAPE-4 では 1/3 本だったパイプラインを 6 本と、別チップ
だった予測子も1チップに入れて、ほぼ GRAPE-4 のボード1枚と同じ性能を1チッ
プで実現します。動作クロックも 32 MHz から 100MHz に引き上げ、メモリイ
ンターフェースも内蔵してメモリチップ直結にして必要なメモリバンド幅を確
保します。この結果、ボード上の全チップからの力を合計する必要が起こるの
で、ツリー上の合計をとるネットワークを FPGA を使って構成します。
GRAPE-6 チップの開発は、 IBM と一緒にやることになりました。これは、戎
崎の MDM がすでに IBM と共同作業を始めていて、営業、技術者とも非常に優
秀な方と一緒に仕事ができた、ということが大きな理由です。まあ、もっと基
本的な理由は、 GRAPE-4 から使ってきた LSI ロジックが、あんまりそういう
のに対応してくれなくなったので別のメーカーと話をする必要があった、とい
うことです。日本メーカーともいくつか話をしたはずなのですが、不調だった
ようです。
但し、色々あって、設計は IBM のエンジニアがやるのですがチップ製造は東
芝が、ということになりました。そのほうが安い、というのが IBM の営業の
方の試算で、それはまあそうだったようです。
そういうわけで LSI 設計作業は 97年の秋くらいに始め、大体の目処は冬には
つきました。もちろん、そこからが IBM のエンジニアの方は大変になるわけ
です。また、メモリとかホストとの I/O や制御回路は福重がやったので、彼
も大変だったと思います。が、とにかく98年夏には論理設計は完全に終了して、
そこからは東芝のエンジニアの作業になりました。これは、配置配線というと
ころで、 GRAPE-4 では CAD ツールがほぼ自動でやって1日で終わったところ
なのですが、これが時間がかかりました。 11 月終わりに最初の配置結果がで
て、まだ動作周波数が問題とかで色々修正して、結局年末ぎりぎりにテープア
ウトとなりました。
その後、なんだか色々あったようですが、3月中頃にとりあえず ES(エンジニ
アリングサンプル)のチップが届き、6月初めには福重が作ったボードで動作確
認ができました。これはインターフェースにGRAPE-4 と同じものを使って
1チップだけ載せたボードです。
確認は出来たのですが、どうもクロックが上がらない、特に粒子数を増やすと
途端に動かなくなる、というので福重はかなり苦労していました。原因がよく
わからなかったのですが、7月には福重は、チップが計算を始めるとチップの
出力の信号振幅が小さくなる、ということに気が付きます。これはつまりどう
いうことかというと、計算を始めると消費電力が増えて流れる電流も増えるの
ですが、そうするとボード、パッケージ、LSI 自身の電源配線の抵抗のために
実際に働いているトランジスタのところの電源電圧がさがってしまうわけです。
このために、計算始めて何クロックサイクルかたつと内部で電圧がさがって間
違えるようになるわけです。
これは東大の我々のせいでも IBM のせいでもないだろ?ということで、東芝
に色々変更をお願いすることになりました。ここではもちろんここはお前んと
このせいだとかそうじゃないとか色々議論があるわけですが、まあ、とにかく、
直してもらうしかありません。で、東芝が調べるとそもそも(東芝の)設計ミス
もあったとか色々でてきてこれはびっくり、みたいな状況になりました。
結局、ミス修正の他、電源層を増やす、パッケージを変えて電源配線を増やす、
等で対応していただき、99年10月末には動くチップがきて、まあ 100MHz で動かな
くもない、という感じになりました。
東芝を待っている間に箱やボードの開発も進めるわけで、記録のよると12月に
設計データをだして、1月終わりにボードがきて、3月中頃にはボード1枚で計
算できるようになってます。で、10枚ほど製造して、テラフロップスに到達し
てまたゴードンベル賞にだそう、というなかなか無謀なスケジュールですが、
なんとか4月中に 992 Gflops までの数字を出して論文投稿しました。この時
には、ボード1枚に16チップを載せて、大体 500Gflops のピークがでるはずの
ものです。これを 4 枚そのまま1台のホストにつないで、とりあえず理論ピー
クは GRAPE-4 より速いところまでいきました。
この年には、夏には 1.34 Tflops まで数字を上げて、これが最終審査に使われ
ました。理研で戎崎がやっていた MDM もたまたま全く同じ 1.34 Tflops になっ
て、性能の賞を分けあうことになりました。
実際に動かして問題になったのはまた電源周りです。この時には4枚のカード
に1つの電源ユニットから電源供給していて、600A とか 1.5KA とか供給でき
るユニットを使っていました。能力自体はそれで良いのですが、計算している
時としていない時で急激に電流が変わるのにこの電源装置が対応できないので
す。こんなふうに急激に消費電力が変わるのは最近のマイクロプロセッサでも
みんなそうなっていて、それに対応した応答速度の速い電源ユニットというの
がマザーボードの重要な特性になっています。 GRAPE-6 では、最初は大きな
コンデンサをつけることでなんとかしようとしました。これで改善はするので
すが、計算している間に電源が全く電流変化に対応しないのではどうしようも
ありません。当時のマイクロプロセッサは今みたいに 135W とかいうものでは
ないので、マイクロプロセッサ用の電源回路ではまだ対応が困難でした。
もちろん、チップ1つの消費電力は 10W くらいなので、チップ4個とか8個毎に
DC/DC コンバータをつける設計にすれば問題はなく、
今考えると明らかにそうするべきだったのですが6年前にはそこまで気が付か
なくて、市販の DC/DC コンバータユニットで大電流、高速応答のものを色々
捜しました。結局、 Vicor 社のものを並列に使うことにして、ボード毎に電
源ユニットをつけました。
さて、GRAPE-4 では 36 枚のボードを 単純な1階層のツリー構造で1台のホス
トにつないだわけですが、 GRAPE-6 ではどうするか、が問題になります。速
度が 100倍ほど速くなり、しかもホスト計算機は5年たっても良くて 10倍、こ
の時期は実はそんなに上がっていないので、どうしてもホスト側も並列化する
必要があります。転送速度も並列化によって上げる必要がありました。
この時、普通に考えるとホスト計算機の間を汎用ネットワークでつないで、
ホストと GRAPE-6 の間はそれぞれ専用バスでつなぎます。しかし、このやり
方で単純に並列化すると、1台のホスト当りの計算量は減っても通信量は減り
ません。複数のホストが粒子を分割して持つとして、自分がもっている粒子へ
の力を計算するには他のホストがもっている粒子全部のデータが必要になるか
らです。このため、他のホストがもっているデータはもらってきて、さらに
それを GRAPE のほうにも送る必要がでてきます。
色々工夫すると、ホストの台数の平方根に反比例して通信量を減らせることが
わかります。しかし、そのためにはホスト計算機が 100台くらい必要になり、
その時に考えていたホスト計算機は1台 300万円くらいのワークステーション
だったのでそれだけで予算がなくなってしまいます。
今考えてみると、安い 20万円くらいのパソコンでなんとかすればよかったわ
けで、最終的にはそうしたのですが 1997年にはそういう解は思いつかなかっ
た。まあ、もう少し正確にいうと、100台くらいのパソコンを並べた上にそれ
を 1Gb/s 程度のネットワークでつなぐ必要があって、やっと 100Mb/s の
Fast Ether が普及したころだった 1997 年には 1Gb/s のネットワークを 100
ポート用意するのは予算的に厳しいと思っていたこともあってそうしたのです。
ネットワークが高いだろうという想定はまあそんなに外れてはいなくて、2002
年になってプロジェクトが終わるころになってやっと GbE インターフェース
は普及しだしました。 2001年にはある程度の規模で動かす必要があったので、
GbE のようなものが安くなる、と想定して始めたら面倒なことになったでしょ
う。
インターフェースとしては PCI-X ではなく、通常に PCI を使うことを想定し
たので、ホスト1台との通信速度は 100MB/s 程度であり、それを 16 本程度出
すことが必要になります。また。カードのトータルの枚数は 100 ないし 200
枚になり、それらが 100MB/s 程度のツリーとメッシュを組み合わせたような
ネットワークでつながることが必要になります。このため、 100MB/s 程度の
ポートを持ち、安価で、しかもボードに載っているのと同様な結果を合計しな
がら返す機能をもったネットワークノードを作る必要がありました。
まず問題は物理的なリンクをどうするかです。これは、パラレル・シリアルの
変換機能をもった LVDS インターフェースのチップを使うことにしました。こ
れは、信号3本と共通クロック1本で、 350MHz 程度の転送速度で 1Gbps 程度
の速度を出すものです。シリコン・パラレル変換でクロックを 7 倍にするの
で、パラレル側は 21ビット幅で 50MHz 程度です。チップは 100MHz で動作す
るのですが、インターフェース部分は 1/4 の 25MHz クロック、32ビット幅の
100MHz で動作するようにしたので、これで十分です。インターフェースカー
ドは98年に修士に入学した古賀が作ったものです。
コネクタとかをどうするかも問題ですが、これは速度的には十分なはずの
普通のカテゴリ 5 のイーサネット用ツイストペアケーブルと RJ-45 コネクタ
を使います。これで本当に信号伝送ができるかどうかはとても心配だったので
すが、古賀は結構順調にボードを作ってくれて、99年夏頃には使え
るボードができました。最初は、ケーブルが少し長いとエラーが増える、とい
うことが続いていたのですが、そのうちに古賀が、普通のイーサネットケーブ
ルではコネクタのピン配置がなんだかややこしいもので、こちらが想定してい
たものとは全然違う、ということを発見しました。
今から考えるとそんなのは当たり前なのですが、私も良くわかってなくて、ツ
イストペアの2本の線はコネクタの連続したピンに割り当てられているものと
ばっかり思っていたのですが、実際には 1-2 3-6 4-5 7-8 がペアになる配置
だったのです。これは、もちろんケーブルを作り直せば済む話で、それで解決
しました。
ここでの通信プロトコルは何か汎用の規格というわけではなくて独自のものと
して、ネットワークノードも FPGA を使った簡単な基板1枚でプロセッサボー
ド4枚につながるようにしました。ネットワークカード間の接続はツイストペ
アケーブルで、ネットワークカードとプロセッサボードの間はツイストペアケー
ブルとバックプレーン接続を選択できるようにしました。また、プロセッサボー
ドはネットワークカードなしでホストインターフェースカードに直結もできる
ようにします。こうすることで、 GRAPE-4 よりは手軽にカード1枚のシステム
を構築できます。また、数枚のシステムならネットワークカードなしで動作す
るわけで、 2000 年の段階ではそこまでしかできていませんでした。
バックプレーンは独自のものを業者さんに設計してもらいました。これは、ま
あ、その、 GRAPE-4 の時よりは予算に余裕があったからです。350MHz の信号
をコネクタ経由でバックプレーンに流すわけで、そんなものが本当にに動くか
どうかは結構心配でしたが、これは特に問題になりませんでした。
プロセッサボードやネットワークカードの設計を始めた時期に私は東大教養学
部から理学部天文学科に異動することになり、その辺もあってプロセッサボー
ドやネットワークカードは大体私が設計、デバッグする羽目になりました。
あんまりボードの設計とか得意ではないので大変だったのですが、
まあなんとかなって 2000年の年度末には複数のボードを複数のネットワーク
カードから制御、というのもなんとか動くようになりました。
2001 年のゴードンベル賞にはまずこれで応募します。 4 月の段階での実測性
能は 2.9 Tflops でした。
これから夏にかけてもう少し大規模にして性能を上げるわけですが、この時に
ホスト計算機を GRAPE-4 の時からずっと使っていた DEC (その頃は Compaq)
Alpha から x86 の PC に移行しました。これは、要するに Alpha の打ち切り
が決まったからです。これは Pentium 4 が出始めたころで、 Athlon にする
か Pentium 4 にするか、というところだったのですが最初は P4 にしました。
これは、 CPU の性能よりも PCI インターフェースの性能が大事で、 DMA や
プログラム I/O でまともな数字がでるかどうかが問題です。一般に DMA はあ
まり速くなく、特に DMA read、つまり インターフェースカードがメインメモ
リを読む時の速度はあまり良くありません。 Alpha の場合は、 DMA read よ
りも CPU が PCI バスを読み書きするほうが速い、といったことがあり、結果
的に性能が高いライブラリが簡単に作れるというメリットがあったのですが、
x86 ではその辺の事情がチップセットや BIOS によってコロコロ変わるのでマ
ザーボードを買ってきて使ってみないとなんだかわかりません。
P4 の場合、初期の i850 チップセットでは PCI の PIO の性能は非常に良かっ
たので、しばらくこれを使っていました。
ただし、 2001年前後は Athlon や Athlon XP のほうが P4 よりも色々性能が
良かった時期で、 2001年の秋から冬には AMD で色々評価しました。結果的に
は、当時のチップセットでは AMD760 と SiS 745 だと性能がでるマザーボー
ドがある、という感じで、2002 年初めには結局 ECS K7S6A というマザーボー
ドを大量に買って 16 ノードノードのシステムを組みました。 DEC Alpha と
は違って、そもそもマザーボードにメモリと CPUを挿した団結で、まともに安
定して動くかどうかは自分でテストしないとわからない、というものでなんだ
か疲れるのですが、まあ、安いし、新製品がどんどんでるからしょうがないの
でしょう。
ホストが複数台になったので並列化もしないといけません。
MPI を使った並列プログラムは 2001年3月にドイツにいった時に書き始めた
ものがあって、それを GRAPE-6 が使るようにして動かすだけなのですが、
まず MPI の性能を測ってみると全然駄目だということがわかって愕然とした
のが記録によると 2002/4/8 です。この時は Planex GE1000TC というとても
安価な GbE カードを使っていたのですが、これで MPI での通信速度を測ると
8MB/s とかで全く話になりません。
この前の年当りから色々お付き合いがあった情報の平木先生のところでネット
ワークの速度を測るプログラムがあるというので、それを使うと 40MB/s くら
いでます。理論ピークは 100MB/s なのでまだ低いのですが、まあとりあえず
使える程度です。 NIC を Netgear GA620T にするとずっと速くなりますが、
このカードは高いのであまり嬉しくなかったわけです。
とにかくゴードンベル賞の〆切に間に合うようにある程度の性能を出す必要が
あったので、プログラムを書き換えて速度が必要な通信部分には TCP/IP のソ
ケット通信を使うようにしました。せっかくなので、ある程度汎用性があるラ
イブラリの形にして、 MPIを使っているプログラムで、OS が Linux なら簡単
に使えるようにしてみています。 これは、さっきでてきた平木研の下見さん
が作ったプログラムを適当に改変して通信ライブラリっぽいものを作った、と
いう代物です。
この前に CERN のグループが作っている MPI の速い実装である GAMMA とかも
使ってみましたが、その時サポートされていた GA620T では性能が今3つくら
いだったので捨てました。今はもうちょっと安定して性能がでるカードもあ
るようです。
この頃から、 PC を組むのに箱に入れるのは面倒なので裸のマザーボードをワ
イヤラックにのっけるだけ、というやり方をするようになりました。これは見
苦しいとかまともな機械に見えないとか色々評判は悪いのですが、メンテナン
スが極めて楽であるという利点はなかなか大きいと本人は思っています。
ホスト計算機はこのあと 2003年初めには 2.53GHz P4 に、さらに 2004年末に
は Athlon 64 3500+ に載せかえています。
2001 年は最終的には 11Tflops の実効性能でゴードンベル賞をいただくこと
ができました。 2002 年には 30Tflops まであげたのですが、この年は全ての
賞を地球シミュレータがもらっていきました。2003年には、2002年と同じ計算
でちょっと速くなっただけでもう一度応募したのですが、何故か賞をいただ
くことができました。なかなか賞というのも奥が深いものです。
GRAPE-6 は GRAPE-4 のように「重力熱力学的振動」という明確なゴールがあっ
たわけではありません。その代わり、もっとも現実的な星団の進化、惑星形成
過程の研究、宇宙論的構造形成といった様々な分野で成果を上げ、また、国立
天文台で共同利用計算機として国内の研究者に計算時間を提供していることを
始め、筑波大学、東京工業大学等国内の研究所、ケンブリッジ大学、アムステ
ルダム大学などの海外の研究所でも多数使われています。