JUST THE FACTS

疑いようのない事実 

アクセラレーテッド・コンピューティングは、高性能コンピューティング(HPC)に大変革をもたらしています。アクセラレータ搭載システムがHPCで最高性能かつ最高エネルギー効率の演算を実現していることは、今や一般的に認められています。加速されたシステムは、大規模な高性能コンピューティングやリーダーシップ・スーパーコンピューティングの新たな基準です。これは、「可能かどうか」という問題ではなく、「いつ、どのように可能か」という問題です。

NVIDIAでは、数々の約束や誇大広告を排除し、アクセラレーテッド・コンピューティングを選ぶ際に大切な事実をご紹介します。特に、GPUと比べてIntelのXeon Phiアクセラレータは、ただ再コンパイルし、コードをPhi上でネイティブに起動するだけで期待通りのアプリケーション性能が実現できるという認識や、パフォーマンスの最適化はGPUよりもPhiのほうが簡単であるという概念は、断じて事実ではありません。

事実: 本物のHPCアプリケーションにおいて、GPUはIntelのXeon Phiよりもはるかに速い。
主要な科学アプリケーションの速度は、Xeon Phiの2倍から5倍です。


HPCはアプリケーションの性能がすべてであり、GPUはCPUに比べて高性能であることが実証されています。 上記の表の通り、さまざまな科学ワークロードを表現するアプリケーションで、GPUはCPUに比べて約2.5倍から7倍の高速化を実現しています。IntelのXeon PhiはCPUを上回るよう最適化することは可能でも、GPUの性能は最高級のKnights Cornerよりも平均2倍から5倍高速です。


団体 アプリケーション Xeon Phiに対するGPUの速さ
東京工業大学 CFD拡散 2.6倍
Xcelerit モンテカルロLIBORスワッププライシング 2.2倍から4倍
Georgia Tech 合成開口レーダー 2.1倍
CGGVeritas Reverse Time Migration 2.0倍
Paralution BLASとSpMV 2.0倍
ウィスコンシン大学マディソン WRF (気象予報) 1.8倍
エアランゲン・ニュンベルク大学 医療用画像 - 3D画像再構成 7倍
デルフト大学 創薬 3倍
それぞれの結果において、GPUの性能はXeon Phiの2倍以上優れていることを示しています。 (2014年1月時点のデータ)

現在、様々な分野の約200種類のアプリケーションがGPUによって加速されています。

閉じる
詳細
事実: Phiの「再コンパイルして起動」が、実際にはアプリケーションを減速させている。
開発者は使用中のCPUコードに手を加えず、ただPhi上でアプリケーションを「再コンパイルして起動」するだけという概念は、魅力的ではありますが、誤解を招く表現です。これにより、手にする性能は大抵CPU性能よりも大幅に減速し、まさにアクセラレーション(加速)とは真逆の結果を生み出すことになります。
Phi上でただ再コンパイルして起動するのも(時には)機能するが、コードの動きはCPUよりも減速する。 システムおよび構成の詳細2 (2013年8月現在)

Phi上で単純な再コンパイルからネイティブに起動する方法が多くのコードで機能する一方、アプリケーション性能の速度はCPUに比べると減速する(一部では最大5倍の減速、上表参照)。

NVIDIAブログの「No Free Lunch」でも指摘しているように、「再コンパイルして起動」は、コードのシリアル部分に対するアムダールの法則を始めとする技術的課題を多く抱えています。現代のCPUコアと比較すると、Phiコア(ベースデザインは旧Pentium)のお粗末なシリアル・パフォーマンスによって、Phi上でネイティブに起動するコードのシリアル部分の動きは極度に減速します。

実際、開発者はまずPhi上でコンパイルするコードを入手し、その後リファクタリングに時間を費やし、それからパフォーマンスを向上させるためにコードを最適化する必要があります。それも、CPUと同等のパフォーマンスを得るためだけに。

結局のところ、Phiを用いたアクセラレーションでも、GPUを用いたアクセラレーションでも、並列性の展開にはそれなりの労力を要します。「再コンパイルして起動」は、開発者にとって多少使い勝手の良い導入部程度であって、魅力的な主張は期待を裏切る最悪な結末をもたらすことになります。

