N-BodyのCPUでの結果は別記事で掲載しています。
Tahitiでカーネルオプションを変更して実行した結果を別記事で掲載しています。
複数GPU環境で1GPU分の性能しか出ない事への対策版を製作しています。
GeForce GTS250(9800 GTX+) (左がCUDA 右がOpenCL)


GeForce GTX285 (左がCUDA 右がOpenCL)


GeForce GTX580 (左がCUDA 右がOpenCL)


GeForce GTX580 2Way SLI (左がCUDA 右がOpenCL)


Quadro 4000 2Way SLI (左がCUDA 右がOpenCL)


Tesla C1060 2Way (左がCUDA 右がOpenCL)


Tesla C2070 2Way (左がCUDA 右がOpenCL)


アプリケーションのチューニングによるところも大きいとは思いますが、この結果から推測すると、
追加情報:
ベンチマーク作者の方から情報を頂きました。
注意点として、
1:実際にはCUDAとOpenCLの性能差は有りません
2:CUDA版ではコンパイラオプションにて簡略化した計算を行っています
3:CUDA版ではデバイス情報から適切な質点数を割り出しています
つまり、筆者の推測が外れてしまった訳ですが・・・
※筆者同様にCUDAの方が性能が高いと誤解・誤認しない様、御注意下さい。
参考までにRadeonの結果も掲載しておきます。
Radeonではコア数の差が、そのままスコア差になっていますね。非常に判り易い結果です。
Radeon HD4890 @ OpenCL (左 デフォルト、右 -kernel local4way -b 32)


Radeon HD5870 @ OpenCL (左 デフォルト、右 -kernel naive4way -b 64)


Radeon HD6970 @ OpenCL (左 デフォルト、右 -kernel naive4way -b 64)


Radeon HD7970 @ OpenCL (左 デフォルト、右 -kernel local -b 64)


Radeon HD7970 は GeForce GTX580 の概ね倍のピーク性能ですね。
汎用的なGPGPUソフトを製作する場合、GPUやOSの制限を受けない OpenCL が圧倒的に有利ですが、特定の環境下で演算誤差よりも速度を優先して最高の性能を出そうとする場合は CUDA の方が良いケースがあるかもしれません・・・というか、nVidia の戦略なのかもしれません。
Intel が Intel CPU 用に OpenCL SDK の正式版を無償配布していますので、Intel CPU に内臓された AVX や GPGPU? が利用出来る事を考えると一般に流通するソフトを製作する場合はCUDAより、OpenCLが圧倒的に有利です。
AMDも同様にAMD製のCPU/GPUの両方で利用出来るOpenCL SDKを無償配布していますのでOpenCLであればAPUなどでも利用出来ます。
DirectComputeという道もありますが、Windowsに限定される事と、性能的に劣る事から、やはりOpenCL有利でしょう。
C++ AMP に付いては、今の所はなんとも言えません。オープンではない企業がクラウドを取り込んだヘテロジニアスマルチコア環境での開発・・・と言われても、問題噴出の連続でIT技術者に殺人的サイクルでトライ&エラーを強要しそうな悪寒がしています。
番外編?
5号機(構成変更)
M/B:Tyan TigerMPX-4M
CPU:Athlon MP 2800+ (K7 Barton) DUAL
GPU:玄人志向PCIEX1-PCI@PCI(32bit/66MHz) + LowProfile GTS250(GreenEdition)
※OpenCL版N-Bodyのみ動作しました。CUDA版はエラーで起動できませんでした。

かなり古いパソコンでもGPUをそれなりにする事で200GFLOPSを超えました。
GPUはGTS250のGreenEdition(コアクロックを738->600MHzに落とした低消費電力版)ですから冒頭の318.4GFLOPSよりスコアが悪いですが、クロック比に従って1.23倍すると289.2GFLOPSですから近い値に成ります。他にメモリクロックも低いですし、そもそもPC本体が10年前の遺物ですから、これだけ性能が出れば十分ではないでしょうか?
6号機
M/B:SuperMicr● P3DRE
CPU:PentiumIII-S 1.4GHz DUAL
GPU:Albatron PCI 8600GT-256X@PCI(32Bit/66MHz)
※OpenCL版N-Bodyのみ動作しました。CUDA版はエラーで起動できませんでした。

前世紀の遺物でもGPGPUで数十TFLOPSのPCに早変わり?
- 関連記事
- N-Body を CPU で (01/23)
- nVidia GPGPU の実力は OpenCL でなく CUDA で真価を発揮? (01/18)
- DUAL GPU での Radeon HD7970 (Tahiti) @ OpenCL ベンチ (01/14)



