航技研が富士通に発注した数値風洞(NWT)は革命的なマシンでした。
大雑把にいうと、 NWT は VP-400 とほぼ同様のベクトルプロセッサを 1 ボー
ドに集積し、それを 166 台クロスバースイッチで結合したものです。ノード
当りの性能は 1.6 Gflops であり、 100 MHz のクロックサイクルで 16 演算
(乗算、加減算 8 づつ)を行うものであったようです。VP-400 では 4 セット
のパイプラインで 8 演算(400E では加算8演算で 12 演算でしたが)を行うも
のであったのから倍増しています。パイプラインクロックは 7ns から 10ns
に少し落ちたために、ピーク性能としては 1.5 倍程度に留まっています。
ここでは革命的であったのはもちろんこのノード性能ではなく、それを 100
台以上結合して 1 台の計算機にするという発想です。同時期の機械では、
Cray C916 が最大 16 プロセッサですがこれはプロセッサあたり 4演算なので
最大構成でも 64 演算であったのに対して、 NWT は 2656 演算と 40倍以上の
並列度を実現したのです。
これだけの並列性が可能になったのは、共有メモリアーキテクチャから分散メ
モリアーキテクチャに切換えたことによります。NWT のクロスバースイッチの
速度は双方向 400MB/s でした。これに対してメモリ転送速度は上下合わせて
12.8GB/s ですから、バンド幅が 15 倍違うことになります。
しかし、細かいことをいうとメモリに対してはアドレスバスも必要で、ベクト
ル機の常として間接アドレスアクセスに対応するためにアドレスバンド幅がデー
タと同程度あるのに対して、ノード間ではランダムアクセスはサポートしてい
ないので実効的な差はもっと大きくなります。つまり、 166 台をつなぐ
NWT のクロスバースイッチは、もしもCray C916 のような共有メモリ構成にし
たとしたらその 1/20 以下、8台程度のプロセッサとメモリを結合するバンド
幅しかもたないものであったわけです。ここに革命があるのです。
NWT 以前のベクトル並列計算機のアーキテクチャは物理的な共有メモリでした。
この構成にこだわったことが、同時期の Cray C916 で16台、日立 S-3800 で
はわずか 4 台といった極めて少ないプロセッサ数しか実現できていなかった
理由と考えられます。 NEC SX-4 は 32 プロセッサで共有メモリを実現しまし
たが、これは1995 年のことであり、完全 CMOS 構成に移行することで初めて
可能になったものです。また、これ以降、 32 より大きなプロセッサ数で共有
メモリの機械はつくられていません。
NWT では、共有メモリアーキテクチャをやめてプロセッサ毎にメモリを持たせ
ることで多数のプロセッサの並列動作を可能にしました。しかし、 NWT のユ
ニークな点はそれだけではありません。重要な点は、当時の分散メモリ超並列
機の概念からは考えられないような高速のクロスバースイッチでプロセッサを
結合したことです。技術・コスト的な観点から見ると、既に述べたように NWT
のクロスバースイッチは同時期の共有メモリベクトル並列機のプロセッサ・メ
モリネットワークをほぼ同程度のバンド幅を持つものであり、高価ではありま
すが他の機械より高価ということはありません。他のベクトル機に比べて 10
倍近いピーク性能をもたせることで、価格競争力は十二分にもたせることがで
きます。ノードプロセッサをメモリバンド幅に比べて 1/15 というかなり高速なクロスバー
ネットワークでつなぐことで、並列プログラムの通信オーバーヘッドによる性
能低下を多くの場合に問題にならない程度まで下げています。特に、多次元 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 が他の機械で実行可能であったとしても)、他の並列計算機上で
の利用に耐えないものになりがちである、ということを同時に意味しています。
現在、NWT の高速クロスバーという方向は、 SX-8 の項でみたように行き詰まっ
ています。後知恵で考えるなら、並列化アルゴリズムが始めから通信の負担が
小さいものであれば、プログラムは再利用できたのではないか?という気がし
ます。