Previous ToC Next

25. スパコンの歴史 (2006/7/25)

(2010/7/14 追記)

以下、主に FACOM 230-75AP について、間違いを修正しています。

(2010/7/14 追記終わり)

(2013/5/13 追記)

いくつか誤字を訂正しました。

(2013/5/13 追記終わり)

というわけで、スパコンが過去どう発展してきたか、という話です。

スパコン、あるいはスーパーコンピューターという言葉がいつごろ生まれたの かというのははっきりしません。定義も色々あります。ただ、最も単純で実際 的な定義は、

「その時代で最も速い汎用計算機」

というものでしょう。以下、単にそういう意味に使うことにします。 そうすると、定義から最初の汎用計算機はスーパーコンピューターであるとい うことになります。

最初の汎用計算機が何であったかはなかなか議論があるところで、それだけを 扱った本が何冊もあります。また、裁判とかもあったようです。が、現在の計 算機の発展に直接つながったものとしてはペンシルベニア大学の ENIAC が重 要であることは疑いないでしょう。これは、真空管 18,000 本で各種演算器や 記憶装置を実現したものです。

但し、ENIAC は私達が普通に考える「プログラムが走る」計算機ではなかった ようです。具体的にどうやったかは詳しく書いてある資料がなかなか見つから ないですが、「配線」を変更することで解く方程式を変えた、ということのよ うです。

まあ、科学技術計算用計算機、という観点からすると、プログラムをどうやる か、というのは計算機科学が専門の人が色々いうほど大きな問題ではなくて、 自分が解きたい問題を解かせることができるかどうかが問題です。それは、 多くの場合に計算速度、計算精度、メモリ容量といったことで決まります。 そういう観点からは、 ENIAC は十進数 10桁の数を 20個記憶でき、1秒に 5000回加算、14回乗算を行うことができた機械、ということになります。

今の計算機ではクロックにあたる、パルス周期は 100 KHz であったとのこと なので結構速く、その割には乗算速度は遅いですが、当時いくつかあったリレー を使った計算機では乗算に数秒かかっていたのに比べるとほぼ 100倍の速度で あり、スーパーコンピューターというにふさわしいものであったでしょう。

この後のスーパーコンピューターの発展史は、大雑把に以下の時期にわけられ ます。

  1. パイオニアの時代 1950 年代半ばまで
  2. IBM の時代 1960年代半ばまで
  3. Seymour Cray の時代 1980年代前半まで
  4. 日本の時代 1990年代前半まで
  5. スカラ並列機と地球シミュレータ 2005年まで
  6. 地球シミュレータ以後 2005年以降

簡単に特徴をまとめてみましょう。大体こんな感じです。

以下、もう少し詳しく各時代を解説してみます。

25.1. パイオニアの時代 1950 年代半ばまで

この時代は、要するにまだ計算機を作る方法の基本的なところがまだ良くわかっ ていなかった時代、といっていいと思います。 ENIAC は普通の意味でプログ ラム可能ではなかったわけですが、それが改良されてペンシルベニア大学の EDVAC、 マンチェスター大学の Mark-I、 ケンブリッジ大学の EDSAC、プリン ストン高等研究所の IAS コンピュータとその親戚である MANIAC、ORDVAC 等 につながりました。 さらに、商業ベースで計算機を作ろうという話がでてき て、 ENIAC, EDVAC の主要人物であったエッカートとモークリーの UNIVAC を 始めとする沢山の計算機会社ができます。

計算機の設計手法も急速に進歩し、さらに真空管からトランジスタへ、という 構成要素の変化も始まりました。また、水銀遅延線やブラウン管メモリから磁 気コアメモリへ、磁気テープからドラム、ディスクへ、といった記憶装置の変 化、紙テープからパンチカードへ、といった変化も多くはこの時期に始まりま す。

25.2. IBM の時代 1960年代半ばまで

IBM は元々計算機メーカーではなく、パンチカードを使ったデータ処理のため の機械を始めとする事務処理のための機械(タイプライターといったものも含 む)の会社でした。

リレー式の計算機をハーバード大学と共同で作るなど、早い時期から計算機に は関心があったようですが、真空管を使った完全電子式の計算機に参入するの はレミントン・ランド等の他の事務機メーカーに比べても早くはありませんで した。事務機で確固とした地位を築いていたためもあるでしょう。

しかし、 IBM 701, 702/705, 704/709 といった真空管式計算機、さらには 7090, 7094 といったトランジスタ計算機で、あっというまに IBM が計算機の 代名詞になるところまで到達し、計算機の業界を支配します。

スーパーコンピューターの歴史、という観点からは重要なのは "Stretch"、 あるいは IBM 7030 でしょう。

これは、1960年代初めにおける IBM のフラグシップマシンであっただけでな く、スーパーコンピューターの歴史上数え切れないほどある失敗の一例として も重要です。1956 年に開発が始まった Stretch は IBM 704 の 100 倍の性能 を目指していたそうです。実際に実現した性能は目標の半分で、 IBM はその 分値段を割引いたそうで、結果として作るだけ赤字になった、という話です。

7030 の第1号機は Los Alamos Scientific Laboratories に、第2号機はNSA に納入されています。これらの研究所は現在にいたるまでスーパーコンピュー ターの重要な顧客でありつづけています。 Los Alamos は核兵器等まで扱う軍 の研究所であり、 NSA は国家安全保証局で、ここでは暗号関係の計算に使わ れているものと想像されます。

7030 の後、 IBM は 360/91、中止された ACS プロジェクト、 360/195 等の スーパーコンピューターというべき規模の計算機を開発しますが、常に Seymour Cray を擁する Control Data の 6600, 7600 に性能では遅れをとり つづけることになりました。

25.3. Seymour Cray の時代 1980年代前半まで

