NVIDIAとAMD:GPGPUのパフォーマンス



Nvidia Vs Amd Gpgpu Performance



解決:

比喩的に言えば、atiはnvidiaと比較して優れたエンジンを備えています。しかし、nvidiaはより良い車を持っています:D

これは主に、nvidiaが科学計算に必要な重要なライブラリ(BLAS、FFT)を開発するために(お金と人に)かなりの量のリソースを投資し、それを促進するために再び良い仕事をしたためです。これが、ati(またはOpenCL)と比較してCUDAがここのタグを支配している理由かもしれません



一般にGPGPUタスクで実現される利点については、メモリ転送帯域幅、優れたコンパイラ、そしておそらくドライバなど、他の問題(アプリケーションによって異なります)に依存することになります。より成熟したコンパイラー、Linux上でより安定したドライバー(Linuxは科学計算で広く使用されているため)を備えたnvidiaは、(少なくとも今のところは)CUDAを支持してバランスを傾けます。


編集 2013年1月12日



私がこの投稿をしてから2年が経ちましたが、それでも時々意見を集めているようです。だから私はいくつかのことを明確にすることにしました

  • AMDは彼らのゲームを強化しました。現在、BLASライブラリとFFTライブラリの両方があります。多数のサードパーティライブラリもOpenCLの周りに出現しています。
  • Intelは、OpenMPとOpenCLの両方をサポートするXeonPhiを世に送り出しました。また、既存のx86コードを使用する機能もあります。 コメントに記載されているように、現時点ではSSEなしの限定x86
  • NVIDIAとCUDAは、利用可能なライブラリの範囲でまだ優位に立っています。ただし、以前ほどOpenCLに焦点を当てていない可能性があります。

つまり、OpenCLは過去2年間でギャップを埋めました。この分野には新しいプレーヤーがいます。しかし、CUDAはまだパックより少し進んでいます。


CUDAとOpenCLについては強い感情はありません。おそらくOpenCLは、オープンスタンダードであるというだけで、長期的な未来です。



しかし、GPGPU(グラフィックスパフォーマンスではなくGPGPU)用の現在のNVIDIAとATIカードについては、私は強い意見を持っています。それにつながるために、現在のビッグクラスターのトップ500リストでNVIDIAがAMD 4システムを1にリードし、gpgpu.orgでNVIDIAの検索結果(論文、オンラインリソースへのリンクなど)を示していることを指摘します。 AMD 6:1の結果を上回っています。

この違いの大部分は、利用可能なオンライン情報の量です。 NVIDIACUDAゾーンとAMDのGPGPUDeveloperCentralを比較してください。開発者が立ち上げるためのそこにあるものの量は、比較にさえ近づいていません。 NVIDIAのサイトでは、おそらくあなたのような問題に取り組んでいる人々からの大量の論文(および寄稿されたコード)を見つけることができます。 NVIDIAやその他の場所からの大量のオンラインクラスや、開発者のベストプラクティスガイドなどの非常に便利なドキュメントがあります。無料の開発ツール(プロファイラー、cuda-gdbなど)が利用できることで、NVIDIAは圧倒的に傾いています。

(編集者:この段落の情報はもはや正確ではありません。)そして、いくつかの違いはハードウェアでもあります。 AMDカードは、ピークフロップの点でより優れたスペックを備えていますが、そのかなりの部分を取得できるようにするには、問題を多くの完全に独立したストリームプロセッサに分割するだけでなく、各作業項目もベクトル化する必要があります。 GPGPUingのコードは十分に難しいことを考えると、その余分なアーキテクチャの複雑さは、いくつかのプロジェクトを作成または中断するのに十分です。

そして、これらすべての結果として、NVIDIAユーザーコミュニティは成長を続けています。 GPUクラスターの構築を考えている3つまたは4つのグループのうち、AMDカードを真剣に検討しているグループはありません。そしてそれは、NVIDIA側で論文を書いたり、コードを提供したりするグループがさらに増えることを意味します。

私はNVIDIAのサクラではありません。そうではなく、2つ(またはそれ以上!)の同等に魅力的なGPGPUプラットフォームがあったらいいのにと思います。競争は良いです。たぶんAMDはすぐにゲームを強化するでしょう-そして今後のフュージョン製品は非常に魅力的に見えます。しかし、今日どのカードを購入するか、そして今どこに力を注ぐかについて誰かにアドバイスを与えるとき、私は良心的に両方の開発環境が等しく良いとは言えません。

追加するために編集 :上記は元の質問に答えるという点では少し楕円形だと思うので、もう少し明確にしましょう。ハードウェアから得られるパフォーマンスは、無限の時間が利用できる理想的な世界では、基盤となるハードウェアとプログラミング言語の機能にのみ依存します。しかし実際には、一定の投資時間で得られるパフォーマンスの量は、開発ツール、既存のコミュニティコードベース(たとえば、公開されているライブラリなど)にも大きく依存します。これらの考慮事項はすべて、NVIDIAを強く示しています。

(編集者:この段落の情報はもはや正確ではありません。)ハードウェアに関しては、AMDカードのSIMDユニット内でのベクトル化の要件により、NVIDIAハードウェアよりも紙のパフォーマンスを達成することがさらに困難になります。


AMDとNVIDIAのアーキテクチャの主な違いは、AMDはアルゴリズムの動作をコンパイル時に決定できる問題に最適化されているのに対し、NVIDIAはアルゴリズムの動作を実行時にしか決定できない問題に最適化されていることです。

AMDのアーキテクチャは比較的単純であるため、ALUにより多くのトランジスタを使用できます。問題がコンパイル時に完全に定義され、ある程度静的または線形の方法でアーキテクチャに正常にマッピングできる限り、AMDがNVIDIAよりも高速にアルゴリズムを実行できる可能性が高くなります。

一方、NVIDIAのコンパイラは、コンパイル時の分析が少なくなっています。代わりに、NVIDIAはより高度なアーキテクチャを備えており、実行時にのみ出現するアルゴリズムの動的な動作を処理できるロジックにより多くのトランジスタを費やしています。

GPUを使用するほとんどのスーパーコンピューターがNVIDIAに対応しているという事実は、科学者が計算の実行に関心を持っているタイプの問題であり、一般に、AMDよりもNVIDIAのアーキテクチャに適していると思います。