[画像のクリックで拡大表示]
[画像のクリックで拡大表示]
[画像のクリックで拡大表示]
[画像のクリックで拡大表示]
[画像のクリックで拡大表示]
[画像のクリックで拡大表示]

 スーパーコンピュータ(以下スパコン)という名前は知っていても、実際に触れたことがある人は滅多にいないだろう。もちろん、私だって同じだ。普段使っているパソコンとどこが違うのか? 何のために使われているのか? どうやってプログラムを作るか? 実に興味深い。そんなわけで、東京都府中市にあるNECの府中事業場を訪問し、同社のスパコンであるSXシリーズを取材させていただいた(2004年8月)。お話を聞かせてくれたのは、HPC販売推進本部の高原さんと花平さんである。

そもそもスパコンって何?

 まず、スパコンとはどのようなコンピュータなのかを説明してもらった。

高原:コンピュータの性能はどんどん上がるので、ここより上がスパコンだというはっきりした定義はないんです。「その時代で最も速く、構成上も最大のコンピュータ・システム」と思っていただければいいでしょう。スパコンの性能は、1秒間に実行できる浮動小数点数演算の回数であるFLOPS(Floating Point Operations Per Second)という単位で表すのが一般的です。現在、一番速いスパコンの性能は数十テラFLOPS(1テラは1兆)くらいです。つまり1秒間に浮動小数点数演算を数十兆回実行できることになります。

 数十兆とはあまりにも大きな数字でピンと来ない。パソコンの速さをマラソン走者にたとえれば、スパコンの速さはロケットに相当するそうだ。この計算パワーを使うと、実際の実験では確かめられないような長い時間、短い時間、そして分子、結晶のように小さなものから、気象、環境のように大きなものまで、コンピュータの中でシミュレートできる。それの結果で、現実世界の動きを予測できるそうだ。

 それでは、ハードウエアのスペックは、どうなっているのだろう?

花平:CPUがあってメモリーを読み書きするという構成は、スパコンもパソコンと同じです。ただ、SXシリーズのCPUはベクトル・パイプライン処理用に作られた「ベクトル・プロセッサ」と呼ばれるもので、パソコンのCPUとはアーキテクチャが違います。

 「ベクトル・パイプライン処理」などという耳慣れない言葉が出てくると私も???なので、わかりやすいたとえ話をしていただいた。池から火災現場にバケツの水を運ぶとしよう。池がメモリーで、火災現場がCPU内の演算装置に相当する。スカラー処理は、池で水をくんでから火災現場に運ぶまで一人でこなすイメージである。それに対して、ベクトル・パイプライン処理では、池から火災現場まで複数の人が並んでバケツリレーで水を運ぶイメージだ。どう見たって、バケツリレーの方が効率的だ。だからスパコンのCPUは速い。さらに、スパコンは複数のCPUを並列に動かしている。これはバケツリレーのラインを増やすのに相当し、ますますスピードアップできるわけだ。

花平:従来のスパコンのCPUは、複数のLSIから構成されているのが一般的でした。SXシリーズのCPUも昔は数十個に分かれていましたが、今は1個(1チップ)の超LSIになっています。集積するとデータをすばやくやり取りできるようになるので、計算スピードも上がります。1チップ化したおかげで1個のCPUで11ギガFLOPS(1ギガは10億)というスピードを実現できました。

 CPU1個の性能もすごいのだが、このCPUは複数のCPUを集めた「ノード」という単位で動く。SX-7という最上位のモデルでは1ノードに32個までCPUを積める。同じノードの中のCPUは同じメモリーを共有していて、隣のCPUが今計算したばかりの結果をすぐに取り出せるようになっている。1ノードのメモリー容量は16G~256Gバイト。ノードをいくつもつなげた「マルチノード」のシステムにすると、最大でCPUが2048個、メモリー容量16テラバイトのシステムになる。この最大構成のシステムの性能は23テラFLOPSになる。

 SXシリーズのきょう体は、シングル・ノードでも大きなタンス1個分ぐらいのサイズがある。マルチノードになると、まるでタンスがいくつも並んだ家具屋のショールームのようだ。その姿には圧倒されてしまう。きょう体のデザインも、なかなか凝っている。紫色の墨を流したイメージになっていて、日本らしい情緒と気品が感じられる。花平さんは、スパコンをスポーツ・カーのようだと思っているそうだ。スポーツ・カーと同様に、速いだけでなくデザインもかっこいい。