以下は、 Control Data が 1963年に CDC 6600 をアナウンスした時に当時の IBM の社長が社内に回したと言われる有名なメモです

 MEMORANDUMAugust 28, 1963
 
 Memorandum To: Messrs.  A. L. Williams
                         T. V. Learson
                         H. W. Miller, Jr.
                         E. R. Piore
                         O. M. Scott
                         M. B. Smith
                         A. K. Watson

 Last week CDC had a press conference during which they officially
 announced their 6600 system. I understand that in the laboratory
 developing this system there are only 34 people, "including the
 janitor." Of these, 14 are engineers and 4 are programmers, and
 only one person has a PhD., a relatively junior programmer. To
 the outsider, the laboratory appeared to be cost conscious, hard
 working, and highly motivated.
 
 Contrasting this modest effort with our own vast development
 activities, I fail to understand why we have lost our industry
 leadership by letting someone else offer the world's most
 powerful computer. At Jenny Lake, I think top priority should
 be given to a discussion as to what we are doing wrong and how we
 should go about changing it immediately.
  
                                         T. J. Watson, Jr.
 TJW,Jr:jmc
 cc: Mr. W. B. McWhirter

 Reproduced in A Few Good Men from Univac.
当時既に Cray は ERA (後に Remington Rand に買収され、Eckert と Mauchly の ECC とともに UNIVAC の一部になる)で 1103、Control Data で 1604 を開 発し、天才的なエンジニアとして知られていました。 1604 は比較的小規模な システムでしたが、6600 は最大級の計算機であり当時として驚異的な 100ns のサイクルタイム (10MHz クロック)で 3Mflops 程度の性能を実現しました。

6600 はトランジスタを使った計算機で、まだ集積回路ではありません。7600 も同様です。 Crayが集積回路を使うのは 1976 年に出荷された Cray-1 が最 初になります。

6600 にしても 7600 にしても、そのために高速のトランジスタを開発したわ けではなく、その高速性は主に論理設計、回路設計とパッケージングによるも のだったということができます。パッケージングは特に重要で、大規模な回路 を小さな範囲に高い密度で詰め込むことで配線を短くし、高速な動作を可能に しています。 7600 では 30 ns (33MHz) までクロックを上げています。但し、 6600 から 7600 への性能向上はそれほど大きなものではなく、また 7600 は アーキテクチャ上使いにくい面もあり、 7600 は 6600 ほどは売れなかったよ うです。

そのあと、 Cray は 8600 の開発を始めます。これはクロック 125 MHz で、 さらに 4 CPU がメモリを共有する機械であったと言われています。ここでも Cray は集積回路を使わず、トランジスタで回路設計をしていたと言われてい ます。

このプロジェクトはしかし様々な理由から Control Data の中ではサポートさ れず、結局 1972 年に Cray は Control Data を去り、 Cray Research を設 立します。1925 年生まれですから、この時既に 47歳です。そこからわずか4 年で有名な Cray-1 を発表するところまできます。 Cray-1 は CDC で Cray が設計した一連のマシン、特に 8600 とは大きく異なる、極めてシンプルなマ シンでした。

その特徴は、なんといってもベクトルプロセッサのアーキテクチャにあります。

ベクトルプロセッサ自体は、考え方としては既に新しいものではありませんで した。 CDC が Cray の 8600 を開発中止にした理由の一つは、同時期に開発 していたベクトルプロセッサ STAR-100 を完成させるための資金が必要だった からです。

STAR-100 は memory-to-memory アーキテクチャをもつベクトルプロセッサで した。つまり、例えば

   do i=1,n
      a(i) = b(i)+c(i)
   enddo 
という DO ループが、アセンブラ1命令に翻訳され、直接実行されるのです。 これはこれで悪くないアーキテクチャなのですが、当時のアプリケーションの 大きさ、コンパイラの状況を考えると大きな問題がありました。命令の実行が 始まって、最初の結果がメモリに届くまでに 100サイクル以上の時間がかかっ たのです。1サイクルに 2 演算とか4 演算までできる設計でしたから、これは 1つのベクトル命令で 400演算してやっとピーク性能の半分、800 しても 2/3 しか出ない、ということを意味します。 しかし、当時は 2次元の流体計算で も メッシュで大きいほう、 3 次元なら1方向 100 は無理、という 頃ですから、これは、現実に扱える程度の問題サイズでは性能がでない、とい うことを意味します。

今から考えると、そんなことは作る前からわかりきっている、と思うわけです が、これは少なくとも CDC の STAR-100 に関わっていたデザイナーや、 TIで やはり同様なベクトルプロセッサ (TI ASC) を開発していた人達には見えてい なかった、ということになります。 Cray はもちろん CDC にいた頃から STAR-100 には批判的であったわけですが、 8600 の開発が難航していたのも 確かでありそれが公平な判断とは他の人には思えなかったことでしょう。

それでも、当時の技術ではベクトルプロセッサは有効な方向であることは明ら かでした。これについては既に第 3 回で述べた通りです。

Cray は、 Cray-1 においてベクトル命令を採用しますが、memory-to-memory ではなくベクトルレジスタというものを導入しました。普通のスカラ計算機で はレジスタというのは昔からあったわけです。これは、要するに非常に小規模 で高速のメモリであるわけで、例えば 8 語とか 32 語といった語数である代 わりに主記憶よりずっと高速なものです。非常に初期の計算機では、 レジスタは演算結果をしまうもの(アキュムレータ、 Aレジスタ)とアドレスを しまうもの(Aレジスタに対してBレジスタと言われたりした)しかなかったりし ました。この時には、命令セットは演算命令でもメモリアドレスを1つ、ある いは2つ指定するものが多かった。 1 つでどうやって例えば a=b+c を実現す るか、というのが気になると思いますが、

   変数b(に対応するメモリアドレスの中身) を A レジスタにロード
   変数c と A レジスタの中身を加算して結果を A レジスタに格納
   A レジスタの中身を変数 a に格納
