Fermi他GPGPUの動向について思う。

倍精度を主に使う計算用に高速な計算リソースが欲しいなぁと思っていて、来年あたりFermiを購入する算段を立てていたのですが、なんだか雲行きが怪しくなってきているようで…。

77. Larrabee, Fermi (2009/12/26)
http://grape.mtk.nao.ac.jp/~makino/articles/future_sc/note078.html#rdocsect83

多コアの SMP で問題になるのはキャッシュコヒーレンシを維持するためのコア間のトラフィックです。

去年あたりに計算コードをマルチコアCPU向けに、半ば趣味で並列化していまして、その際、特定マイクロアーキテクチャで実行した場合に実行効率が上がらないという問題にぶち当たりました。最初は、偽共有(false sharing)によるものかと疑いコードを見直したのですが引っかかるような部分もなく…。仕方ないので、問題の出るマイクロアーキテクチャと出ないマイクロアーキテクチャの仕様をぼーっと比較してたら、キャッシュコヒーレンシ維持のための通信が怪しいと思いあたり、最終的に、各コア固有の(L1,L2)キャッシュには、完全に独立したデータのみを放り込むようコードを書き換えることで、手元の全マイクロアーキテクチャで、ほぼ100%の実行効率が実現できたということがあります。というわけで、キャッシュコヒーレンシとかHPC分野では不要だよねって件には、実体験も伴ってとても共感でき、納得してしまいました。
と、思ったのですが、カリカリにチューニングする人なんてのは世間的にはたぶんマイナーなわけで、チューニングマニア向けにキャッシュコヒーレンシを備えないシステムを作るのは商業的には微妙かなぁとか。(個人的にはそういうハードがあれば欲しいですがw)
『現状のコンパイラを含めたソフトウェア環境で、さらっとコードを書いたら、適度に速いものがお手軽にできる』ようなシステムを目指すなら、キャッシュコヒーレンシは必要と思われ、現状では、キャッシュコヒーレンシの制御をハードで実装するというのは妥当な選択じゃないかなとも思いました。
もっとも将来的には、並列化コンパイラがキャッシュコヒーレンシの面倒を見てくれるのが理想かなぁとも思います。
閑話休題
というわけで、Fermiに関しては次世代の設計では、個人的にはシンプルになる方向に振り直してもらえると嬉しいなぁとか。

NVIDIAはFermiのSP数を削減
http://www.geocities.jp/andosprocinfo/wadai09/20091226.htm

$2499と$3999というGPUボードより1桁高い値段のボード用のチップでも2クラスタを殺さないと良品がとれない状況では

SPが448個に減少したことについては、元の計画の512個じゃ採算合わないからダイサイズ削減したのかなぁ程度の変てこな認識をしていたのですが、これって基板上には予定通り16コのクラスタ(SM)作るけど、歩留まりが悪いので不良品部分のSMを2コ殺して出荷するってことですか…。
現状の仕様だとすごく割高な気がするので、Fermiの購入はTSMCの40nmプロセスルールが安定するか、もしくは今のGT200bみたいに次のプロセスルールに移行するのを待った方がよいかなぁ。。。

倍精度計算用に何を選ぶべきか

Fermiはちょっと散々な感じではありますが、なんとかモノが出てきそうではあるので、とりあえずFermiを基準に考えてみました。個人的に消費電力はそう問題ではないので、もっぱらコストパフォーマンス重視で。

GPU 価格 性能 (倍精度)
Tesla C2050(Fermi) 20万前後 0.52TFlops
Tesla C2070(Fermi) 30万前後 0.63TFlops
GTX295(GT200b) 5~6万 0.15TFlops
GTX285(GT200b) 3~4万 0.07TFlops
FireStream9270(RV770) 15万前後 0.24TFlops
FireStream9250(RV770) 10万前後 0.2TFlops

単純な価格性能比ではGTX295 4枚挿しに比べてアドバンテージが薄いようにも思えますが、

  • 1カードで0.5TFlopsのポテンシャル。(トータル同じ性能でもコンパクト化可能)
  • 自動キャッシュ実装。ECC利用可。マルチカーネル実行化。(プログラミングが楽に)
  • 性能に対して、現行品に比べれば、十分低消費電力。

ってことを考えると、(倍精度計算前提であれば)まだFermiに旨みがあるかなと。まぁ、だからと言って初物に飛びつこうと思えるほどは良くもないので、Fermiの通常GPU版が来年度内に出ないようであれば、Tesla C2050あたりを狙おうかなと思います。