私は多くのデータ マッチングの問題に取り組んできましたが、非常に多くの場合、ハミングや編集距離などの CPU 集中型アルゴリズムの多くの実装を迅速かつ並行して実行することになります。これはCUDAが役立つようなものですか?
どのような種類のデータ処理の問題を解決しましたか? 標準のクアッドコア インテル デスクトップを超える向上は本当にありますか?
クリス
私は多くのデータ マッチングの問題に取り組んできましたが、非常に多くの場合、ハミングや編集距離などの CPU 集中型アルゴリズムの多くの実装を迅速かつ並行して実行することになります。これはCUDAが役立つようなものですか?
どのような種類のデータ処理の問題を解決しましたか? 標準のクアッドコア インテル デスクトップを超える向上は本当にありますか?
クリス
あなた自身の質問に答えたと思います。一般に、CUDA/OpenCL は超並列操作を高速化します。CUDA を使用してさまざまな DSP 操作 (FFT、FIR) を実行し、桁違いのスピードアップを確認しました。数百ドルで桁違いのスピードアップは盗みです。MKL や OpenMP などの特殊な CPU ライブラリによって速度が大幅に向上しましたが、CUDA/OpenCL ははるかに高速です。
CUDAの使用例はこちら
たとえば、SIGGRAPH '09 では、Vray for Maya の CUDA 実装を示しました。200 ドルのカードで 20 fps のリアルタイム レイ トレーシングとプレビュー品質を実現できますか? 大いに役立っていると思います。
はい、CUDAのメインドメインです。次の条件が真の場合、効率が最大になります。
もちろん、この条件に該当するタスクはほとんどありません。それらからどれだけ離れているかによって、効率が低下します。使用率を最大化するために、アルゴリズムを完全に書き直す必要がある場合があります。
CUDA は、コンピューター断層撮影の速度を大幅に向上させるために使用されています。たとえば、 FASTRA プロジェクトは、消費者向けのハードウェアから数千ユーロで組み立てられながら、スーパーコンピューター(クアッドコア デスクトップだけでなく!) と同等のパフォーマンスを発揮します。
私が知っている他の研究トピックは、群れの最適化とリアルタイムのオーディオ処理です。
一般に、この手法は、すべてのコアが同じ操作を実行するため、すべてのデータを同じ方法で処理する必要があるすべてのドメインで使用できます。問題がこの種の操作に要約される場合は、問題ありません:)。残念ながら、すべてがこのカテゴリに分類されるわけではありません...
一般に、並列処理には、タスク並列処理とデータ並列処理の 2 種類があります。前者はCPU、後者はGPUの高速化。その理由は、CPU が洗練された分岐予測、アウトオブオーダー実行ハードウェア、および独立したタスクを並行して実行できる多段パイプライン (たとえば、クアッドコアで 4 つの独立したタスク) を備えているためです。一方、GPU はほとんどの制御ロジックを取り除き、代わりに多くの ALU を備えています。したがって、データ並列処理 (単純な行列加算など) を伴うタスクの場合、GPU は多数の ALU を利用して、このデータを並列処理できます。ハミング距離のようなものは、2 つの文字列の違いの数を数えるだけなので、GPU には最適です。各文字は位置のみに基づいて異なります。