(2010/7/14 追記)
以下、数字を修正しています。主な違いは、 NWT のクロックサイクルは
9.5ns であるのに、 VPP500 と同じ 10ns として書いていたものを正しくした
ものです。
(2010/7/14 追記終わり)
航技研が富士通に発注した数値風洞(NWT)は革命的なマシンでした。
大雑把にいうと、 NWT は VP-400 とほぼ同様のベクトルプロセッサを 1 ボー
ドに集積し、それを 166 台クロスバースイッチで結合したものです。ノード
当りの性能は 1.7 Gflops であり、 105 MHz のクロックサイクルで 16 演算
(乗算、加減算 8 づつ)を行うものであったようです。VP-400 では 4 セット
のパイプラインで 8 演算(400E では加算8演算で 12 演算でしたが)を行うも
のであったのから倍増しています。パイプラインクロックは 7ns から 9.5ns
に少し落ちたために、ピーク性能としては 1.5 倍程度に留まっています。
ここでは革命的であったのはもちろんこのノード性能ではなく、それを 100
台以上結合して 1 台の計算機にするという発想です。同時期の機械では、
Cray C916 が最大 16 プロセッサですがこれはプロセッサあたり 4演算なので
最大構成でも 64 演算であったのに対して、 NWT は 2656 演算と 40倍以上の
並列度を実現したのです。
これだけの並列性が可能になったのは、共有メモリアーキテクチャから分散メ
モリアーキテクチャに切換えたことによります。NWT のクロスバースイッチの
速度は双方向 421MB/s でした。これに対してメモリ転送速度は上下合わせて
13.4GB/s ですから、バンド幅が 16 倍違うことになります。
つまり、 166 台をつなぐ
NWT のクロスバースイッチは、もしもCray C916 のような共有メモリ構成にし
たとしたらその 1/16 以下、10台程度のプロセッサとメモリを結合するバンド
幅しかもたないものであったわけです。ここに革命があるのです。
NWT 以前のベクトル並列計算機のアーキテクチャは物理的な共有メモリでした。
この構成にこだわったことが、同時期の Cray C916 で16台、日立 S-3800 で
はわずか 4 台といった極めて少ないプロセッサ数しか実現できていなかった
理由と考えられます。 NEC SX-4 は 32 プロセッサで共有メモリを実現しまし
たが、これは1995 年のことであり、完全 CMOS 構成に移行することで初めて
可能になったものです。また、これ以降、 32 より大きなプロセッサ数で共有
メモリの機械はつくられていません。
NWT では、共有メモリアーキテクチャをやめてプロセッサ毎にメモリを持たせ
ることで多数のプロセッサの並列動作を可能にしました。しかし、 NWT のユ
ニークな点はそれだけではありません。重要な点は、当時の分散メモリ超並列
機の概念からは考えられないような高速のクロスバースイッチでプロセッサを
結合したことです。技術・コスト的な観点から見ると、既に述べたように NWT
のクロスバースイッチは同時期の共有メモリベクトル並列機のプロセッサ・メ
モリネットワークをほぼ同程度のバンド幅を持つものであり、高価ではありま
すが他の機械より高価ということはありません。他のベクトル機に比べて 10
倍近いピーク性能をもたせることで、価格競争力は十二分にもたせることがで
きます。ノードプロセッサをメモリバンド幅に比べて 1/16 というかなり高速なクロスバー
ネットワークでつなぐことで、並列プログラムの通信オーバーヘッドによる性
能低下を多くの場合に問題にならない程度まで下げています。特に、多次元 FFT や
ADI のような、データの転置を行いたいアルゴリズムでも十分な性能がでるだ
けの通信性能を確保しているわけです。
同時期の超並列計算機では、Intel Paragon は高速ですが2次元メッシュであ
り、必ずしも使いやすいものとはいえませんでした。 TMC CM-5 は 160Mflops
のノードプロセッサを最大 20MB/s の Fat Tree でつないでおり、通信パター
ンによってはクロスバーより大きく劣ります。更に高速な3次元トーラスを使っ
た Cray T3x が超並列機の主流となることは既に述べた通りです。1995/6 の Top 500 リ
ストでは、富士通 NWT/VPP500 は Top 20 のうち 6 システム、 1, 5, 7,
14-16 位を占めています。
当時の半導体技術とベクトル並列機のアーキテクチャの動向を考えると、 NWT
は他の機械と同程度の技術を使いながら革新的な分散メモリとクロスバーネッ
トワークのアーキテクチャを使うことで、ベクトル機にスカラ超並列計算機と
対抗可能な価格性能比とスカラ超並列計算機よりも優れた使い勝手と実効性能
をもたらし、90年代後半までベクトル機並列を有効なアーキテクチャにした革
命的なマシンであったといえます。
もっとも、それが良かったかどうか、は評価が分かれるところでしょう。
NWT/VPP500 の高速なクロスバーは、単純な一次元分割のプログラムで多くの場
合に十分な性能を出すことを可能にしました。 2, 3 次元分割はベクトル長を
短くするためにむしろ不利になる、という面もありました。このことは、分散
メモリを陽に表現するけれどもユーザープログラムはグローバル配列を利用可
能であり、通信は暗に表現できる VPP-Fortran の記述しやすさとあいまって、
ユーザーが並列プログラムを書くことを比較的容易にしたことは間違いないで
しょう。
しかし、この使いやすさは、VPP 用に書かれたプログラムは(VPP-Fortran が
XPFortran として他の機械で実行可能になってはいますが)、通信が遅い他の
機械では性能がでにくい、ということにもつながりました。これはハードウェ
アメーカーが自社マシン用に開発した言語(同じような例では CM-Fortran) で
は皆起こったことではありますが、VPP が良い機械であり、寿命が長かった
ことが結果的に他のマシンでは使わざるを得ない MPI への移行を遅らせるこ
とになりました。
現在、NWT の高速クロスバーという方向は、 SX-8 の項でみたように行き詰まっ
ています。さらに、残念ながら VPP シリーズ自体は 1999年の VPP5000 で終
了し、富士通のスーパーコンピューターは必ずしも性能で優位にあるとはいい
がたい HPC2500 が引き継ぐことになりました。このため、
VPP-Fortran のコード資産は難しい状況におかれることになりました。