閉じる
詳細
事実: GPUやPhiのプログラミングには同等の労力を要する一方で、結果ははるかにGPUが優れている。
同様の最適化技術。同等の労力。GPUなら2倍の加速。
方法 GPU Phi
ライブラリ
CUDAライブラリ + その他

Intel MKL + その他
ディレクティブ
OpenACC

OpenMP + Phiディレクティブ
ネイティブプログラミングモード
CUDA

Vector Intrinsics
開発者は、ライブラリ、ディレクティブ、言語拡張を使用してアクセラレータをプログラミングし、パフォーマンスを最適化します。(2013年8月現在)
GPUとPhi、異なる側面を持ち合わせながらも、並列プロセッサという面では同じです。PhiでもGPUでも、開発者は同等の労力を費やし、同様の最適化技術を使い、大規模な並列性を引き出します。

上表の通り、開発者は同じ3つの方法を使ってコードを加速します。それがGPUのCUDAやPhiのvector intrinsicsといったライブラリ、ディレクティブ、言語拡張です。

Phi やGPUのプログラミングに対する労力は、想像以上に似ています。

N-bodyカーネルコードは、どちらのアクセラレータの最適化にも同等の最適化技術と労力が必要であることを示しています。コード変更は基本的に同様でありながらも、GPUの性能は、Phiの性能を大幅に上回っています。最適化の事例をダウンロード
簡単なn-bodyコードの比較では、同様の最適化技術が使用されている一方で、GPUが圧倒的に速いことを示しています。システムおよび構成の詳細3 (2013年8月現在)
詳細
閉じる
"簡単にポートできるが、コードをベクトル化するためにCUDAでできることは、Phiでもできるようにするべきだ。"
カール・シュルツ博士(Dr. Karl Schultz)
テキサス先端計算センター(TACC)科学アプリケーション所長
出展: HPCWire, 2013年5月17日号
"Intelの Xeon Phiを用いて収集した結果には、驚くほどがっかりした。Xeon Phiは簡単にプログラミングができると言われていたが、ベクトル調整のせいで、高いパフォーマンスでの解決法の開発に随分と労力を費やすことになった。"
"SIMD と SIMT の置き換えを除けば、我々のGPUコードはXeon Phi のコードとかなり類似している。"
"Xeon Phi上でプログラムを動かすのは簡単だが、格子ボルツマンのアプリケーションで高い持続性のあるパフォーマンスを実現するには、CUDAとNVIDIA GPUを用いたほうがより簡単であることが分かった。"
フェラーラ大学 数学・情報科学科 セバスティアーノ・ファビオ・シファノ博士(Dr. Sebastiano Fabio Schifano)
これらの事実を知り、アクセラレーテッド・コンピューティングへの理解も深まったことでしょう。今やGPUは、基本的には同じだけの開発努力で、倍以上の性能を提供しています。並列コードの加速には、GPUが当然の選択肢です。これは今年4、科学研究者の発表にPhiよりもGPUが10倍以上多く利用された理由なのかもしれません。そして、今日のHPCシステムにおいても、NVIDIA GPUがIntel Phiよりも20倍以上好まれている理由なのかもしれません。5
grey-line.png

ベンチマーク構成の脚注:
AMBER:SPFP-Cellulose_production_NPT、1x E5-2697v2 + Xeon Phi 7120P、1x E5-2697v2 @ 2.70GHz + Tesla K40
MiniMD:KokkosArray- LJ forces、864k atoms、倍精度、2x Xeon E5-2667 + Xeon Phi 7120, 2x Xeon E5-2667 + Tesla K40
Monte Carlo RNG DP:ヨーロッパオプションプライシング、2x Intel® Xeon® Processor E5-2697 v3 + Tesla K40 GPU、Intel提供のXeon Phi性能結果(Intel Webサイト)
tHogbomClean:2x Xeon E5-2697 v2 + Xeon Phi 7120、2x Xeon E5-2697 v2 + Tesla K40c
Binomial Options SP:2x Xeon Processor E5-2697 v3 + Tesla K40 GPU、Intel提供のXeon Phi性能結果(Intel Webサイト)
NAMD:APOA1、2x Xeon E5-2697v2 + Xeon Phi 7120、2x Xeon E5-2697v2 +Tesla K40
STAC-A2:Warm Greek、2x E5-2699v3 CPUs + Xeon Phi 7120A、2x Intel Xeon E5-2690v2 + Tesla K80