というような手順になります。こんなややこしいことをしていては遅くならな いか?と思うわけですが、初期の計算機では問題になりませんでした。実際の 演算に、メモリから読んでくるとか結果をメモリにしまうとかに比べてずっと 長い時間がかかったからです。

しかし、半導体技術が進歩し、トランジスタが高速、小型になった結果、演算 は速くなりましたがメモリアクセスはそれほどは速くなりませんでした。一つ の理由は、1970年代初めまではメモリは磁気コアで、書き込み、読出しにマイ クロ秒単位の時間がかかっていたからです。

Cray は、CDC 6600 で、メモリアクセス命令と演算命令を分離することでこの 問題をある程度解決していました。つまり、演算結果やオペランドを格納する レジスタを1つから 8 個に増やし、演算はレジスタ間で行うようにしたのです。 そうすると、先程の a=b+c は

 b をレジスタ0(例えば)にロード
 c をレジスタ1にロード
 レジスタ 0 とレジスタ1 を加算して結果をレジスタ 2 に格納
 レジスタ 2 の値を a に格納
となります。さっきのメモリから演算するのに比べてもっと命令数が増えて何 もいいことはないのでは?と思うかもしれませんが、そうではありません。 というのは、色々並列に実行できる可能性が増えるからです。例えば

 a=b+c
 d=e+f
だと、 b, c をレジスタにいれた(load した)あとで、演算を始めるのと同時に e, f のロードを始めることができます。もっとややこしい計算だと、もっと いろんな並列に実行できる命令をを実行時に検出して並列実行できます。 1つの A レジスタが常に演算に関係していると、そんなことは不可能だったわ けです。複数のレジスタをもつ計算機は CDC 6600 以前にもありましたが、演 算をレジスタ間だけにすることでハードウェアの単純化と高速化を同時に実現 したのは Cray が最初でした。

この発想は、 1980 年前後になって RISC という新しい名前で呼ばれることに なります。

話がそれました。 Cray は、 CDC 6600 で導入した汎用レジスタの概念を、ベ クトルプロセッサにも適用したのです。ベクトル命令は、一般には長さがわか らないのでレジスタをどう作ればいいかもわからなかったわけですが、それを 「長さは 64」と決めてしまいました。これは、ハードウェアとしてはそれく らい長さがあれば、レジスタ間命令では理論ピークに近い性能がでること、ま た、半導体メモリになってメモリも高速化したので、 STAR-100 に比べてメモ リアクセス命令でも短いベクトル長で性能がでるようになったこと、によって いると思います。ベクトルレジスタは結構大きなハードウェアになるので、語 数は性能がでる範囲でなるべく小さくするべきものでした。64語8本という Cray-1 のベクタレジスタは、Cray-1 で使った半導体技術では浮動小数点乗算 器と同等のハードウェア量であったはずであり、設計の観点がそういうもので あったことが伺われます。

ちなみに、1チップに集積することを考えると、64語8本のベクトルレジスタは 乗算器よりはるかに大きくなります。それにもかかわらずこの程度、あるいは ずっと大きなベクトルレジスタをつけた設計になっている多くのベクトル計算 機は、 Cray の設計の真似はしていてもその設計の精神を理解できてはいない、 と私は思います。

Cray-1 では、サイクルタイムも CDC 8600 の計画の 8ns には及ばないものの 7600 の 30ns よりも大幅に短い 12.5ns まで短縮したこともあり、

ということになりました。少し前の 1974 に完成した STAR-100 はサイクルタ イムが 7600 よりも遅い 40ns となり、既に述べたようにベクトル命令でもな かなか性能がでなかった上にスカラー命令はもっと遅い、という代物であった ために全く売れませでした。

CDC は STAR-100 をベースにメモリを半導体メモリにし、全体設計もやり直し、 大規模なゲートアレイを使って高速化を目指した Cyber 205 の開発を始めま すが、これは当初の目標であったサイクルタイム 10ns から 20ns に落として 1980年代初めにようやく完成します。これは理論ピーク 400Mflops (加算、乗 算4演算並列) のものまで存在しましたが、出荷されたものは殆ど 200Mflops のもので、 Cray-1 や、Cyber-205 とほぼ同時期に出荷が始まった Cray-XMP とは競争しようがないものでした。

Cray 本人は、 Cray-1 の後 Cray-2 の開発に進みます。最初はガリウム砒素 (GaAs) デバイスを使って高速化するつもりだったようですが、結局シリコン に戻ります。そういったこともあって開発は遅れ、出荷できたのは 1985 年と Cray-1 からほぼ 10年が過ぎていました。ピーク性能はわずか 12倍の 2 Gflops であり、10年間の進歩としては十分ではありませんでした。

Cray Research 内部では、 Cray-2 の遅れもあり Cray-1 ベースで改良したマ シンの設計が進みます。これが 1982 年に出荷が始まった Cray-XMP です。サ イクルタイムは最終型で 9.5 ns と、Cray-1 からさほど改善されていません が、メモリバンド幅が大幅に強化され、一定幅や間接アドレスでのメモリアク セスも高速化し、さらに 4 CPU までのマルチプロセッサが可能になったこと で、多くのアプリケーションで性能を大きく改善しました。

この後、殆ど命令セット、アーキテクチャの変更をすることなく、Cray Research では YMP, C-90, T-90 と XMP の後継機がつくられていきます。 これに対して、 Cray 本人は Cray-3 の開発にかかりますが、 Cray Research から離れて Cray Computer Corp. を設立します。しかし、GaAs を使って 2ns のサイクルタイムを実現した Cray-3 は 1993 年にはほぼ完成したものの1台 も売れることはなく、 1ns のサイクルタイムを目指して Cray-4 の開発中に Cray Computer は倒産することになります。

その後も Cray は SRC を設立して新たな並列計算機の開発に挑みますが、 1996 年に交通事故で亡くなりました。

