0

並列数学のためのCUDA対DirectX10。あなたがそれについて持っている考えはありますか?

4

5 に答える 5

3

ターゲット アーキテクチャが nVidia チップを使用していることがわかっている場合は、おそらく CUDA の方が適しています。データ転送、命令パス、および操作の順序を完全に制御できます。また、下位レベルで作業している場合は、__syncthreads の呼び出しを大幅に減らすこともできます。

DirectX 10 の方がインターフェイスしやすいと思いますが、速度の最適化を本当に推進したい場合は、余分なレイヤーをバイパスする必要があります。また、DirectX 10 は、特定のアルゴリズムに応じて、テクスチャ メモリ、定数メモリ、共有メモリをいつ使用するかを認識しません。

テスラ C1060 などにアクセスできる場合は、CUDA の方がはるかに優れた選択肢です。GPGPU の詳細を知っていれば、本当に高速化できます。Tesla と私のデスクトップでは、ある特定のアルゴリズムで 188 倍の高速化が見られました。

于 2009-03-10T17:15:41.290 に答える
1

CUDAは扱いにくいと思います。これは C ではなく、そのサブセットです。倍精度浮動小数点はネイティブにサポートされておらず、エミュレートされています。ただし、単精度の場合は問題ありません。投げるタスクの種類によって異なります。データを価値あるものにするためには、データを渡すよりも多くの時間を並列計算に費やさなければなりません。しかし、その問題は CUDA に固有のものではありません。

並列コンピューティングの業界標準になると思われる Apple の OpenCL を待ちたいと思います。

于 2009-03-09T06:14:43.960 に答える
0

それらの間で決定するのは簡単なはずです。

アプリが Windows 固有であることを許容できる場合でも、DirectX コンピューティングを検討できます。それ以外の場合は、CUDA または OpenCL を使用してください。

アプリが NVIDIA のベンダー ロックを許容できない場合は、CUDA を使用できず、OpenCL または DirectX Compute を使用する必要があります。

アプリが DirectX 相互運用を行っている場合、CUDA/OpenCL ではグラフィックス API 相互運用を行うコンテキスト スイッチのオーバーヘッドが発生し、DirectX コンピューティングでは発生しないことを考慮してください。

これらの基準の 1 つ以上がアプリケーションに影響しない限り、大規模な並列ツールチェーンの偉大な祖先である CUDA を使用してください。

于 2011-04-23T18:29:08.940 に答える
0

ええと、CUDA は移植可能です...私に言わせれば、それは大きな勝利です...

于 2009-03-09T06:12:45.027 に答える