Previous ToC Next

24. パソコンとスパコン (2006/7/12)

この文書は、元々、牧野自身のスーパーコンピューター、スーパーコンピュー ティングの現状と将来についての理解の整理のために書き始めたものですが、 意外に色々な人に読んでいただているようです。 Web ページのリファラを見 ると、2ちゃんねる、スラッシュドットから、大学等の研究者の方、計算機メー カーの内部ページにいたるまで、広い範囲にわたっています。

そういうわけで、今回から数回にわたって、今までは暗黙に前提としていた色々 なことについて整理してみようと思います。最初は、「パソコンとスパコンは 何が違うのか」ということです。

2006 年現在の答は簡単で「大して違わない」です。現在の典型的な例は Cray の主力製品である XD1 と XT3 でしょう。どちらも、プロセッサは AMD Opteron です。 Opteron はメモリコントローラを内蔵してますから、計算機 としてはどう作っても同じで、 CPU にメモリを直結するだけです。但し、1台 で使うわけではなくて、1024 台とかあるいはもっと沢山を専用のネットワー クでつないでいます。

XD1 でも XT3 でも、ハードウェアとしてパソコンとどこが違うか、というと、 CPU を沢山並べて並列計算した時に性能がでるような若干の工夫がある、とい うことと、沢山並べてもかさばらなくてちゃんと計算機室に収まるようなコン パクトな実装がされている、という 2点につきます。

コンパクトな実装は、例えばノート PC でもやっているわけで、スーパーコン ピューターで特別な技術を使っている、というわけではありません。 並列計算用の工夫は、ハードウェアとしては、

というくらいです。

バリア同期というのは、並列計算でのプログラムの並列実行の制御の1つの方 法です。例えば、気象のシミュレーションで、計算する領域を CPU の数 だけ分割して、1つの CPU は小さい領域を担当するとします。流体計算では隣 合う領域のデータが必要になるので、最初は計算を始める時にそのデータを互 いに交換します。で、それを使って自分の領域の1ステップの計算が終わった ら、また隣とデータを交換します。

この時、ちゃんと交換できるためには、相手が計算が終わったことがわかる必 要があります。

もっとも、この場合については、本当は終わったかどうか判定する必要はなく て、

というふうにして、しかも送る動作と受け取る動作はバラバラにできるように なっていればいいのですが、送る動作と受け取る動作が順番にしかできないと か、あるいはデータを交換する相手は複数あるわけですが、それらとの通信が プログラムで書いた順番で起こるとかになっていると、色々考えて書かないと いくつかのプロセッサがお互いの相手がデータを送ってくるのを待っていると いうややこしい状態になります。 また、この例のようにあるプロセッサが誰 と通信するかがあらかじめ決まっている場合はそれでもまだ話が簡単ですが、 計算結果によって通信相手が変わるような場合にはさらに話が複雑になります。

バリア同期は、プログラムの中で「ここで同期」と書く(普通は、何か並列計 算ライブラリのそれ用の関数を呼ぶ)と、 全部のプロセッサがプログラムのそ の行に到達するまで先についたプロセッサは待って、全部着いたら次に進む、 というものです。実現する方法は色々あって、信号線をだしておいてハードウェ アで or をとって、といったものから、イーサネットでの通信ソフトウェアを 使って実現するものまであります。いずれにしても、このようにバリア同期 (単に「同期」ということもあります)しておくと、例えば、「相手がデータを 受け付けられる状態である」ということが保証されるので、色々話が簡単にな ります。

話がそれました。要点は、 Cray の主力機は、基本的には普通の PC を沢山並 べて、その間を少し速いネットワークでつないだようなものだ、ということで す。

では、現在の日本では「スーパーコンピューター」の代名詞的存在である地球 シミュレータや、その後継機である NEC SX-8 はどうでしょうか?これらはさ すがに Intel や AMD のプロセッサを使っているわけではなく、独自開発のプ ロセッサです。しかし、プロセッサの速度自体はそれほど速いわけではありま せん。 地球シミュレータでクロック速度は 500MHzであり、完成時には Intel Pentium 4 は既に 2GHz に達していたことを考えるとむしろ遅いものです。但 し、Pentium 4 は1クロックに2演算しかしないので理論ピーク性能は2GHz の 場合で 4Gflops ですが、地球シミュレータは1クロックに16演算して 8 Gflops となります。が、まあ、大した違いではありません。

違いはメモリとの転送バンド幅と、プロセッサ間ネットワークにあります。ま ず、地球シミュレータでは 8 プロセッサがメモリを共有し、それぞれが 16GB/s の速度で共有したメモリにバラバラに読み書きができます。同じ時期 の Intel Pentium 4 では、 RDRAM を使った場合でメモリとの転送のバンドは 理論ピークが 3.2GB/s であり、実際にはもっと低いのでこれには結構大きな 違いがあります。

さらに、地球シミュレータ全体ではこの 8 プロセッサが単位になった計算ノー ドが640個あるわけですが、それらはクロスバースイッチでつながっていると されています。つまり、どのプロセッサも他の全てのプロセッサにデータを送 ることができ、しかも(送り先がぶつかってなければ)全部のプロセッサが同時 にデータを送ることもできるようになっています。

現在、アメリカやヨーロッパでは、スーパーコンピューターとして主に売れて いるのは IBM の大型サーバです。これは色々な意味で NEC SX-8 と Cray XT3 の中間にあって、

ですが、メモリバンド幅、ネットワークバンド幅のどちらも地球シミュレータ に比べてかなり見劣りするものになっています。 IBM は最近 BlueGene/L と いうものをだしていますが、これについてはもうちょっと後で詳しく紹介しま す。

値段ですが、地球シミュレータや SX-8 はプロセッサ1つ当り1千万円、 IBM はもうちょっと安くて数百万、Cray XT3 は100万前後、となります。普通の PC はハイエンドでなければ 10万そこそこですね。

プロセッサあたりの理論ピーク性能はせいぜい2倍しか違わないので、値段あ たりの性能は実は普通のパソコンのほうが最大 50倍近く良いことになります。 次回はそのようになったのは何故か?を考えてみます。そのためには、スパコ ン、パソコンのそれぞれが、過去数十年間にどのように発展してきたか、を振 り返ってみる必要があります。
Previous ToC Next