Microsoft が Nvidia と密接に協力して AMP のパフォーマンスを向上させていることを読みました。
しかし、私の質問は次のとおりです。AMP は Microsoft による CUDA の置き換えですか? それとも、NVIDIA CUDA ビデオ カードが使用可能な場合、AMP は CUDA ドライバーを使用しますか? AMP は openCL の代替品ですか?
私はまだかなり混乱しています..
C++ AMP はライブラリです (その一部として、重要な言語拡張も導入されました)。C++ AMP はオープン仕様であるため、他の低水準言語に実装できます。Microsoft の実装は DirectCompute (したがって HLSL) に基づいて構築されていますが、C++ AMP を使用している場合は完全に隠されています (これが、C++ AMP がオープンな仕様であり、API サーフェスで DirectX を公開しない理由です)。C++ AMP の詳細については、ブログの右側にあるリソースに従ってください (今後も追加していきます): http://blogs.msdn.com/b/nativeconcurrency/
あなたは Microsoft が NVIDIA と協力して C++ AMP のパフォーマンスを向上させているという声明を出しましたが、それは真実ではありません。Microsoft は、NVIDA、AMD、およびその他のパートナーと協力して、C++ AMP オープン仕様を作成しました。また、Microsoft はハードウェア ベンダーと協力して、GPU コンピューティング テクノロジが正しく動作するために必要な安定したビデオ カード ドライバーがハードウェア ベンダーにあることを確認します。
あなたはまた、混乱を表明し、いくつかの用語を捨てました. OpenCL は GPU コンピューティング (Khronos による)、DirectCompute (Microsoft による)、CUDA (NVIDIA による) へのアプローチです。これらはすべて個別のテクノロジであり、それぞれが GPU への独自のパス (常に何らかのドライバーを介して) を持ち、それぞれに独自の長所、長所、および短所があります。一方が他方に取って代わるわけではなく、一方が他方よりも普遍的に優れているわけではありません。もう 1 つの選択肢として、その組み合わせには C++ AMP もあり、同じステートメントがそれに適用されます。どちらを使用するかは、お客様の自由です。
C++ AMP は、CUDA を含む並列プログラミング テクノロジをサポートするための言語拡張と API のセットです。
Microsoft には CUDA (Direct Compute) の直接の競合相手もあり、一般的に独自の独自のグラフィックス標準を好んでいるため、実際に何が起こるかを確認する必要があります。
Microsoft の見解については、これらのレクチャーを参照してください。