105

両方のコーディング経験のある方からのご意見をお待ちしております。私自身、NVIDIAの経験しかありません。

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

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

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

4

10 に答える 10

80

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

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

一般に 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 はまだ少し先を行っています。

于 2011-01-09T17:23:40.437 に答える
59

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

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

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

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

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

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

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

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

于 2011-01-09T23:36:33.527 に答える
17

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

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

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

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

于 2012-03-23T20:22:43.070 に答える
7

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

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

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

于 2011-05-26T23:27:50.143 に答える
6

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

Nvidia には学術研究サポート プログラムもあり、サポートを申し込むことができます。私はちょうど TESLA 2075 カードを受け取りました。これには非常に満足しています。ATI や Intel がこの方法で研究をサポートしているかどうかはわかりません。

OpenCL について私が聞いたのは、一度にすべてを実現しようとしているということです。OpenCL コードの移植性が向上することは事実ですが、どちらのプラットフォームの機能も十分に活用できない可能性があります。もう少し勉強して、リソースをより有効に活用するプログラムを書きたいと思っています。今年発表されたばかりの TESLA K10 では、Nvidia は 4.5 TeraFlops の範囲にあるため、Nvidia が遅れを取っているかどうかは明らかではありません。しかし、Intel MIC は、特に GPGPU ユニットをマザーボード。しかし、今のところ、Nvidia を選択しました。

于 2012-09-04T17:47:56.730 に答える
5

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

于 2011-01-09T18:46:50.003 に答える
1

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

そして、はい、CUDA 用の x86 コンパイラの PGI の発表により、OpenCL での記述にこれ以上の時間とリソースを費やす正当な理由はありません :)

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

于 2011-01-10T10:32:20.323 に答える
0

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

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

于 2013-04-07T06:50:27.523 に答える
-2

私の経験では:

  • 最高の絶対的なパフォーマンスが必要な場合は、最新のハードウェア イテレーションを使用しているユーザーを確認し、そのスタック (最新/ベータ リリースを含む) を使用する必要があります。

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

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

最後に、nvidia からのぞっとするような「サポート」の後、私の個人的な見解 (私たちは死んだ tesla を手に入れましたが、クライアントが待っている間、何ヶ月も変更されませんでした): nvidia がリリース サイクルで先行している場合。

于 2012-02-27T23:40:38.930 に答える