2012-04-24 19 views
11

私は、AMPのパフォーマンスを改善するために、MicrosoftがNvidiaと密接に協力していると読んでいます。CUDA/openCLとC++ AMPの混乱

私の質問は、AMPはCUDAで置き換えられたのですか?または、AMPはNVIDIA CUDAビデオカードが利用可能な場合、CUDAドライバを使用しますか? AMPはopenCLの代用品ですか?私はまだかなり混乱している

..

+1

C++ - AMPコンパイラが直接GPUマシンコードを生成するか、Cコードを生成してCUDAまたはOpenCLコンパイラに渡すかは重要ですか?いずれにしても、CUDAまたはOpenCLの代わりにC++ - AMPを記述します。 –

+1

また、「CUDAビデオカード」はありません。 CUDAはハードウェアで実装されていないため、GPUのネイティブ命令セット(すなわちフェルミ)に変換(コンパイル)されます。 –

+1

[C++ AMP仕様](http://download.microsoft.com/download/4/0/E/40EA02D8-23A7-4BD2-AD3A-0BFFFB640F28/CppAMPLanguageAndProgrammingModel.pdf)では、CUDAまたはOpenCLについては言及していません。 – ildjarn

答えて

19

C++ AMPは、ライブラリである(そして、それの一部として重要な言語拡張も導入された)を参照してください。 C++ AMPはオープン仕様なので、他の低レベル言語でも実装できます。 Microsoftの実装はDirectCompute(そしてHLSL)上に構築されていますが、C++ AMPを使用しているときは完全に隠されています(C++ AMPはオープン仕様であり、DirectXはAPIサーフェスで公開されません)。http://blogs.msdn.com/b/nativeconcurrency/

C++ AMPのパフォーマンスを向上させるためにMicrosoftがNVIDIAで作業していることについて、声明を出しました。これは、C++ AMPのパフォーマンスを改善するためのものです。本当。マイクロソフトは、NVIDA、AMDなどのパートナーと協力して、C++ AMPオープン仕様を作成しました。マイクロソフトはまた、ハードウェアベンダーと協力して、ハードウェアベンダーがGPUコンピューティングテクノロジが正しく動作するために必要な安定したビデオカードドライバを確保していることを確認しています。

あなたも混乱を表明し、いくつかの用語を投げ捨てました。 OpenCLは、DirectCompute(Microsoft)と同様にGPUコンピューティング(Khronos)のアプローチであり、CUDA(NVIDIA)も同様です。これらはそれぞれ独立したテクノロジーであり、それぞれ独自のメリット、長所、短所を持つGPUへの独自のパス(常に何らかのドライバを介して)があります。 1つは他のものを置き換えるものではなく、もう1つは普遍的に他のものより優れているわけではありません。このミックスにはC++ AMPもあります。もう1つの選択肢として同じステートメントが適用されます。選択肢は、あなたが使用することを決定したものです。

+1

ありがとうございました。すぐにあなたのブログを見てみましょう! –

+0

Channel9で "Heterogeneous Computing and C++ AMP"の話をちょっと見てみましょう。非常に興味深い。 – Contango

3

C++ AMPは、CUDAを含む並列プログラミング技術をサポートするための言語extentionsとAPIのセットです。

マイクロソフトはCUDA(ダイレクトコンピューティング)の直接のライバルでもあり、一般的に独自のグラフィックス標準を優先しているため、実際にそれが起こるのを見なければなりません。

それにマイクロソフトの見解についてはthese lectures

+4

C++ AMPは主にライブラリです。言語拡張は非常に小さいです - キーワードの再利用を制限し、tile_static記憶域指定子です。あなたがC++ AMP - parallel_for_each、array_viewなどと思うことは、すべてライブラリではない言語です。それ以外の場合はあなたの答えが立つ。 –

+1

@KateGregory - はい、私は詳細には入っていませんでしたが、C++/CLRのような余分なフックがあるようでしたので、私はそれをエクステンションと呼ぶ方が安全だと思いました –

+3

マーティン、スクリーンキャストにリンクしていただきありがとうございます。 C++ AMPはCUDAと関係がありません。 CUDAというマーケティング用語をCUDAの技術と混同していると思われるかもしれませんが、C++ AMPのオープン・スペックはCUDAとの関係がなく、C++ AMPのMicrosoft実装はCUDAと関係がありません。また、C++ AMPは一連の言語拡張ではなく、ほとんどがライブラリです。 C++ AMPの一部として、一般的な言語機能が導入されました。これはC++ AMPとは関係なく、現時点ではC++ AMPでのみ使用されています。また、C++ AMPとCLRの間には全く関係がありません。 –