無料のものはありません。GPGPU は SIMDです。GPGPUのSIMD命令は、CPUのSIMD命令よりも幅が広い傾向があります。GPGPUは、きめ細かいマルチスレッド化される傾向があります(CPUよりも多くのハードウェアコンテキストを備えています)。GPGPUはストリーミング用に最適化されています。それらは、より大きな割合の領域を浮動小数点ユニットに割り当て、より低い割合の領域をキャッシュに、そしてより低い割合の領域を整数パフォーマンスに割り当てる傾向があります。
比較してみましょう。Intelのコアi7-5960xには8コアがあり、それぞれが4ワイド(倍精度)SIMD、3 GHz(3.5 GHzターボ)、20M L3キャッシュで動作し、356mm ^ 2と140Wを消費し、コストは 1000 ドルです。したがって、8 * 4 * 3 * 4 = 384倍精度のGFlops。(追加の4xは、サイクルごとにベクトルレーンごとに2つの融合乗算加算を実行できるためです。)768の単精度GFlopsを実行できます。これは、約1.08 DP GFlops / mm ^ 2および2.75 DP GFlops / Wattです。約57.5 KB / mm ^ 2のオンチップキャッシュもあります。
NVidiaのGeForce GTX Titan Blackには15のSMXがあり、それぞれ890MHz(980MHzターボ)で動作する32倍の倍精度SIMD、3.5MのL1 + L2キャッシュ、561mm ^ 2、250Wを消費し、コストは 1000 ドルです。したがって、15 * 32 * .89 * 4 = 1709倍精度GFlops。(サイクルごとのベクトルレーンごとに2つの融合乗加算の同じ4倍。)5126単精度GFlopsを実行できます。これは、約3.05 DP GFlops / mm ^ 2および6.8 DP GFlops / Wattです。したがって、単位面積あたりのDP浮動小数点密度の3倍、DP浮動小数点電力効率の3倍になります。そしてトレードオフ?6.4 KB / mm ^ 2のオンチップキャッシュ。CPUの約9分の1の密度です。
したがって、主な違いは、GPUがキャッシュよりも浮動小数点(特に単精度浮動小数点)を強く支持するエリアバランスを選択したことです。I / Oを実行するためにCPUとGPUの間でデータを前後にコピーする必要があるという事実を無視しても、GPUがCPUと比較してどの程度うまく機能するかは、実行しているプログラムによって異なります。
制御の相違がほとんどないデータパラレル浮動小数点プログラム(すべてのベクトルレーンが同時に同じことを実行している)があり、プログラムがストリーミングしている(キャッシュから利益を得られない)場合、GPUは単位面積あたりまたはワットあたり3倍の効率。ただし、かなりの量の分岐制御、データ並列以外の作業が必要な場合、または大量の読み取り回数のデータ構造からメリットを得られる場合は、CPUの方が優れています。