ホーム > HPC・DL・AI > 技術情報 > ベンチマーク情報 > インテル® Xeon® E5-2690とNVIDIA® Tesla® M2090の行列積における実効性能比較

インテル® Xeon® E5-2690とNVIDIA® Tesla® M2090の行列積における実効性能比較

昨今、GPGPUによる大並列計算と、新世代CPUアーキテクチャによる性能向上がHPCの高速化におけるホットな話題となっています。ですが、GPU全コアの比較対象がCPU1コアになっていたりするなど、これらのアプローチが正面きって性能比較を行った場合に、それらの実効性能がどの程度であるのかは明らかではありません。そこで、Byte/Flopが比較的大きい2次元行列積を用いて、インテルMKL、PGIアクセラレータ、CUDA shared memory最適化、CUBLAS、の4アプローチの性能比較を行いました。ベンチマークの結果、2012年現行モデルであるインテルXeon E5-2690の2CPUの1筐体と、2012年現行GPUであるNVIDIA Tesla M2090の1基がほぼ同等の実効性能を達成することがわかりました。

比較するアプローチ

次表のアプローチを比較対象としました。それぞれの、コードの特徴、実装の手軽さ、実装に必要なスキル、必要な機材、ソースコードの保守性についても挙げていますので参考にしてください。

アプローチCPUでMKLのマルチスレッド並列を使用PGIアクセラレータコンパイラのOpenACCを使用CUDAで手作業でshared memory最適化を施す※
コードの特徴CPUアーキテクチャに最適化された高速な数値計算アルゴリズムを採用コンパイラがソースコード解析して最適化したコード手作業でCUDAアーキテクチャに最適化させたソースコード
実装の手軽さBLASのAPIを呼ぶコードを書いてMKLをリンクするだけで最適化されたCPUコードを使えるディレクティブをコメントとして挿入するだけでGPUコードを使えるCUDAプログラミング手法とGPUアーキテクチャに合わせた繊細なソースコード記述が必要
実装に必要なスキルBLASのAPIを知っておく必要があるディレクティブの適用方法を理解しておく必要があるshared memoryを用いた最適化技術を習得しておく必要がある
必要なソフトウェアインテル MKL(Level 3 BLASライブラリ)CUDA,PGIアクセラレータコンパイラCUDA
ソースコードの保守性BLASのAPIを用いたコードに置き換わるディレクティブがコメントとして挿入された元コードが残るCUDAのAPIとプログラミング作法に特化する

※CUDAのマニュアルのプログラミング例に従って最適化を行いました。

評価対象アプリケーション

2次元行列積を採用しました。これはGPGPUの有効性が明白なEmbarrassingly Parallel計算と異なり、Byte/Flopが比較的大きいです(2flopに対し3要素のloadと2要素のstore)。ディレクティブやshared memory最適化においては、最適化が適用されやすいと考えられる3重ループによる実直な実装をベースとしました。MKLおよびCUBLASではsgemmとdgemmを用いました。

ベンチマーク結果

評価環境を次表に示します。

 評価環境(1)評価環境(2)評価環境(3)
CPUインテル Xeon X5690(6コア,3.46GHz)×2インテル Xeon E5-2690(8コア,2.90GHz)×2インテル Xeon X5690(6コア,3.46GHz)×2
コンパイラーインテル Visual Fortran Composer XE Windows版インテル Visual Fortran Composer XE 2011 Linux版PGI Accelerator Workstation 11.9 Windows版
GPUなしなしNVIDIA Tesla M2090×1基
数値計算ライブラリインテル MKL 10.3(Composer付属)インテル MKL 10.3(Composer付属)CUBLAS(CUDA付属)
CUDAなしなしCUDA 4.0
OSWindows 7 Professional x64 SP1CentOS 6.2Windows 7 Professional x64 SP1

行列の行数=列数=10,000での、単精度浮動小数点数と倍精度浮動小数点数それぞれにおける2次元行列積の計算性能(Gflops)を次図に示し、その詳細を次表に示します。GPGPUアプローチの計算時間には、GPUメモリ-ホストメモリ間のデータ転送時間も含んでいます。

単精度N計算時間[秒]GflopGflops理論性能実行効率
X5690×1 インテル Composer XE10000478.1618633.9027.6814.1%
X5690×2 MKL 12スレッド100006.671863279.44332.1684.1%
E5-2690×2 MKL 16スレッド100002.761863674.45742.4090.8%
M2090×1 ディレクティブ1000055.43186333.6013312.5%
M2090×1 shared memory最適化100008.741863213.24133116.0%
M2090×1 CUBLAS100002.761863674.38133150.7%
倍精度N計算時間[秒]GflopGflops理論性能実行効率
X5690×1 インテル Composer XE10000801.7818632.3213.8416.8%
X5690×2 MKL 12スレッド1000013.091863142.27166.0885.7%
E5-2690×2 MKL 16スレッド100006.561863284.00371.276.5%
M2090×1 ディレクティブ1000074.08186325.146653.8%
M2090×1 shared memory最適化1000019.43186395.8966514.4%
M2090×1 CUBLAS100006.031863309.1166546.5%

この結果、次がわかりました。

  • E5-2690の2CPU16コアと、Tesla M2090の1基がほぼ同等の実効性能となりました。
  • 理論性能に対する実行効率はCPUが76~90%と高いのに対し、GPUは約50%と低いです。
  • CUBLASの計算速度は、shared memoryを用いて手作業で最適化したコードに比べて約3倍となっています。

なお、X5690に比べてCPU周波数が16%ダウンしているにもかかわらずE5-2690で大きく性能向上しているのは、L3キャッシュ(E5-2690ではLLC)の1.6倍のサイズ増大、CPU-CPU間のQPI接続の2.5倍の速度向上、CPU-メモリ間の1.6倍の転送速度向上、AVXによる理論上2倍の演算幅増大が貢献していると考えられます。

結論

2次元行列積のようにメモリバンド幅が多少要求されるアプリケーションでは、2012年現行モデルであるインテル Xeon E5-2690の2CPUの1筐体と、2012年現行GPUであるNVIDIA Tesla M2090の1基が、ほぼ同等の実効性能を達成することがわかりました。 実効性能を考慮した高速化アプローチの選定には、アプリケーションのByte/Flop要求具合を勘案しつつコア数勝負でGPGPUに賭けるか、メモリアクセス速度勝負(キャッシュサイズとQPI接続速度)でCPUに賭けるかを考えることが肝要です。また、(shared memoryの最適化などのように)高速化にソースコードの大きな変更を要する場合もあるため、ソースコードの保守性も考慮に含めるべきです。

インテル® Xeon® E5-2600シリーズ搭載製品についてはこちらを参照ください。

  • キャンペーン情報
    現在開催されているお得なキャンペーン情報はこちらから。
    詳細
  • ご購入前のお問合せ
    フォームにご入力いただければ後ほど営業よりご連絡させていただきます。
    詳細
  • 見積り依頼
    フォームにご入力いただければ後ほど営業よりご連絡させていただきます。
    詳細
Contact

お問い合わせ

お客様に最適な製品をご提案いたします。まずは気軽にお問い合わせ下さい。
03-5446-5531

(平日9:30~17:30土曜日、日曜日、祝祭日、年末年始、夏期休暇は、休日とさせていただきます。)