ベンチマークプログラムをどうするか、という以前に本当に問題なの
は、前章で議論した基本的な特性、もう一度書くと
のそれぞれにどのような性能目標を設定するか、ということになります。
現在のベクトル並列型計算機、例えば地球シミュレータや NEC SX-8 はメモリ
バンド幅が計算速度と桁では変わらず、通信バンド幅もメモリバンド幅と桁く
らいでしか変わらない、というものです。当然のことですが、このようなハー
ドウェアでは演算に対してメモリアクセスが比較的多く、またメモリアクセス
に対して通信が比較的多いようなプログラムでも高い実効性能がでますし、
またメモリアクセスや通信が少なくてももちろん高い実効性能がでます。
しかし、これは、実効性能を普通はピーク演算性能に対する実効演算性能の比、と定義
するからです。計算機なんだから計算速度が問題、というのはそうなのですが、
例えば演算器はフルに働いているけれどメモリもネットワークも寝ているよう
な計算では、計算機が有効に使われているとはいいがたいでしょう。有効かど
うか、というのは結局はコストの問題ですから、例えばメモリバンド幅やネッ
トワークバンド幅にお金をかけた計算機を作って、それらを全然使わないけれ
ど演算器は目一杯働くような計算にしか使わなければそれはお金の無駄です。
このように考えると、アプリケーション毎に色々計算機を作るなら、問題をき
めたらそれに必要な割合で上の3要素を組み合わせればいいということがわか
ります。もしも、どういうアプリケーションに使われるかわからないものを作
るなら、3要素のそれぞれ 1/3 づつお金を掛けるのが無難な選択でしょう。ど
んなアプリケーションでも、最適ケースの 1/3 くらいの性能は出る、という
ことになるからです。これに対して、あるアプリケーションに最適な構成にす
ると、他のアプリケーションでは桁で性能がでない、ということがありえます。
具体的には、 GRAPE-DR のようなシステムでは、通信バンド幅で性能がリミッ
トされるようなアプリケーション、例えば FFT では、値段当りの性能が例え
ば PC クラスタの半分や 1/3 程度になります。これは PC クラスタに
GRAPE-DR カードをつけても大域的な FFT は殆ど速くならないのに、値段は
2-3倍になるからです。
これに対して、地球シミュレータのようなベクトル並列計算機では、演算中心
でメモリバンド幅や通信バンド幅がいらないアプリケーションでは値段当りの
性能が GRAPE-DR のようなものの 1/100 程度まで落ちています。(同じテクノ
ロジーを使った場合の推定値)これは、コストの 90% 以上がメモリバンド幅と
ネットワークにいった上に、少量生産のため高価なシステムになっているから
です。
さて、では、
の3要素に、それぞれどういうものを使うべきでしょうか?計算速度の部分は、
GRAPE-DR のような、計算速度に専用化したものを作ることによって価格性能
比を例えば普通の PC に比べて改善することができます。後の2つについては
どうでしょう?
メモリバンド幅については、バンド幅志向で改善したものが特に統合シェーダ
になった GPU であるということができます。つまり、普通の PC と同等の量
産規模を前提とするなら1桁程度改善することは可能です。これは、逆に、量
産規模が小さい場合は難しい、ということです。 GPU くらい沢山作るのでな
ければやめておいたほうがいいといえます。
では、ネットワークはどうでしょうか?ハードウェア製造コストとしては、ネッ
トワークはスイッチ、アダプタ共にかなり極限までコストがさがっています。
つまり、アダプタ側はチップ1つだし、スイッチもかなりポート数の大きいも
のがやはり1チップなわけです。これは、もうコストを下げるのは困難である、
ということを意味しています。
結局、メモリバンド幅もネットワークバンド幅も、基本的にはチップ
の I/O バンド幅で決まります。これに対して演算速度はチップ内のト
ランジスタをどれくらい有効に演算器に使っているかで決まります。汎用の
マイクロプロセッサで演算器に使われているトランジスタの割合は極めて少な
いので、演算速度は改善の余地が大きいのですが、パッケージのピンの大半は
もちろん I/O に使われているのでここは改善の余地があまりないわけです。
大きく改善するには大きくピン数を増やすしかなく、そうするとコストが上がっ
てしまうからです。
まあ、その、私が GRAPE-DR をやっているから手前味噌な結論を出しているの
かもしれないのですが、上の議論は、要するに、現在普通の計算機ではトラン
ジスタのうち演算器に使われている部分はほんのちょっとなので、そこをある
程度増やせばアプリケーションによっては性能がどーんとあがる、というのを
もっともらしく書いただけで当たり前のことです。当たり前のことでも、誰か
が実証するまで誰も信用しない、というのはまあそういうもので、別に計算機
の人が特別に頑迷であるとかいうわけではありません。「理屈はそうでも、そん
なに上手くいくのかよ?」という疑問は健全なものです。
とはいっても、全ての人がそういう意味で健全であるとなんの進歩もないので、
誰かが冒険をしないといけないわけです。
でもまあ、じゃあ誰がやるか?というと、そういうところをやるのが国の研究
所とか大学であるのが本来の姿ですが、まあ、日本の現状は違う、というより、
大部分の国の大部分の研究機関はそういうことはしていません。