25.4. 日本の時代 1990年代前半まで

前節で見たように、 Cray-1 の完成後、アメリカでのスーパーコンピューター の開発は停滞します。Cray 本人は Cray-2 を完成させるのに手間どり、 Cray Research はなにも新しいことができず、 CDC は Cray-1 に追いつくのに 5 年を要していたからです。この間に IBM やら他の会社が何かできなかったも のか?とも思いますが、そうもなっていません。

これは、日本の計算機メーカーには大きなチャンスでした。1970年代末に日立は 付加アレイプロセッサ、富士通の場合には 本格的なベクトルプロセッサである FACOM 230-75AP を開発していますが、 Cray のマシンに対抗する、あるいは上回る性能を発揮するベクトルプロセッサは 1982 年の富士通 VP-200、1983年の日立 S-810、 1985年の NEC SX-2 を待つことに なります。

これらはいずれも 1 Gflops 前後の速度を 1 プロセッサ(同時加算、乗算 4 演算づつ) 程度で実現し、ベクタレジスタをもつ Cray 的な設計と、複数 のパイプライン演算ユニットを並列に動かす STAR-100/Cyber205 的な設計の 長所を合わせたバランスのとれたデザインになっています。さらに、 Cray と は違って半導体製造からやる垂直統合型の企業であり、スーパーコンピューター と大型メインフレームで開発費を分散させることができたこともあって同時期 の Cray のシステムにまさる(Cray-2 には負けますが)サイクルタイムと単体 性能を実現しました。

スカラー部分の命令セットは、日立、富士通の場合には IBM 互換のままであ り、 Cray 並の高速化は難しいものでしたが、ベクトル性能は高く、またコン パイラも Cray CFT77 が 80 年代後半にでてくるまでは日本メーカーの製品の ほうがはるかに優れていました。 このため、アメリカ以外では富士通、NEC の製品は大きなマーケットをもつようになります。

アメリカでは、色々不可解な貿易障壁が設定されたためもあり、日本のメーカー はこの時期殆ど商売することができませんでした。

この後、日立は 1987 年にほぼ性能を 3 倍にした S-820 を、富士通は1988年に VP-2600 を投入します。これらは、性能的には NEC が 1989 年に投入した、 4CPU 共有メモリで理論ピーク性能 22 Gflops の SX-3 に対抗するべくもない ものでしたが、若干先行したこと、また日本のマーケットでは性能だけが問題ではない、ということも ありある程度は売れています。その次の世代では、日立は SX-3 とほぼ同じ構 成ですが 1.5 倍程度速い S-3800 を 1993年になってやっと出荷したのに対し て、富士通は革命的な VPP-500 を 1992 年に発表、その原型を航技研数値 風洞として製造、1993年に納入します。 これは当初 140 プロセッサ、 238Gflops という驚異的 な性能を実現し、共有メモリベクトル並列計算機の時代に終止符を打ちました。 日立はこの時点でベクトルプロセッサから撤退し、筑波大学の CP-PACS プロ ジェクトで開発された疑似ベクトル機能をもったスカラー並列機をスーパーコ ンピューターとして販売することになります。これは SR-2201, SR-8000 と続 きますが、その次の SR-11000 は基本的には IBM Regatta そのものでプロセッ サの機能付加はしていません。これは、 Regatta そのものがほぼ疑似ベクト ルと同等の機能を実現できるハードウェアプリフェッチ機構を備えたものであっ たからでもあります。

VPP-500 はバイポーラ半導体(BiCMOS, GaAS も)を使っていましたが、クロッ クは 100MHz(NWT では 105MHz) とそれ までのベクトル並列機から下げることで消費電力とサイズを小さくしています。 166 台(設計最大は 222台)もの並列動作を可能にしたのは、それまでのベクトル 並列計算機が共有メモリ構成だったのに対して、プロセッサ毎にローカルメモ リにしてそれらをクロスバーネットワークでつなぐ分散メモリアーキテクチャ にしたためです。これは、富士通 230-75AP の時代からユーザーとして日本の スーパーコンピューター開発を指導し、地球シミュレータの開発をも指揮した 航技研の三好氏と富士通の共同開発の成果です。

VPP シリーズは CMOS 化した VPP-300、それを高速化し、接続台数を増やした VPP-700, VPP-5000 と発展していきますが、 VPP-5000 の後継機は開発されま せんでした。ここに、富士通の輝かしいベクトル計算機開発の歴史は幕を閉じる ことになります。

一方、 NEC はいち早く CMOS 化して 32 プロセッサまで共有メモリとし、さ らにそれらを高速ネットワーク接続することで 512 プロセッサまで構成可能 という SX-4 を投入します。富士通 VPP に比べて価格性能比では劣るものの、 共有メモリ構成による使いやすさもあり一定のシェアを確保します。さらに、 地球シミュレータの契約を取り付けたことで 8プロセッサまで共有メモリの SX-6 を開発し、それを 32プロセッサまで共有に拡張した SX-7、ノード性能 を2倍にひき上げた SX-8 と続き、現在もその後継の開発が続いています。

25.5. スカラ並列機と地球シミュレータ 2005年まで

前節で、 1980年代にはアメリカではスーパーコンピューター開発が停滞した、 と書きましたが、これには異論があるかもしれません。というのは、 1980年 代こそ、アメリカで多種多様な並列計算機の研究開発がなされた時期だからです。 研究開発がなされた機械は無数にありますが、科学技術計算である程度高い性 能を実現したものに限定するとそれほど多くはありません。

ピーク性能として、例えば Cray-XMP や YMP を最初に超えたのは Thinking Machines の CM-2 です。 CM (Connection machine) は W. Daniel Hillis の MIT での博士論文が元になっており、元々は人工知能のアプリケーションのた めの並列処理に適した構成、ということで考案されたものです。

