GTX480の倍精度についてわかりやすく

GPGPU】くだすれCUDAスレpert3【NVIDIA
http://pc12.2ch.net/test/read.cgi/tech/1271587710/

のレス272あたりからの流れがわかりやすく、おもしろい流れだったので以下に引用。自分メモのため、一部編集してあります。

272 名前:デフォルトの名無しさん[sage] 投稿日:2010/06/27(日) 14:14:32
倍精度の実効効率が、
GTX285 約90%
GTX480 約21%
ずいぶん差があるのはGTX480の倍精度がドライバのレベルで1/4に抑えられている
(らしい)ことが最大の原因?
アーキテクチャが違うから単純には言えないけど、21/25=84で、GTX285と同程度

274 名前:デフォルトの名無しさん[sage] 投稿日:2010/06/27(日) 14:53:17
nbody.exeでも-fp64で性能出てなかったし

281 名前:デフォルトの名無しさん[sage] 投稿日:2010/06/27(日) 22:24:19
ドライバで制限してるんじゃ無ければカタログスペックとの差異はどーすんの?
http://www.elsa-jp.co.jp/products/hpc/tesla_c2050/index.html

283 名前:デフォルトの名無しさん[sage] 投稿日:2010/06/27(日) 23:24:10
想像力を働かすと、
C2050よりもコア数が多くて、同一アーキテクチャ仕様と公表されているGTX480が
168GFLOPS(カタログの1/4)しか出ないなんておかしいぞ
ということかな

まあ、たとえ168GFLOPSだとしても、
共有メモリやレジスタまで1/4にはなっていないだろうし(倍精度だと2倍食うけど)、
単位演算性能あたりのメモリバンド幅が単精度と比べて大きくなることを考えれば、
実効効率が単精度よりも大きくなるのはわかる気がする
ECC無しでもOKで、メモリ1G程度で十分という人には
結構おいしいかもしれんねGTX480

285 名前:デフォルトの名無しさん[sage] 投稿日:2010/06/28(月) 07:10:21
C2050はGTX480はCUDAコアが少なく、クロックも低いにもかかわらず、
倍精度理論性能は515GFlopsとなりC2050ほうが高い。
これは、GTX480はドライバで倍精度演算の実行に
ペナルティが加わるようになってるから。
それでも、GTX285と比べても
倍精度演算が高速だからいいじゃんというのがNVIDIAの考え。

もっとも実際にはそれほど性能は変わらないようだよ。

現実のカーネルコードの多くではこんなベンチと違って
メモリ帯域が足を引っ張るから、
当然C2050実効性能は理論性能遠く及ばない。
一方、GTX480は単位時間当たりの演算回数に対して、
メモリ帯域がC2050よりも大きい分、
メモリ帯域による実効性能減が起きにくい。
結果として、カリカリにチューンしない限りは、GTX480とC2050の倍精度演算の
実効性能はそれほど大きくは変わらないようだ。

何が言いたいかというと、
C2050と比べるとGTX480はそこそこお買い得だってことね。
ECC、メモリ容量、倍精度演算の潜在能力と
メーカー出荷時のチェック品質が値段の違いなのかな。

288 名前:デフォルトの名無しさん[sage] 投稿日:2010/06/28(月) 07:46:15
CUDAクラスタを出荷してる会社の人から聞いた話だけど、
ごくまれにGTX系でCUDAカーネルを実行すると、
間違った結果しか返さないボードがあるらしい。
他のベンチマークは普通に完走するし、
ちゃんとディスプレイ出力もできて、
正常としか判断しようがないボードでも間違うのがあるそうだ。
原因は不明だが、
不良と思われるそのボードを交換すると元気に動くらしいから、
やはり一見正常な不良品なんだろうといってたよ。

その点Teslaは強いといってたよ。検査も一般ボードよりずっと厳しい分、
おかしな計算結果を返すボードはまだみたことないといってた。
GTX480でも十分性能はいいけれど、
Teslaは一枚は持っておくといざという時に安心らしい。

289 名前:デフォルトの名無しさん[sage] 投稿日:2010/06/28(月) 08:32:41
>>288
Tesla 1個の値段でGTXが何枚買えるかということを考えると
GTXを複数枚買って選別してしまえばよいということに・・・・・。
不良品の確率はベンダー依存だけど
4枚買ったくらいではよほど引きが強くないと不良品を引けない。
まぁ、Teslaは仲間内で誰かが1個持っておけばいいやくらいの感じかな。

292 名前:デフォルトの名無しさん[sage] 投稿日:2010/06/28(月) 09:06:02
>>289
たしかにその通りなんだけど、ボードの不良と結論付けるまで、
コードと何時間も格闘したり、ホストのメモリや電源など検証するの大変だよ。

小規模で4枚だけならなんとか頑張るとしても、大規模にやる場合は、
時間を金で買う意味でもTeslaをおすすめするってことだと思うよ。

ちゃんとコードが走るかはTeslaがあれば検証できる意味でも、
一枚はあるといいとのアドバイスね。

