NVIDIA vs AMD:GPGPUパフォーマンス


105

両方のコーディングの経験がある人から聞いてください。私自身、NVIDIAの経験しかありません。

NVIDIA CUDAは、競合他社よりもはるかに人気があるようです。(このフォーラムの質問タグを数えると、「cuda」は「opencl」3:1を上回り、「nvidia」は「ati」15:1を上回り、「ati-stream」のタグはまったくありません)。

一方、ウィキペディアによると、ATI / AMDカードは、特に1ドルあたりの可能性がはるかに大きいはずです。現在の市場で最速のNVIDIAカードであるGeForce 580($ 500)は、1.6の単精度TFlopsと評価されています。AMD Radeon 6970の価格は370ドルで、定格は2.7 TFlopsです。580には、772 MHzで512の実行ユニットがあります。6970には、880 MHzで1536の実行ユニットがあります。

NVIDIAに対するAMDの紙の利点はどれほど現実的ですか、そしてほとんどのGPGPUタスクで実現される可能性がありますか?整数タスクはどうなりますか?


1
興味深い質問ですが、本当にプログラミングに関係があるのかわかりません。
ポールR

25
それは本質的に2つのプログラミング言語とそれらの実装の実際的な側面についての質問です。だから私はイエスと言うでしょう。
ユージーン・スミス

2
この質問に対する適切な答えがC ++ AMPに照らしてどのようになっているのでしょうか。
Dmitri Nesteruk

2
ある時点で、NVIDIAハードウェアでは、AMDと比較してビットコインマイニングが非常に遅い理由を調べていました。結果のスレッド、「AMD Radeonはビットコインマイニングで3倍高速(SHA-256ハッシュパフォーマンス)」であり、興味深い情報を見つけることができます。あなたの質問。forums.nvidia.com/...
ロジャー・ダール

1
この質問は、回答者が精通しているアプリケーション分野、使用するハードウェアおよびソフトウェアなどに応じて、意見の集まりになる可能性があるようです。または、包括的な答えはSOフォーマットに適合するには広すぎるでしょう。閉じる投票。
njuffa

回答:


79

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

これは主に、nvidiaが科学的コンピューティング(BLAS、FFT)に必要な重要なライブラリを開発するために(お金と人で)かなりのリソースを投資しており、それを促進するために再び良い仕事をしたからです。これは、CUDAがati(またはOpenCL)と比較して、ここでタグを支配する理由である可能性があります

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


編集する 2013年1月12日

私がこの記事を書いてから2年が経過しましたが、それでも時々意見が集まるようです。いくつかのことを明確にすることにしました

  • AMDは彼らのゲームを強化しました。現在、BLASライブラリとFFTライブラリの両方を備えています。数多くのサードパーティライブラリもOpenCLを中心に作られています。
  • Intelは、OpenMPとOpenCLの両方をサポートするXeon Phiを導入しました。また、既存のx86コードを使用することもできます。コメントに記載されているように、現時点ではSSEなしの限定x86
  • NVIDIAとCUDAは、利用可能なライブラリの範囲で依然として優位を保っています。ただし、以前ほどOpenCLに重点を置いていない可能性があります。

つまり、OpenCLはこの2年間でギャップを埋めました。フィールドには新しいプレイヤーがいます。しかし、CUDAはまだ一歩先を行っています。


4
Xeon Phiは、x86コード実行の機能に制限があります。MMX / SSE / SSE *はありません。
osgx 2013年

@osgxありがとう。私はそれを述べるべきだった。
Pavan Yalamanchili 2013年

1
@osgxしかし、DP FPではうまく機能します
Csaba Toth

4
Xeon Phiには、SSEがサポートするものの4倍の512ビット幅のレジスターと命令があります。
zr。

59

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

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

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

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

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

私はNVIDIA shillではありません。私はそれがこの方法ではなく、2つ(またはそれ以上)の同等の魅力的なGPGPUプラットフォームがあることを望みます。競争は良いです。たぶんAMDはすぐにゲームを強化するでしょう-そして、近々登場するフュージョン製品は非常に説得力があるように見えます。しかし、今日どのカードを購入するか、そして今すぐにどこに時間を費やすかについて誰かに助言を与える際、私は良心的に両方の開発環境が同等に良いとは言えません。

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

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


2
私はATI Streamを使用してOpenCLを学習しています。ベクトル化についてのメモを評価してください:) NVIDIAのメリットはかなり大きいと思いますが、私はAMD / ATIと会社自体をサポートしているだけです。今後数年で間違いなく増加するので、コードもその準備を整えてほしい。
Garet Claborn、2011年

あなたがAMDのGCNとOpenCL 1.2についてあなたがどう思うかを見るのは興味深いでしょう。正味の違いはありますか?
danno 2013

3
@Jonathanこの素晴らしい投稿を書いてから3年になります。あなたの見解では、AMDプラットフォーム、コミュニティ、エコシステムがギャップを埋めたかどうか疑問に思いました。
バシリコーデ2014年

