nVidia GPGPU の実力は OpenCL でなく CUDA で真価を発揮?

先日、OpenCLのベンチマークを漁っていましたら、N体シミュレーションを使ったベンチマークソフトを公開されている日本の団体(団体概要の掲載が無いので、どんな団体なのか不明ですが、大手企業との取引実績も有る様で謎です)が有る事を知りまして、早速ベンチマークを試してみました。

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

GeForce GTS250(9800 GTX+) (左がCUDA 右がOpenCL)
GeForce9800GTX+CUDA.pngGeForce9800GTX+OpenCL.png

GeForce GTX285 (左がCUDA 右がOpenCL)
GTX285-CUDA.pngGTX285-OpenCL.png

GeForce GTX580 (左がCUDA 右がOpenCL)
GTX580-CUDA.pngGTX580-OpenCL.png

GeForce GTX580 2Way SLI (左がCUDA 右がOpenCL)
N-Body-GTX580-SLI-CUDA.pngN-Body-GTX580-SLI-OpenCL.png

Quadro 4000 2Way SLI (左がCUDA 右がOpenCL)
N-Body-Quadro4000-SLI-CUDA.pngN-Body-Quadro4000-SLI-OpenCL.png

Tesla C1060 2Way (左がCUDA 右がOpenCL)
TeslaC1060-2way-CUDA.pngTeslaC1060-2way.png

Tesla C2070 2Way (左がCUDA 右がOpenCL)
N-Body-Tesla-C2070-2Way-CUDA.pngN-Body-Tesla-C2070-2Way-OpenCL.png

アプリケーションのチューニングによるところも大きいとは思いますが、この結果から推測すると、CUDAとOpenCLではCUDAの方が性能が高く設定されている(又は効率良くプログラミング出来る)のではないかと思われます。

追加情報:
ベンチマーク作者の方から情報を頂きました。

注意点として、
1:実際にはCUDAとOpenCLの性能差は有りません
2:CUDA版ではコンパイラオプションにて簡略化した計算を行っています
3:CUDA版ではデバイス情報から適切な質点数を割り出しています

つまり、筆者の推測が外れてしまった訳ですが・・・

※筆者同様にCUDAの方が性能が高いと誤解・誤認しない様、御注意下さい。


参考までにRadeonの結果も掲載しておきます。
Radeonではコア数の差が、そのままスコア差になっていますね。非常に判り易い結果です。

Radeon HD4890 @ OpenCL (左 デフォルト、右 -kernel local4way -b 32)
HD4890.pngN-Body-HD4890-local4way-b32.jpg


Radeon HD5870 @ OpenCL (左 デフォルト、右 -kernel naive4way -b 64)
HD5870.pngN-Body-HD5870-naive4way-b64.png


Radeon HD6970 @ OpenCL (左 デフォルト、右 -kernel naive4way -b 64)
HD6970.pngN-Body-HD6970-naive4way-b64.png


Radeon HD7970 @ OpenCL (左 デフォルト、右 -kernel local -b 64)
HD7970.pngN-Body-Tahiti-b64-local.jpg


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版はエラーで起動できませんでした。
 N-Body-GTS250-AthlonMP-OpenCL-2.png
 かなり古いパソコンでも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版はエラーで起動できませんでした。
 N-Body-GeForce8600GT-PentiumIII-S-OpenCL.png
 前世紀の遺物でもGPGPUで数十~数百GFLOPSのPCに早変わり?
関連記事
スポンサーサイト

コメントの投稿

非公開コメント

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

Re: nvidiaでx3GPU x4GPUのnbodybenchmark

> win7で動くnvidiaでx3GPU x4GPUのnbodybenchmark softはありませんですか?

この記事を書いた2012年当時、このベンチマークの制作元にコンタクトをとり共同開発という形で筆者が多GPU対応の改造を行いました。
http://dualsocketworld.blog134.fc2.com/blog-entry-278.html

ですが、このベンチマークを開発されたAOCプランニング様のHPが閉鎖になり、版権上、私が単独で一般公開は出来ません。

メルアドを連絡頂ければ・・・

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

Re: nvidiaでx3GPU x4GPUのnbodybenchmark

メールを送りましたのでお読み下さい。
リアルタイムで演算速度を画面に表示し無限ループしますので適当な所でスクリーンショットを取りウインドウを閉じて下さい。

なほ、下記の場合は強制シャットダウンする事が有りますので御注意下さい。
1:エアフロー不備(普段よりGPUが発熱します)
2:電源容量不足(仕様上の上限を超えるケースが有ります御注意下さい)

プロフィール

DualSocketTheWorld

Author:DualSocketTheWorld
自作を始めて20台目くらいになりますが、最初からデュアルソケット限定(始めた当時はデュアルスロット)で自作しており、近年になってAMD K6を試したくなりSocket7でK6-2+のシングル構成で組んだのがシングル初です。

シングルマザー(含:シングルソケットマルチコア)や4ソケット以上の自作は基本的にしませんし、メーカー製PCの改造も基本的にはしません(ノートPCのSSD化くらいはしますが・・・)

基本路線はワークステーションと呼ばれる分野での自作で、OSもWindows系であればProfesionalが主な対象に成ります。

ゲーマーの様なOverClockは行わず、WS路線としてハイエンドCPUとハイエンドGPUの組み合わせで定格或いはDownClockで発熱を抑えつつ、その時のアーキテクチャに置いて爆速かつ静音を目指し、30年以上の長期に渡り稼動状態をキープする事を目指します。

※基本的にリンクフリーです。どこでも自由にどうぞ。

※画像は時々変ります。

※お決まりの文章ですが、改造は個人の責任で行ってください。ここに記載された情報は間違いを含んでいる可能性が有り、それを元に製作や改造などをして失敗しても筆者は一切責任持てませんので悪しからず。

筆者略歴:
小学生時代にゴミ捨て場で拾ったジャンクテレビ数台を分解して部品を取り出し真空管アンプを自作、中学生時代にPC8801mkⅡsrでZ80アセンブラを始める。社会人になって初のプログラムは弾道計算、後に医療系・金融系プログラマ~SEを経て100~200人規模プロジェクトのジェネラルマネジャを数年経験、独立して起業。現在は不動産所得で半引退生活。
(人物特定を避ける目的で一部経歴を変更しています)

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
アクセスカウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR