一般的なアルゴリズム (並べ替え、検索、グラフなど) が OpenCL (または任意の GPU 言語) に移植されているかどうか、および CPU によって実行される同じアルゴリズムとパフォーマンスがどのように比較されるかを知りたいです。私は特に結果(数字)に興味があります。
ありがとう!
GPU は、小さな一連のタスクを非常にうまく実行し、高度に並列化するように設計された、高度に専門化されたハードウェアです。これは基本的に算術演算です (特に単精度浮動小数点演算ですが、新しい GPU は倍精度でうまく機能します)。そのため、特定のアルゴリズムにのみ適しています。並べ替えがそのカテゴリに当てはまるかどうかはわかりません(少なくとも一般的な場合)。
より一般的な例としては、金融商品の価格設定、大量の行列計算、さらには暗号化の無効化(ブルート フォースによる) などがあります。そうは言っても、ハイブリッドアルゴリズムを使用した高速並列GPUソートを見つけました。
よく引用されるもう 1 つの例は、Nvidia GPU で SETI@HOME を実行することですが、リンゴとオレンジを比較しています。GPU の作業単位は、通常の CPU とは異なります (そして非常に制限されています)。
GPGPUで引用されているパフォーマンスの数値については、十分に注意してください。多くの人は、CPUからGPUへの入力データと出力データを取り戻すために必要な転送時間を考慮しない本当に印象的な数値を投稿することを好みます。どちらもPCIeのボトルネックを超えています。
スラストを見てください:
Thrust は、C++ 標準テンプレート ライブラリ (STL) に似たインターフェイスを備えた並列アルゴリズムの CUDA ライブラリです。Thrust は、開発者の生産性を大幅に向上させる GPU プログラミング用の柔軟な高レベル インターフェイスを提供します。
NVidia の Web サイトには、この種のもののかなりの数のサンプルがあります。ソートなどの一部の処理では、効率的な並列処理のために特別なアルゴリズムが必要であり、シングル コアでのスレッド化されていないアルゴリズムほど効率的ではない可能性があることに注意してください。