ビデオやGPGPUカードについてはそれほどではありませんが、プロセッサ自体については、私は常にAMDよりもIntelのファンでしたが、最近、AMDは新しいZENプロセッサをリリースしようとしています。インテルのトップi7プロセッサーに匹敵します。彼らの新しい技術は、それが命令のパターンを認識するので、それが機能するほど改善するはずです。したがって、彼らの時間と労力のほとんどは、GPUテクノロジではなく、この新しいプロセッサに費やされたと思います。しかし、Zenプロセッサがリリースされたら、Intelはもっと良いものになると確信しています。
Francis Cugler 2016

17

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

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

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

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


2
AMDはGCN(Graphics Core Next)を使用して、SIMDおよびVLIWからNVIDIAに類似したアーキテクチャ(SIMTおよびより柔軟な命令スケジューリング)に移行しました。
Aleksandr Dubinsky 2013年

1
@AleksandrDubinsky:そして、NVIDIAはCompute Capability 3.0のハードウェアを使用して、動的スケジューリングを削除することでAMDにより近づきました。私は彼らのアーキテクチャが中間のどこかに集まると思います。
Roger Dahl

1
過去に聞いたことがありますが、具体的な情報はありませんでした。これに関する詳細はどこにありますか?
Yakov Galka

7

OpenCLで繰り返しコーディングを行いました。そして、NVIDIAとATIでそれを実行した結果は、ほとんど同じです。同じ値($)カードでほぼ同じ速度。

どちらの場合も、速度はCPUと比較して約10倍から30倍でした。

CUDAはテストしませんでしたが、ランダムメモリフェッチの問題を魔法のように解決できるとは思えません。現在、CUDAとOpenCLはほぼ同じであり、CUDAよりOpenCLの方がより多くの未来を見ています。主な理由は、Intelがプロセッサ用のOpenCLを備えたドライバーを発表していることです。これは将来的に大きな進歩となるでしょう(CPUでOpenCLの16、32、または64スレッドを実行することは非常に高速で、GPUへの移植は本当に簡単です)。


7

FermiとKeplerのCUDAを数年使用した後、OpenCL for GCNカードでしばらく時間を過ごしましたが、それでもプログラミング言語としてCUDAを好み、オプションがあればCUDAを備えたAMDハードウェアを選択します。

NVIDIAとAMD(OpenCL)の主な違い:

AMDの場合:

  • Maxwellを使用しても、NVidiaのコマンド待機時間は長く、複雑なアルゴリズムは、両方の簡単な最適化の後、AMDで10倍速くなります(同じ理論上のTフロップを想定)。Kepler VS GCNのギャップは最大60%でした。この意味で、NVidia用に複雑なカーネルを最適化することは困難です。

  • 安いカード。

  • OpenCLは、他のベンダーが利用できるオープンスタンダードです。

Nvidiaの場合:

  • 信頼性の高い高サーバー負荷に適したテスラのハードウェアラインがあります。

  • 新しいマクスウェルは、はるかに電力効率が高いです。

  • コンパイラーとツールは、はるかに高度です。AMDはまだmaxregcoutパラメーターを実装できません。そのため、さまざまなハードウェアの占有率を簡単に制御できます。また、コンパイラーには、バージョンごとに変わる最適なコードがランダムにたくさんあるため、古いコードを半分ずつ再検討する必要があるかもしれません。突然、40%遅くなったためです。

この時点でGPGPUが目標である場合、CUDAが唯一の選択肢です。AMDを搭載したopencLはサーバーファームの準備ができておらず、コンパイラーは常に「ベータ版」であるように見えるため、AMD用の効率的なコードを書くのは非常に困難です。 。


フレッシュな回答ありがとうございます。「10倍速くなる可能性が高い」ユニットが何であるかを明確にできますか?パーセント?
Aleksandr Dubinsky

個人的な意見:ATIカードは、ある時点ではNvidiaより優れていましたが、ドライバーの更新サポートに欠けていたため、AMDは、Nvidiaがまだ同じ会社であるATIを完全に買収しました。また、Nvidiaはより良い更新ドライバーのサポートを備えています。これは、アプリケーションでパフォーマンスを発揮するために、カードのユーザーエンド内にあります。誤解しないでください。どちらのテクノロジーも独自の方法で優れており、どちらにもローエンドの安価なカードと、より高価なハイエンドのカードがあります。時間の経過とともに、私はATIからNvidiaに移行しました。開発に関しては、Nvidiaははるかに優れた機能セットとプログラム可能なAPIまたはライブラリを備えています。
Francis Cugler

6

GPGPUは初めてですが、科学計算(物理学の博士号)の経験があります。私は研究チームをまとめており、計算にGPGPUを使用したいと考えています。利用可能なプラットフォームを選択する必要がありました。いくつかの理由から、Nvidiaを選択しました。ATIの方が紙の上では高速かもしれませんが、Nvidiaはより成熟したプラットフォームとより多くのドキュメントを持っているため、このプラットフォームのピークパフォーマンスに近づけることができます。