最初に作られたものは CM-1 と呼んでいるもので、これは 1 ビットプロセッ サを1チップに16個いれたものを最大 4096 チップ並列につなぐもので、チッ プ間の結合はハイパーキューブでした。動作クロックは 5 MHz とかで、浮動 小数点演算には 1000クロック以上かかるので1プロセッサあたり数 kflops、 全体で数100Mflops 程度でした。

しかし、ファインマンのアドバイス等もあって、浮動小数点演算チップをつけ て浮動小数点演算性能を強化した CM-2 が開発されます。これは 1987 年頃で あり、最大構成では 2000個の Weitek 1164/1165 チップセットを使って 20Gflops を超える理論ピーク性能を実現しました。当時のCray の最新鋭であ る YMP に比べて性能では 5 倍以上、消費電力、価格では数分の一であったこ とになります。

CM-2 は CMOS 高集積 LSI を使った大規模並列計算機のポテンシャルを示すも のではありましたが、広く使われるにはいたりませんでした。その大きな理由 は、まともなソフトウェアができるまでにとても時間がかかったことです。

個人的な話になりますが、私は 1987年 10-12 月と TMC で CM-2 を使って多 体問題シミュレーションをするためのプログラム開発をしていました。当時は C* と呼ばれていた C の拡張版が動作するようになりつつあったところで、あ る程度まともに動く言語は *Lisp と呼ばれる、これは Lisp の拡張というよ りは、ホスト計算機の Lisp から CM のアセンブラを呼べるようにしたもの、 という感じの代物でした。 我々 (私、プリンストン高等研究所の Piet Hut, Josh Barnes) は C* でプログラムを書くことにしました。

しかし、これはバグだらけの上に遅い代物で、プログラムを書いているのかコ ンパイラのバグを見つけているのか良くわからないような作業でした。バグも 結構あからさまなもので、アセンブラコードを見るとすぐにでるべき命令 がそもそもでてないとわかる、といったものが多かった、つまり、まだあまり だれも使ってないし、開発人員もあまりいない、という感じのものでした。速 度も遅いので、結局計算時間が問題になるところでは全部アセンブラ命令を並 べる、という感じでした。

当時から、数値計算のマーケットに売るためには Fortran があったほうがよ い、ということは理解はされていたようですが、まともな Fortran がでてく るのはその数年後になります。このため、 CM-2 はハードウェアとして優位に 立っていた数年間を、まともなコンパイラが存在せずアプリケーションを書き ようがない、という状況のために棒に振ったことになります。

CM-Fortran は非常に良くできた言語で、 Fortran-8X (と当時は呼ばれていた ような気がします)の配列演算表記を取りいれ、最小限の拡張で CM の SIMD 構成を使うこと、また、元々の 1bitプロセッサではなく Weitek の FPU をプ ロセッサ単位とみなすプログラミングモデルにすることで、

を実現しました。逆にいうと、1990年頃まではこれらは実現されておらず、な かなか性能がでないシステムであったわけです。優れたハードウェアに対して 適切なソフトウェアを用意するのに時間がかかりすぎて商品として失敗する、 というのはスーパーコンピューター業界ではありふれたことではありますが、 そのなかでもかなり目立った例の1つであると思います。

TMC は 1992 年になって後継の CM-5 を発表しますが、これは Sun SPARC マ イクロプロセッサに独自開発のベクトルプロセッサをつけたものをノードとす る MIMD 並列計算機でした。それでも CM-2 の経験は良く生きており、ソース レベルでのソフトウェア互換性はあって性能も結構でる良い機械でしたが、 その後の汎用マイクロプロセッサの急速な進歩に独自ベクトルプロセッサでは 対応できず、1994 年にいわゆる chapter 11 申請を行います。その後メーカー として復活することはありませんでした。

今になって考えると、これは 1992 年という時期になってベクトルプロセッサ アーキテクチャを採用したことの必然的な結果であったと思います。

CM-5 に話がそれました。そういうわけで、 CM-2 は CMOS VLSI の威力を示し た最初の機械である、というのがここでは重要なことです。(調子のいい機械 で)8MHz と、同時期のベクトルスーパーコンピューターの 1/10 以下の動作ク ロックながら、圧倒的に高い並列度でより高いピーク性能を実現したわけです。

この流れは、もちろん TMC だけが追求していたわけではなく、多様な計算機 メーカーや、大学等の研究者が様々なアプローチで追求していました。この中 で重要なのは、 Intel iPSC の系列でしょう。

次の章でもう少し詳しく述べることになりますが、 Intel は1971 年に世界最 初の1チップマイクロプロセッサである 4004を完成させ、そのあと 8 ビット の 8008, 8080, 16ビットの 8086, 80186, 80286、 32ビットの 80386, 80486, Pentium と1チップマイクロプロセッサの性能を順調に向上させてきま した。当初は Intel 以外にも多数マイクロプロセッサプロセッサメーカーは あり、また 1980-90年代の RISC 時代には多くの計算機メーカーが独自 RISC プロセッサを開発しましたが、高速汎用計算機用としては殆ど絶滅することに なったのは皆さんすでにご存知の通りです。

ここでは、そこまでいかない 80-90 年代の話です。CMOS マイクロプロセッサ を使った並列計算機が Cray 等のベクトルプロセッサに対して価格性能比で有 利になるのは現在から振り返ると上の CM-2 で使ったような1チップで浮動小 数点演算を実行でき、10Mflops とかそれ以上の速度が可能になった 1985年前 後になります。それ以前から、 80286+80287 ペアを使った並列計算機の試み 等はありましたが、価格性能比が優位とはいいがたいものであったと思います。

