脳ざらし紀行


2009-06-13

_ レジスタ10万個くらい載せたらすげえ速い計算機が作れるんじゃね

という誰もが一度は抱く妄想を具現化したGPGPUに関して調べていました。NVIDIA と AMD どっちに投資した方が将来リターンが大きいかとか。

まとめると

  • NVIDIA: 開発環境が整っている。割と柔軟にプログラムできる。
  • AMD: 倍精度演算が5倍程度速い。高級言語だけでなくアセンブラ(のようなもの, CAL)も提供されている。開発環境は割りとアレ。Brook+の将来が不安。

AMD は倍精度が速くてアセンブラが提供されているという、いかにも科学者が好きそうなシステムですね。でも上のN体問題の例だと

  • CUDA で loop unrolling をがんばって理論値の6割。
  • アセンブラ(CAL)でがんばって loop unrolling もして理論値の8割。

というわけで、CUDA みたいな高級言語で loop unrolling をがんばるだけで理論値の6割出せるというのは驚きです。カジュアルプログラマにとっては非常に魅力的です。

で、GPGPU で性能出そうと思ったら loop unrolling をしなくちゃいけなくて、関連してレジスタの数が気になるわけですが、探した限り AMD の GPGPU のレジスタ数ってドキュメントに書いてないんですよねえ。ここにもはてなマークで書いてありますし。アセンブラ提供しておいて、レジスタの数を教えないってどうなのという気がします。いろいろ検索して

NVIDIA GT200 AMD RV770
Registers per SM/SIMD Core 16K x 32-bit 16K x 128-bit
Registers on Chip 491,520 (1.875MB) 163,840 (2.5MB)

というのを見つけました。レジスタ総数50万個と15万個、総容量1.9MBと2.5MBって、これ本当にレジスタの数字なのか。で、AMD の正確な数字は 128-bit レジスタが1024個/Stream Processor ということらしいです。 1024*16*10=163840個。

あと AMD だと並列実行可能な異なるコードは10までだけど、NVIDIAは30という違いがあったりするらしいです。この点でも NVIDIA の方が柔軟性は高いといえます。

AMD は将来的にBrook+をどうするのかが不透明で、OpenCLがんがりますと言いつつまだOpenCL対応のSDKを配布できていないというのが。

お名前:
E-mail:
コメント:
本日のリンク元

最近のコメント

2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|04|05|
2011|04|
2012|03|07|
2013|01|02|07|
トップ «前の日記(2009-06-08) 最新 次の日記(2009-06-20)» 編集