Previous | ToC | Next |
ここ 3-4 年の間に GPU を使った数値計算という話が、少なくとも研究レベル では次第に盛んになってきました。
ここで重要なのは、ハードウェア開発コストはゼロである、ということです。 このため、ソフトウェアを頑張ればなにかいいことがあるかもしれない、とい うわけで研究対象にはなります。
では、これがいろんな計算で実際に使いものになるか、という話になると実は よくわからないところがあります。というのは、 GPU という性格上設計には 以下の制約があるからです。
倍精度にするとハードウェア規模は 5 倍程度にはなるので、単純に倍精度演 算をサポートする、という可能性はあまりないと思われます。 IBM Power で4 倍長のサポートがあるように、なんらかのハードウェアサポートをすることで 4サイクル程度で倍精度乗算ができるようにするのはそれほど難しいことでは ないのですが、それによってマーケットが広がることが大して期待できないこ とにトランジスタを使う気になるかどうかは怪しいかな、という気もします。 また、 1/4 になると例えば GeForce 6800 にそういう機能があったとして倍 精度 12 Gflops になってしまい、 Pentium D と変わらなくなってしまいます。 まあ、元々単精度でも 2-3 倍しか違わないわけです。
2-3倍しか速くないのは、結局演算器の数があまり多くないからです。多くな いのは、ピクセルシェーダではメモリバンド幅に対して演算性能を上げても意 味がないからです。ピクセルシェーダの基本的な機能は、各ピクセルに対して テクスチャパターンから色、明るさを決めることで、メモリに入っているのは テクスチャパターンです。これを読んで、ピクセルデータとなんか計算して、 出力はピクセルの実際の色、明るさ、ということになります。 GPU で最も重 要な機能はテクスチャパターンを高速に読み出すことです。計算はある 意味おまけです。このため、それほど高い演算性能になりません。
ピーク性能だけを考えると、 GPGPU でそんなにいいことがあるか?というの は結構疑問です。メモリバンド幅が広いことは魅力ですが、問題はこれはカー ドに載ったメモリだけということです。512MB とか結構大きなメモリがのった カードがあることは確かですが、全ての処理をそちら側でできるわけでは普通 ないからです。 プログラム全体は CPU の側で動いて、計算が重いところだけ を GPU で、と思うと、 PCI-Express とかを通してデータ転送が発生し、アプ リケーションによってはそこがボトルネックになりますし、そこがボトルネッ クにならないようなアプリケーションなら始めからバンド幅もメモリ容量もあ まりいらないケースが多いでしょう。
GPU を GPU として(グラフィック処理に)使う時には、処理結果を CPU 側に戻 す必要はありませんし、CPU から送るデータ、例えばポリゴン座標は、ピクセ ルデータに比べて量が少ないわけです。このため、通信バンド幅は必ずしもボ トルネックにはならないで済みます。
GPU が注目されている一つの理由は、過去数年では GPU の進歩のほうが CPU より速かった、ということがあります。 しかし、今後、 GPU のほうがマイクロプロセッサより速く進歩するか、とい うと、これはかなり疑問です。一つは、 CPU もマルチコア化したことで名目 のピーク性能はトランジスタ数に比例して上げられるようになったことがあり ます。もうひとつは GPU のほうでメモリバンド幅を増やすのが限界に近付い た、ということがあります。 メモリバンド幅を増やすのは、クロック、ビッ ト幅両方の増加によってきたのですが、プリント基板に石を載せて配線してい る限り、現在の 256ビット幅を 2倍、 4 倍と増やすのはコストがかかりすぎ るからです。 チップ同士を直接積層して非常に多数のパッドでつなぐ貫通電 極といった技術が実現しないと、今までよりはバンド幅の伸びは落ちると思わ れます。
もちろん、貫通電極のような超多ピン技術が近い将来に実用化される可能性 は十分あります。しかし、その場合、 GPU 以外への応用も当然考えられるわ けで、例えば、ベクトル計算機をそれで作る、というような可能性もでてくる わけです。
というわけで、個人的には GPGPU にあまり期待しないほうがいいのでは、、、 と思っています。
Previous | ToC | Next |