しかし、例えば Weitek チップを大量に使った並列計算機は CM-2 以外にあま り例がなく、価格性能比という観点から重要なのは、Intel 80860 を使った iPSC/860 と、その後継の Touchstone Delta, Intel Paragon ということにな ります。現在から振り返ってみると、Weitek チップを大量に使えば素晴らし い価格性能比が実現できる、というのは殆ど自明なことに思えるのに、それを ほとんど誰もやらなかったのは何故か?というのは重要な問題ですが、例えば 日本では筑波大学の星野先生を中心とするグループが QCDPAX を作りました。 これは Weitek ではなく LSI Logic 64132 ですが、それに制御用の 68020 と インターフェースのゲートアレイをつけたものをノード計算機とする超並列機 でした。QCDPAX は科学技術研究費補助金(特別推進研究)で開発されたもので すから、研究費は3億円程度のはずで、それで 1989年にほぼ世界最速の 14Gflops に到達した記念すべき機械です。 しかし、 QCDPAX は同時に、汎用プロセッサ+数値演算専用チップでノードを 構成する並列計算機、というアプローチの限界をも示しています。つまり、 同時期のベクトルプロセッサに比べて、実験システムでは確かに 10 倍程度価 格性能比がよいのですが、その程度に留まる、ということです。この結果が、 商品化すると価格性能比が 3 倍程度になり、さらに 1-2 年たつと競争力を失 うことになります。

これは、数値演算専用チップというのが、実は 1985 年から 1990 年頃までと いう非常に短い期間だけに成り立つ製品であった、ということでもあります。 1989 年には Intel から 80860 がアナウンスされました。これはパイプライ ン化した浮動小数点演算ユニットをもつマイクロプロセッサであり、汎用マイ クロプロセッサ+数値演算専用チップ、という構成よりはるかに容易、かつ安 価にシステムを構成することを可能にしたからです。

こうして、 1990 年代にはいるとそれなりの浮動小数点演算能力をもったマイ クロプロセッサを単純に沢山並べる、というアプローチが並列計算機の世界を 支配することになります。 1992 年頃までは、先程から何度か名前がでてくる Intel 80860 が良く使われていましたが、このチップ自体は商業的な成功を収 めたとはいいがたく、 Intel はこのチップの後継を作る代わりに 80486 の後 継である 80586 (Pentium) にパイプライン化した演算器を搭載し、高い演算 能力をもたせました。この高い数値演算性能は Pentium Pro から現在の Core Duo 2 まで継続して強化されつづけることになります。

Pentium および当時の RISC マイクロプロセッサは、クロックを上げることで 当時のベクトルプロセッサのスカラ性能と同等、あるいはそれを上回る性能を、 ほぼ 1/100 のシステムコストで実現しました。さらに、完全にパイプライン 化した演算器により、ベクトル計算機との違いもほとんど演算器の数だけの 2-4 倍程度の差でしかなくなってきました。

Beowulf (PC クラスタ)という考え方がでてきてのはこの頃になります。その ちょっと前に、 NOW (Netowork of Workstation) という話がでてきて、 Sun や IBM の RISC プロセッサを使わワークステーションをネットワークでつな いだもので並列処理することでベクトル並列機より高い価格性能比が実現でき る、という主張がなされていました。 IBM は、基本的にその考え方による、 SP というワークステーションを高速ネットワークでつないだシステムを開発、 販売していました。

しかし、これらはいずれもそれほど規模が大きいものではなく、初期の SP の場合で 64 ノード程度、 PC クラスタも 16台で結構大きい、という感じのものでした。

一方、アメリカの軍関係の研究所では、 ASCI というプログラムが1994 年頃 にスタートします。これは、大雑把にいうと実際の核実験の代わりを数値実験 でやれるようにしよう、というプロジェクトで、そのために 10年間で10億 ドル以上の莫大な予算を投入し、数値計算に使える計算機の能力を2000年代前 半で 100Tflops 以上まで引き上げる、というものでした。このためには1万プ ロセッサ以上を結合した並列計算機を作ることが求められました。

1万台を結合するためにとられたアプローチは基本的は以下の2つです。

一つは、 Intel Paragon で採用されたフラットなメッシュネットワークを単 純に拡張して巨大なシステムを構成するもので、 1997 年に完成した ASCI Red で採用されました。これは当初 200MHz の Pentium Pro を9000台搭載し、 1.8 Tflops を実現しました。2年ほど後に 333MHz の Pentium II にのせかえ て Top 500 での1位を守ったことには驚いたものです。

もう一つは、 Blue, White, Q, Purple で採用された、基本ノードを複数の CPU の共有メモリノードとすることでノード数を減らし、さらに階層的なネッ トワークにする、というものです。

ここでは、 ASCI Q を取り上げることにしましょう。 Q は Compaq (納入時に は HP) の Alphaserver ES45 を基本ノードとしたシステムです。 ES45 は 1.25GHz の EV68 (Alpha 21264) プロセッサ 4チップからなる共有メモリ並列 システムで、 1ノード 10 Gflops の理論ピーク性能を持ちます。全体システ ムでは 3072 ノードからなり、 30Tflops のピーク性能を実現するはずだった わけです。

このシステムは納入、稼働したはずですが、 Top 500 には 2048 ノードの性 能しか記録されていません。 ASCI Q が完成した時点で既に地球シミュレータ は稼働しており、その結果 Q は一度も Top 500 の一位を占めることなく終わ りました。また、 LINPACK 性能自体、理論ピークの6割程度とかなり低いもの でした。

LINPACK ですら低い性能しか実現できなかったことは、他のアプリケーション ではもっと性能がでなかったことを意味しています。実際、 2004年の国際会 議 SC94 で最優秀論文賞をとった論文は、 ASCI Q でアプリケーションで性能 がでない理由を解明し、ある程度の性能向上に成功した、というものでした。 そんなものが研究として認められるほどひどい計算機であった、ということで す。

ASCI Q の調達コストは 2 億ドルと言われており、ピーク性能でみた価格性能 比で地球シミュレータとの差が殆どありませんでした。このため、地球シミュ レータが ASCI プロジェクトに与えたインパクトは極めて大きなものでした。 時代遅れと思っていたベクトル計算機が時代の先端であるはずの高速スカラプ ロセッサに理論ピークも大して負けず、アプリケーションの実効性能では大き く上回ってしまったからです。