スパコンのプログラムってどうやって作るの?

 プログラミング経験がある人なら、どうやってスパコンのプログラムを作るかが気になるだろう。SXシリーズのSUPER-UXというOSは、UNIX System Vに準拠したOSだ。基本的な操作は普通のUNIXマシンと同様で、パソコンでもよく使われるC言語やJavaも使える。ただし、ほとんどのアプリケーションは、FORTRANで記述される。様々な制御構造や再起呼び出しを使ったC言語やJavaのプログラムより、DO文を使ったFORTRANのループ表現の方が、ベクトル・プロセッサがうまく動くそうだ。

 一つのプログラムを数十分~半日ぐらい動作させて、結果が出たら条件を少し変えて再度シミュレーションするといった使い方が多い。スパコンは、科学者にとって一種の実験装置なのだ。これまで、理論がわかっていても計算が複雑すぎて実験できなかったことであっても、スパコンなら短時間に結果を出してくれる。  最近では、金融の分野でもスパコンの活用が研究されているそうだ。もしも株価の変動を高い精度で予測できたら誰かに大儲けされてしまいそうだと思ったが、スパコンを使う以前に、うまくシミュレートできるモデルを作らなければならないので、それほど簡単なことではない。

スパコン使いになる三つの条件

 誰でも、一度はスパコンを使ってみたいと思うだろう。スパコンを使いこなすには、どのような知識があればよいのだろう? 高原さんは、三つの条件を挙げてくれた。

(1)FORTRANでプログラミングできること
CやJavaのプログラムが動くといっても、スパコンの得意分野は科学技術計算だ。それにはやはりFORTRANが適している。

(2)ベクトル並列処理の最適化に関するノウハウを身に付けていること
スパコンの特性をきちんと理解してプログラムを書かないと、スピードに数十倍もの差が出たりするそうだ。配列の取り方やループの回し方などに、スパコンらしいコーディング方法がある。

(3)特定分野の科学技術の専門的な知識があること
問題はこれだ。スパコンは、コンピュータ技術者の道具ではなく、何らかの特定分野に長けた科学者の道具なのだ。大学の数学で習う微分方程式を使いこなせて当たり前ぐらいの知識が必要となる。私には、ちょっと無理かなぁ。ちなみに、高原さんは気象予報士の資格を持っている。それぐらいの専門家でないと、スパコンを使いこなせないのかもしれない。

スパコンを使って世界一になろう

 最後に、スパコンの楽しさを語っていただいた。高原さんは、NECが基本設計を担当した「地球シミュレータ」というスパコンのアプリケーションが世界最高スピードであると認定され、優れた高性能計算技術に贈られるGordon Bell賞を受賞したことが嬉しかったそうだ。地球シミュレータは、日本の国家プロジェクトとして開発され、その当時で世界最速の40テラFLOPSの性能を誇ったスパコンだ。

 花平さんは、大学の先生がスパコンを使って円周率を2億ケタまで計算したとき、結果を打ち出した用紙で体育館が一杯になったことに感動したそうだ。これは、当時世界最高ケタ数の円周率として、ギネスブックに載ったという。

 お二人とも、スパコンにかかわることで世界一になるチャンスを得たのだ。世界記録は、やがて更新されるだろう。そうなったら、もっともっとすごいスパコンを開発してほしい。パソコンの世界では日本製品の陰が薄くなっているが、スパコンの世界では日本製品が健在なのだ。がんばれ日本のスパコン!