並列数学のためのCUDAとDirectx 10。あなたはそれについて何か考えがありますか?

StackOverflow https://stackoverflow.com/questions/625162

  •  05-07-2019
  •  | 
  •  

質問

並列数学のCUDAとDirect X 10。あなたはそれについて持っていますが、

役に立ちましたか?

解決

CUDAは、ターゲットアーキテクチャがnVidiaチップを使用していることがわかっている場合、おそらくより良いオプションです。データ転送、命令パス、操作の順序を完全に制御できます。また、下位レベルで作業している場合は、__ syncthreads呼び出しをはるかに少なくして対処できます。

DirectX 10は簡単にインターフェイスできますが、速度の最適化を本当に推進したい場合は、余分なレイヤーをバイパスする必要があります。また、DirectX 10は、特定のアルゴリズムに依存するのと同様に、テクスチャメモリとコンスタントメモリと共有メモリのどちらを使用すべきかを認識しません。

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

他のヒント

CUDAは扱いにくいと思います。 Cではなく、そのサブセットです。倍精度浮動小数点をネイティブでサポートせず、エミュレートされます。単精度の場合でも大丈夫です。それはあなたがそれに投げるタスクのタイプに依存します。使用する価値があるデータを渡すために費やすよりも、並行してコンピューティングに多くの時間を費やす必要があります。しかし、その問題はCUDAに固有のものではありません。

AppleのOpenCLは、並列コンピューティングの業界標準になると思われます。

さて、CUDAは移植可能です...私に聞けば、それは大きな勝利です...

CUDAは、倍精度浮動小数点演算のサポートについては何の関係もありません。 これは利用可能なハードウェアに依存します。 9、100、200およびTeslaシリーズは、倍精度浮動小数点演算 tesla をサポートしています。

それらを簡単に決定できるはずです。

アプリがWindows固有であることを許容できる場合でも、DirectX Computeを検討できます。それ以外の場合は、CUDAまたはOpenCLを使用します。

アプリがNVIDIAのベンダーロックに耐えられない場合、CUDAは使用できません。OpenCLまたはDirectX Computeを使用する必要があります。

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top