ASCI プロジェクトで主流であったマイクロプロセッサによる SMPノードをネッ トワーク結合、というアプローチは破綻していたことにようやく気が付いたわ けです。

ASCI プロジェクトは、少なくとも並列計算機のアーキテクチャ開発としては 悲惨な失敗であったことは疑う余地がありません。地球シミュレータが Computonik などと言われたのは、それが素晴らしい機械であったからという 面はありますが、それ以上に比較される対象であった ASCI マシン群があまり にもひどい代物だったからです。どのくらいひどいかというのを簡単にまとめ ておきましょう。

ASCI Q は12000 プロセッサです。簡単のため 240億としておくと、1プロセッ サ 200万円です。性能は 1.25GHz, 2.5Gflops です。 2002 年という時期を考 えると、 既に 2GHz Pentium 4 は存在しており、20万円程度で 4Gflops のピー ク性能が実現できました。

ベーシックな指標として、価格当りの主記憶バンド幅とネットワークバンド幅 を考えてみます。演算ピーク性能は地球シミュレータと Q であまり変わらな いというのはすでにみたとおりだからです。地球シミュレータのノード価格は、 1ノード 1000万円としておきます。 Q は4チップの1ノードで 800万円です。

まず、メモリバンド幅ですが、地球シミュレータは STREAM ベンチマークのう ち COPY と言われるもので 32 GB/s を記録しています。従って、 1 GB/s あ たり 32万円です。これに対して、 Q の 1 ノードである ES45 は、 1.25GHz での数字はありませんが 1GHz ノードで 3.5 GB/s という数字が残っています。 従って、1GB/s あたり 228万円となり、1桁近く悪いことになります。 ちなみに、 Intel P4 で最初期の RDRAM をつけたものでは STREAM に数字は 1.5GB/s 程度であり、値段が 20万として 1GB/s 当り 13万です。地球シミュ レータの数字がなかなか良いことがわかると思います。

地球シミュレータのネットワークは 1 ノード(8プロセッサ)あたり12.3GB/s ですから、単純に値段に換算すると 1GB/s あたり 650万円となります。 Q のネットワークは多段 Quadrics ですが、1ノード当り 500MB/s です。従っ て、1GB/s あたり 1600万円となります。ちなみに、この頃は Gigabit Ethernet がマザーボードについてくるようになった時期です。 PC クラスタ でGbE ですますと、20万あたり 1Gbit/s ですから 1GB/sあたり 160万となり ます。

こうやってみると、ASCI 計画には何か問題があった、ということは明らかで す。高価で時代遅れと言われてきた(私も何度となくここで書いている)ベクト ルプロセッサに比べてさえ、実はより高価になってしまっているからです。 高価になった理由は色々ありますが、

の2つが重要でしょう。要するに、メーカーが何も ASCI 用の開発をしないで 漫然と製品系列の中から最も高いものを沢山並べて貧弱なネットワークでつな ぐ、という感じで作ったから駄目だったわけです。

まあ、こんなことは今から振り返れば自明なことですが、アメリカはその結果 1000億ドル近くをドブに捨てることになりました。日本の次期計画が、アメリ カの悪いところをコピーするようなものにならないことを祈るばかりです。

25.6. 地球シミュレータ以後 2005年以降

さて、 2002 年に地球シミュレータがでると、さすがに ASCI は何かが間違っ ていた、ということにアメリカは気が付くことになります。 まあ、実はその少し前から気が付いていたと思われるわけで、この時期にいく つか新しい研究プログラムが始まり、 ASCI 自体も ASC に名前を変えるわけ です。

研究プログラムとしては HPCS が重要そうに思われるのですが、これについて はまた後で議論するとして、2006 年までに新しくはいった大型システムを見 ることにしましょう。一つは Sandia Red Storm です。 Sandia は Pentium Pro ベースのメッシュネットワーク機 ASCI Red をいれたところであり、 Red Storm はその後継です。しかし、 ASCI Red は Intel SSD (Scientific Systems Division) が作ったのに対して、Red Storm は新生 Cray がやりまし た。

Cray については Cray Research, Cray Computer についてすでに触れました が、XMP 系列をやっていた CRI が 1993 年に T3D をアナウンスします。これ は、当時最速の RISC マイクロプロセッサであった DEC Alpha 21064 をベー スにした超並列機ですが、非常に高速な 3 次元メッシュネットワークと高密 度な実装で、 CM-5 等を押しのけて超並列機のマーケットをほぼ支配します。 さらに 21164 ベースの T3E/600 が続き、これは 21164 チップのクロックが 300MHz から最終的には 600MHz まで上がったことにあわせて T3E/1200 まで 次々に性能向上版がアナウンスされることになり、5-10年に一度しか新製品が でなかったベクトルプロセッサとは違う世界のもの、という印象を与えました。

ところが、1996年に CRI は経営が成り立たなくなりシリコングラフィッ クス(SGI)に身売りします。SGI は MIPS ベースのグラフィックスワークステー ションから出発した会社ですが、この頃は分散共有メモリシステムによる Origin という大規模システムに力をいれていました。 T3x の製品系列は直接 Origin 系列と競合するわけで、整理されてしまうことになります。

MIPS は、 Stanford RISC チップの直系である正統派 RISC プロセッサですが、 R10K になってほぼ開発がストップします。1996 年段階では H1, H2 といった ものがロードマップに存在していたのですが、結局 2003 年に Intel Itanium ベースの Altix システムの出荷を開始するまで、 R10K のクロック速度をあ げただけの R12K, 14K, 16K といったプロセッサで製品を構築することになり ました。これは、結局開発費に見合った売り上げが期待できなくなったため、 ということはあると思います。これについても次章でまた触れることにします。

