CPU と比較して GPU の処理能力を評価するにはどうすればよいですか?

CPU と比較して GPU の処理能力を評価するにはどうすればよいですか?

浮動小数点演算を多く行うプログラムがあり、現在のハードウェアでは実行速度が遅いとします。実行時間をできるだけ短縮するために、予算が固定されている(私の場合は約3000~4000ドル)場合、CPUとGPUのどちらに投資するのが良いかを判断したいと考えています。あるCPUと別のCPUを比較するには、とても荒いクロック周波数と各CPUのコア数を掛けて比較することで、相対的な処理速度を知ることができます。しかし、GPUはどうでしょうか?GPUの仕様に基づいて、処理速度を素早く計算する方法はありますか?だいたい既知の CPU と比較して、プログラムの実行速度はどのくらいになると思われますか?

実際の処理速度は、プログラムの構築方法や、CPU/GPU クロック速度以外の要因に大きく依存することは承知しています。この質問では、他の要因は無視します。つまり、浮動小数点数の計算以外のタスクにかかる時間はごくわずか (したがって、I/O バウンドなどではない) であり、プログラムは無限に並列化可能である (したがって、CPU または GPU コアの数に関係なく、プログラムの実行中はそれらすべてが最大限に活用される) と想定します。

答え1

そうですね、合成ベンチマークを試してみるといいでしょう。そうすれば、ある程度の見当がつくでしょう。たとえば、NVIDIA の CUDA ツールキットには、CPU と GPU の両方で実行されるプログラムがいくつか含まれており、各プラットフォームでの実行にかかる時間を比較するのに使用できます。

GPUデータシートのみを使用して行う必要がある場合は、それも可能です。たとえば、こここれは私のGeForce 9500 GSのページです。そこでは、処理コアの数に関する情報を見つけることができます。処理能力はGPU周波数とコア数に比例します。一部のカードでは、持っているGFLOPS 数も同様です。各カードについて、より統一された詳細な説明が記載されたドキュメントがありましたが、現在それにアクセスする方法が見つかりません。CUDA ツールキットのダウンロードにあるのでしょうか?

各カードが提供する機能を示す計算能力レベルもありますが、私の記憶が正しければ、計算速度には直接影響せず、精度と使用される命令セットにのみ影響します。

他のメーカーのカードについては最新の情報を把握していませんが、少なくとも AMD と Intel についてもデータを取得する方法があると思います。

関連情報