ISCA 2010でIntelがCPUとGPUの比較論文を発表

2010年6月21日から23日にかけてフランスのSaint-Maloで行われたInternational Symposium on Computer Architecture(ISCA 2010)という学会において、Intelは「GPUはCPUの100倍も速いという説の事実誤認を証明する」と題する論文を発表した。

ISCAはコンピュータアーキテクチャ関係ではトップレベルの学会で、実は論文のタイトルは「An Evaluation of Throughput Computing on CPU and GPU」と続いており、内容は極めて技術的なまともな論文である。内容は、Intelの4コア 3.2GHzクロックのCore i7-960 CPUとNVIDIAのGTX280 GPGPUを使い、スループットコンピューティングで頻繁に使われる14種の計算カーネルの性能を測定した比較したというものである。

GPGPUの性能をいうとき、GPGPUの性能はチップ全体の演算ユニットを使ったものであるのに対して、CPUの性能は1コアの性能と比較しているようなケースもあるし、また、CPUチップの全コアを使用する場合でも、プログラムがマルチコア用に最適化されていないことが多く、CPUに対するGPGPUの性能が誇張されている場合が多い。これはGPGPUの研究者はGPGPUでの最適化は頑張るが、比較対象のCPUの方のプログラムの最適化には気が入らないということも影響している。

これに対して、今回のIntelの論文では、CPU、GPUともに最適化を頑張り、評価に使用した14種の計算カーネルの性能は、これまでに論文で公表されている性能と少なくとも同じで、多くの計算カーネルでは過去の論文の値を上回る性能を出しているという。ということで、かなり公平度の高い評価と考えられる。

なお、CPUは2010年2月発売のCore i7-960で、GPUは2年前のGTX280というのは公平でないとも言えるが、ISCAの論文の締切は2009年11月であり、その時点ではNVIDIAのFermiベースのGPGPUは発売されていなかったので、Intelとしてはその時点で最新のものを使っており、意図的に古いGPUと比較を行ったわけではない。

計算カーネル 用途 SIMD スレッド並列単位 特徴
SGEMM 線形代数 レギュラー 2Dタイル タイリングすると計算バウンド
Monte Carlo 金融工学 レギュラー パス 計算バウンド
Convolution 画像解析 レギュラー ピクセル 計算バウンド
FFT 信号処理 レギュラー 単位FFT 計算バウンド
SAXPY 内積計算 レギュラー ベクトル バンド幅バウンド
LBM タイムマイグレーション レギュラー セル バンド幅バウンド
Constraint Solver 剛体運動 ギャザー/スキャッタ コンストレイント 同期バウンド
SpMV 疎行列計算 ギャザー 非ゼロ要素 バンド幅バウンド
GJK 衝突検出 ギャザー/スキャッタ オブジェクト 計算バウンド
Sort データベース ギャザー/スキャッタ 要素 計算バウンド
Ray Casting ボリュームレンダリング ギャザー 光線 4~8MBワークセット(第1レベル)、500MB以上(最終レベル)
Search データベース ギャザー/スキャッタ クエリー 小規模ツリーは計算バウンド、大規模はバンド幅バウンド
Histogram 画像解析 競合検出が必要 ピクセル リダクション/同期バウンド
Bilateral 画像解析 レギュラー ピクセル 計算バウンド
比較に用いられた14種の計算カーネル

これら14種の計算カーネルを最適化して測定した結果が次のグラフである。ここで縦軸はGPGPUの性能で、CPUの性能を1.0として表示している。なお、GPGPUの実行時間はホストCPUのメモリとGPUのデバイスメモリ間のデータ転送時間は含んでおらず、その点ではGPGPUに有利な性能比較となっている。

14種の計算カーネルを最適化して測定した結果(CPUを1.0とした場合のGPU性能)

この表で「Solv」と「Sort」は値が1.0以下でCPUが勝っているが、それ以外はGPGPUの方が高性能である。「GJK」はグラフィックス用のテクスチャユニットがうまく使えることから15倍という大きな性能比となっているが、それ以外では1.6倍から6倍弱の範囲で、全体の幾何平均は2.5倍である。