SGI はそのようなわけでスーパーコンピューター市場で有効な製品戦略を構成 できず、 2000年には Cray 部門を Tera Computer に売却します。

Tera Computer は Burton Smith が率いる、当時は Tera MTA というものを開 発していたはずの会社です。 Burton Smith はこの業界では結構古い人で、 1970 年代に Denelcor HEP という非常に複雑な仕掛けの並列計算機を開発し ていました。 あまりに複雑なのでここでは詳しい説明はしませんが、それで も 1982 年には実際にマシンが完成し、 4 プロセッサ並列で 40Mflops の理 論ピーク性能をもったようです。これは 8台製造され、少なくとも5箇所に納 入されています。但し、この性能では Cray や、その安いコピーと勝負になら ないわけで、 1985 年に Denelcor は倒産します。これでこんな計算機はおし まいかと思うと何故かそうではなく、 1988 年に Smith は Tera Computer を 設立します。 で、ずーっと Tera MTA という、 HEP の発展版のような機械を 開発していました。 1998年には2プロセッサのシステムを San Diego Supercomputer Center に納入したようです。これは、1プロセッサあたり 900Mflops というもので、この時点で DEC Alpha とかに比べてどのような意 味で競争力があるのか疑わしいものでしたが、Tera は開発資金を調達するこ とに成功し続けてきました。これがどのようにして可能であったのかは私には 良く理解できていません。

HEP にしても、 Tera MTA にしても大きなセールスポイントはシーケンシャル な Fortran プログラムからほぼ自動的に並列性を検出して実行でき、プログ ラムの書き換えが必要ない、ということでした。 これはまあ研究費を取りや すいテーマですが、実際にそれが売り物の製品がマーケットで大きなシェアを とったことはスーパーコンピューターの歴史の中で一度もありません。これは なかなか興味深いことで、歴史的には Cray-1 と Star-100, Cyber の比較で 見たように、それまでの世代よりも使いにくくなると、多少性能が上がっても 使いやすい(今までと同じように使える)ものに負けるのですが、今までよりも 使いやすい、というのが売りのものは性能が悪ければ決して売れたことはあり ません。

これだけなら、時間がたってもスーパーコンピューターは使いやすくも使いに くくもならないのですが、よろしくないことに、圧倒的に性能が上がれば使い にくくてもそちらが売れる、というのは歴史が証明しています。つまり、時間 がたつと、スーパーコンピューターは必ず性能はいいけど使いにくいほうに進 化する、ということになります。まあ、どうやっても性能がでないものは売れ ることはないわけですが。

話がそれました。 Cray と Tera です。 2000 年に Cray を買収すると、 Tera はただちに社名を Cray Inc. に変更します。これにより、アメリカにお けるスーパーコンピューター開発の正統である、という地位を確立しました。 ほぼ同時期に T3x の後継といえる Sandia Red Storm の開発契約を得たわけ です。 SGI 傘下では開発できなかったものが Tera にいって可能になったわ けで、これは極めて重要な結果といってよいと思います。

Cray は開発が遅れたものの、 2005年には 1万プロセッサ、 40Tflops のシス テムを稼働させます。これは Cray XT3 として商品化され、かなり順調に売れ ているようです。

もうひとつ重要なものは、 IBM BlueGene プロジェクトです。これは元々 1999 年頃に始まったもので、地球シミュレータとは何の関係もありません。

タンパク質の構造・機能のシミュレーションはこれから非常に重要なものになっ ていく、ということはしばらく以前からはっきりしています。私達がやってい る GRAPE も、理化学研究所で発展した MD-GRAPE シリーズはタンパク質シミュ レーションが1つの目標です。 IBM でも、それをターゲットとして BlueGene というプロジェクトを始めました。

余談になりますが、 IBM 社内で大がかりに始まった研究プロジェクトで、順 調に進んだものはそれほど多くはありません。スーパーコンピューター関連で は既にでてきた 7030, 360/195 と失敗作を無理矢理商品化したものから、 ACS のように中止になったもの等があり、研究プロジェクトでは無数にいろん なものがあります。

BlueGene も初期は失敗のほうに分類される運命と思わせるものでした。 1 チッ プに32個のプロセッサ、自己修復するソフトウェア、等ととても現実にできる とは思えない目標が掲げられていたからです。

2002年になって、この BlueGene から公式に方向転換したとはいっていないの ですが、「より近い目標」として BlueGene/L (L は Liteの略) という計画が スタートしました。 これは、コロンビア大学のグループが 格子QCD 計算用に 開発していた計算機 QCDOC に、

という程度の変更をして、 BlueGene という名前をつけた、という感じのもの です。 IBM は QCDOC より BlueGene/L に力をいれたので、 BlueGene/L は順 調に開発が進み、また LLNL に 360Tflops のシステムを納入する契約も取り 付けることができて、 2004 年になってついに地球シミュレータが2年にわたっ て守ってきた Top 500 首位の座を奪取しました。この時はまだ全体の 1/4し かできていなかったのですが、現在は全体が完成して Linpack 280Tflops を 実現しています。

BG/L のお値段は 1 億円当り 3-4 Tflops 程度と想像されます。これに対して Cray XT3 は1ノード100万前後ですが、今だと 2.4 GHz 2 コアとかをつけられ ますからほぼ 10 Gflops、1億円あたり 1 Tflops が実現できます。こうなる と、差は結構小さいのでアプリケーションが決まっててそれが BG/L で走ると わかっているケース以外では Cray XT3 のほうが、ということになるでしょう。

Cray はベクトル機も実はまだ作っていますが、次はすでにない模様です。

現在進んでいる日本の京速計算機プロジェクトは、これらのアメリカの新世代 のシステムに対して ASCI マシンに地球シミュレータが示したような優位性を 実現することが望まれているわけで、これは並大抵のことではありません。
Previous ToC Next