前回の話のテーマは、要するに昔はスパコンのほうが値段当りの性能が良かっ
たのに、今は逆転していて普通のパソコンが一番値段当りの性能が良くなって
いる、ということでした。
技術的には、そうなった理由は簡単です。IC の集積度が低くて、1つの浮動小数点
演算器を沢山の素子、リレーでも真空管でもパラメトロンでもトランジスタでも IC でも
LSIでもいいですが、で構成していた時代には、素子の数を倍にすると計算機
の性能は倍以上になりました。これは、増えた素子の多くを演算器の性能を上
げることに使えたからです。このために、値段が高い計算機のほうが値段当り
の性能が良かったのです。これには グロシュ (Grosch) の法則という名前が
ついています。
ところが、実はスーパーコンピューターという言葉を定着させた Cray-1 の出
現後、この法則は成り立たなくなりました。もうちょっと正確にいうと、パイ
プライン化してクロック毎に1とか2演算できる計算機がある値段で構成できる
ようになると、グロシュの法則はそれよりも安い計算機では成り立つけれど高
い計算機では成り立たたなくなります。クロック毎に2演算よりも性能を上げ
るには、乗算器や加算器を複数使わないといけないのですが、そのためには演
算器以外の余計な回路が普通は演算器の数以上に増えてしまうからです。
半導体技術はどんどん進むので、過去 30年の間、というよりは実際には 1975
年から 1990年までの間に起こったことは、 グロシュの法則が成り立つ領域が
1チップのマイクロプロセッサまで降りてきてしまい、実際上消滅した、とい
うことです。その結果、なるべくお金をかけないでマイクロプロセッサを沢山
並べるのが、最も効率的に高い性能の計算機を構成する方法になってしまった
わけです。
もちろん、ただ沢山買ってきて並べただけでは、それぞれを別の計算に使うな
らともかく、全部を使って1つの計算、例えば流体シミュレーションやタンパ
ク質のシミュレーションをするには使えないので、なんらかの方法でつなぐ必
要があります。それも、しかし、今ならマザーボードにおまけでついてくるギ
ガビットイーサネット(GbE) インターフェースを使ってつなぐのが値段的には
安いので、それで性能がでるならそれですまそう、ということになります。と
いうより、それより少し速いものを要求するといきなり値段がパソコン本体よ
りも高くなるのでなかなか難しいわけです。
それでも、結局現在はそういうもの、つまりパソコン用のマイクロプロセッサ
を使って、それを少し速いネットワークでつないだ計算を、 Cray という名前
がついた会社でさえ売っている、という状況になっています。それ以外に色々
過去の化石のような製品がまだありますが、それらは古いソフトウェアを動か
す必要性とかくらいしか理由がなくなってきています。
ソフトウェアが問題になるのは、ソフトウェアの開発には結構時間がかかるの
に、ハードウェアは10年もたつとデバイス技術、というより単純に使えるトラ
ンジスタの数が 100倍変わるので、本来最も性能がでるような計算機構成法は
全く変わってしまうからです。
この状況を非常に大雑把にまとめると、以下のようなことがいえるかもしれま
せん。
-
ある時点でもっとも価格性能比が良いスーパーコンピューターは、大体 10
年くらい前のデバイス技術に最適なアーキテクチャになっている。
普通に使われているものはさらに 10年くらい前のデバイス技術向けである。
-
ソフトウェアは、多くの場合に 10年くらい前のハードウェア向けであり、
しかも十分に最適化されているわけではない。
しかし、突然こんなことを言われても納得できないですよね?スーパーコンピュー
ターで使われるソフトウェアはどんなものでどんなふうに作られるか、という
のを、私の経験を中心にまとめてみます。