Nvidiaには学術研究サポートプログラムもあり、サポートを申請できます。TESLA2075カードを受け取ったところ、とても満足しています。ATIとIntelのどちらがこの方法での研究をサポートしているかはわかりません。

OpenCLについて聞いたところ、一度にすべてを実現しようとしているということです。OpenCLコードの移植性が向上することは事実ですが、どちらのプラットフォームの機能も完全には活用されない可能性があります。もう少し学び、リソースをより有効に活用するプログラムを書きたいと思います。今年発売されたばかりのTESLA K10では、Nvidiaが4.5 TeraFlopsの範囲にあるため、Nvidiaが遅れていることは明らかではありません...しかし、特にGPGPUユニットの移動に成功した場合、Intel MICが真の競争相手であることが判明する可能性があります。マザーボード。しかし、今のところ、Nvidiaを選択しました。


NVidiaの(サポートの欠如)に対する意見については、@ AndrewCookeの回答をご覧ください。
Aleksandr Dubinsky

5

OpenCL浮動小数点パフォーマンスの評価における私の経験は、NVIDIAカードを支持する傾向があります。私は、8600M GTからGTX 460までの範囲のNVIDIAカードでいくつかの浮動小数点ベンチマークを使用してきました。NVIDIAカードは、これらのベンチマークで理論上の単精度のピークの約半分を常に達成しています。
私が使用したATIカードは、単精度ピークの3分の1を超えることはめったにありません。ATIでの私の経験は歪んでいることに注意してください。私は5000シリーズのカードを1枚しか使用できませんでした。私の経験は、主にHD 4000シリーズのカードでしたが、十分にサポートされていませんでした。HD 5000シリーズカードのサポートははるかに優れています。


1

議論に加えたいと思います。ソフトウェアのビジネスでは、生の単精度パフォーマンスを生産性に妥協することができますが、すでに指摘したように、OpenCLを使用してATIのハードウェアで達成できるほど多くのパフォーマンスを達成することはできないため、妥協する必要はありません。 NVIDIAのハードウェアでCUDAで書いた場合。

そしてそうです、CUDA向けのx86コンパイラーのPGIの発表により、OpenCLでの記述により多くの時間とリソースを費やす理由はありません:)

PS:私たちのほとんどすべてのGPGPU作業がCUDAで行われているため、私の議論は偏っている可能性があります。CUDAのコアIP / CV機能の一部を高速化する画像処理/コンピュータビジョンライブラリCUVI(ビジョンおよびイメージング用CUDA)があります。


0

CudaはOpenCLの3〜4年前にリリースされたため、今日のOpenCLよりも確かに人気があります。OpenCLがリリースされて以来、NvidiaはCUDAに重点を置いているため、言語にあまり貢献していません。彼らはどのドライバーに対してもopenCL 1.2バージョンをリリースしていません。

ヘテロジニアスコンピューティングおよびハンドヘルドデバイスに関する限り、OpenClは近い将来、さらに人気を博するでしょう。現在、OpenCLへの最大の貢献者はAMDであり、それは彼らのサイトで見ることができます。


-2

私の経験では:

  • 最高の絶対パフォーマンスが必要な場合は、最新のハードウェア反復に誰がいるかを確認し、そのスタック(最新/ベータリリースを含む)を使用する必要があります。

  • お金のために最高のパフォーマンスが必要な場合は、「プロフェッショナル」カードではなくゲーマーカードを目指しており、異なるプラットフォームを対象とする柔軟性はopenclを支持します。

  • 特に始めたばかりの場合、cudaはより洗練され、より多くのツールとライブラリーを持つ傾向があります。

最後に、私の個人的な見解は、nvidiaからの恐ろしい「サポート」の後(クライアントが待っている間、テスラは死に、数か月間は変更されませんでした):openclでジャンプして出荷する柔軟性には、パフォーマンスがわずかに低下するリスクがあります。 nvidiaがリリースサイクルで先行しているとき。


nvidiaからの「サポート」での同様の経験:クラッシュlibcuda.so(OpenCLを使用した場合のみ、CUDAは機能します)およびそれらからの応答がまったくありません。
eudoxos 2012年

1
私たちのディーラーでは、死んだテスラを交換することに問題はありません。通常、不良ハードウェアを送る前に新しいハードウェアを受け取ります。そのため、NVidiaの問題ではなく、ディーラーの問題だと思います。
ガエタノメンドーラ

テスラは非常に信頼性が高いと思いました。どのようなマーケティングの混乱。
Aleksandr Dubinsky 2013年

OpenCLはパフォーマンスの移植性がないため、1つの会社が新しいフラグシップをリリースするたびに(2つの最適化されたコードブランチを維持せずに)出荷することはできません。また、NVIDIAのOpenCLサポートはいくつかのバージョンよりも遅れており、おそらくメンテナンスが不十分です。
Aleksandr Dubinsky
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.