295 名前:デフォルトの名無しさん[sage] 投稿日:2010/06/28(月) 10:45:13
>>292
だからそれをNVIDIAの営業某氏は
「アキバ的発想はやめましょう」と揶揄するのだよね。
でも、10万円で2枚購入できるか1枚も購入できないかの差は
法人ユーザには大きいだろ。

297 名前:デフォルトの名無しさん[sage] 投稿日:2010/06/28(月) 11:27:48
>>295
むしろ法人こそTeslaボードのほうがいいんじゃないの?
Teslaはちゃんと使えれば、十分に値段分の価値があるよ。
個人ユーザーはTeslaがきついのはわかるけど、
法人はそれ使って値段以上の利益あげればいいわけだし。
もっともそれが可能かどうかは、
試してみないとわからないのが困り者だけど・・・。

302 名前:デフォルトの名無しさん[sage] 投稿日:2010/06/28(月) 13:21:43
C2050とGTX470はもってるが、GTX285はないよ。
C2050とGTX470では、倍精度演算の実効性能はそれほど違わない。
少なくとも俺のコードではね。

303 名前:デフォルトの名無しさん[sage] 投稿日:2010/06/28(月) 13:23:26
>>302
クレクレ君みたいで申し訳ないが、
サンプルプログラムのnbodyのベンチ結果を貰えない?
nbody -benchmark と nbody -benchmark -fp64 の2つで

304 名前:デフォルトの名無しさん[sage] 投稿日:2010/06/28(月) 13:30:51
ほれ
Run "nbody -benchmark [-n=]" to measure perfomance.
 -fullscreen (run n-body simulation in fullscreen mode)
 -fp64 (use double precision floating point values for simulation)
> Windowed mode
> Simulation data stored in video memory
> Single precision floating point simulation
> Compute 2.0 CUDA device: [Tesla C2050]
14336 bodies, total time for 10 iterations: 91.924 ms
= 22.358 billion interactions per second
= 447.154 single-precision GFLOP/s at 20 flops per interaction

Run "nbody -benchmark [-n=]" to measure perfomance.
 -fullscreen (run n-body simulation in fullscreen mode)
 -fp64 (use double precision floating point values for simulation)
> Windowed mode
> Simulation data stored in video memory
> Double precision floating point simulation
> Compute 2.0 CUDA device: [Tesla C2050]
14336 bodies, total time for 10 iterations: 328.314 ms
= 6.260 billion interactions per second
= 187.796 double-precision GFLOP/s at 30 flops per interaction

環境はWin7x64で、C2050でディスプレイ出力してる。

306 名前:デフォルトの名無しさん[sage] 投稿日:2010/06/28(月) 13:37:37
自分でGTX470でベンチ取ったら

516.879 GFlops@14336bodies
095.932 GFlops@14336bodies (-fp64)
だったんだが倍精度速くなってる・・ような・・・

307 名前:デフォルトの名無しさん[sage] 投稿日:2010/06/28(月) 13:49:17
FFTは使ってませんか。
倍精度FFTはGTX285からGTX480で倍速いんですがC2050はどうでしょう。

308 名前:デフォルトの名無しさん[sage] 投稿日:2010/06/28(月) 13:50:49
>>302
470のメモリバンド幅は133GB/s程度なのでC2050との差は小さいだろう。
480だと177GB/sもあるわけで。

309 名前:デフォルトの名無しさん[sage] 投稿日:2010/06/28(月) 13:52:57
>>307
FFTはデータサイズ次第だってば・・・。
まぁ、480のほうが速い場合もC2050のほうが速い場合もあります。

310 名前:デフォルトの名無しさん[sage] 投稿日:2010/06/28(月) 13:56:57
>>306

↓480での結果
[単精度]
15360 bodies, total time for 10 iterations: 73.826 ms
= 31.957 billion interactions per second
= 639.149 single-precision GFLOP/s at 20 flops per interaction

[倍精度]
15360 bodies, total time for 10 iterations: 595.640 ms
= 3.961 billion interactions per second
= 118.828 double-precision GFLOP/s at 30 flops per interaction

311 名前:デフォルトの名無しさん[sage] 投稿日:2010/06/28(月) 14:00:28
単精度では480が速いのに異論はない。
倍精度でもよっぽどチューンしない限り、480や470と
C2050のそれほど性能は変わらないよ。

315 名前:デフォルトの名無しさん[sage] 投稿日:2010/06/28(月) 15:48:35
メモリがネックにならないとき
Tesla/Geforceの単精度:Teslaの倍精度:Geforceの倍精度 = 4 : 2 : 1
メモリがネックになるとき
Tesla/Geforceの単精度:Teslaの倍精度:Geforceの倍精度 = 2 : 1 : 1
という感じだね

GTX480で倍精度が1/4に制限されていることは、NVIDIAは公式には発表していませんね。まあ、これだけ状況証拠(?)が揃った以上、ほぼ間違いないことなのでしょう。
1/4になったとしても、思っていたよりはGTX480の倍精度は良いですね。とりあえず買ってテストしてみたくなります。