x86系プロセッサの標準コンパイラであるIntel Compilerがメジャーバージョンアップされ、製品名が「Intel Compiler Version 11」から「Intel Composer XE 2011」へと変更されました。このバージョンアップで注目されるポイントは次の2点です。1点めはインテルの新アーキテクチャである「Sandy Bridge」への対応です。2点めは現行アーキテクチャである「Nehalem (Westmere)」すなわちXeon 5500系およびXeon 5600系のプロセッサでの性能改善です。
この2点について調べるため、SPEC CFP2006で公開されているベンチマークテスト結果を確認しました。するとIntel Composer XE 2011によるNehalemでのテスト結果は沢山公開されていたのですが、新しいSandy Bridegでのテスト結果は僅かにパラレル処理が1例しか公開されていませんでした。Sandy Bridgeはアーキテクチャが刷新されたばかりですからこれは仕方がないことのようです。
そこで最初に、有終の美を飾ろうとしているNehalemアーキテクチャとIntel Composer XE 2011の性能について詳しく報告します。
Sandy Bridgeについては簡単な速報をする予定です。詳しい報告はベンチマーク結果が揃ってからになります。ご存じのように、開発環境まで含めた新しいアーキテクチャの熟成は時間がかかります。
プロセッサのアーキテクチャが刷新されると、それに続いてOSやコンパイラなども刷新されますが、後者の熟成には時間が掛かります。そのため最初はシステムの動作が不安定であったり、期待した性能が得られない時期があります。そこでシステムを導入する場合は、この時期を避けて、環境が安定したころを見計らって導入します。そこで課題となるのが、安心して導入できる時期の見極めです。これに最も的確な指標を与えてくれるのがSPEC CFP2006ベンチマークです。次にその理由を述べます。
SPECベンチマークの結果を公式サイトに公開してもらうためには、厳しい規則に従ってテストを実施しなければなりません。具体的には、ベンチマークで使用する計算機システムは、実際に市販している計算機を用い、OSや開発環境なども標準的なものでなければなりません。すなわち、誰もが簡単に入手できる環境でテストしなければならないと定められているのです。
この規則があるためベンダーは、市販している計算機の品質と性能をSPEC CFP2006ベンチマークテストに耐える水準まで早期に向上させなければなりません。すなわち、ベンチマークを始める前に問題箇所を洗い出し、その解決を開発者に依頼し、市販品の問題を解決してからでないとベンチマークを公開できないのです。このプレッシャーによって製品の品質と性能が早く向上します。
新しいアーキテクチャを搭載した製品のSPECベンチマーク結果が公開されることは、該当する計算機やOS、開発環境の開発が完了し、標準品の組み合わせによって優れた計算機環境を構築できるようになったというこひとを業界が宣言したことになります。
このようにSPEC CFP2006を利用することで、計算機の性能向上を把握できるだけでなく、計算機システムの成熟度を知ることもできます。さらに計算機の熟成を促進する役割も担っています。
◎ Intel Composer XE 2011はSandy Bridgeに対応
インテルの新しいアーキテクチャSandy Bridgeは、ハードウェアの基本構造が大きく変更されました。そのためSandy Bridgeの本来の性能を引き出すためにはSandy Bridgeにネイティブで対応する「Intel Composer XE 2011」という新しいコンパイラを用いてアプリケーションを再ビルドする必要があります。
またSandy Bridgeから「Intel AVX」と呼ばれる新しい命令セットが採用されました。これは従来のSSE命令セットを改良したもので、演算幅を従来の128bitの2倍にあたる256bitに拡張することで理論性能を2倍に引き上げています。
Intel Composer XE 2011はIntel AVX命令セットに対応しています。一緒に提供されるインテル純正の数値演算ライブラリ「Intel MKL」もIntel AVX命令セットに対応しています。
Intel Composer XE 2011とIntel MKLを利用すると、Sandy Bridgeが持つ本来の性能を発揮させることができます。CPU性能律速型アプリケーションでは従来の2倍の理論性能を、メモリ性能律速型のアプリケーションでは従来の約1.2倍の理論性能を実現する可能性があります。
しかし、アーキテクチャが刷新された直後のコンパイラは、性能よりも信頼性を重視したチューニングが施されています。そのため初期のコンパイラは十分な性能が出ないことが少なくありません。プロセッサとコンパイラの改良が進み、バージョンアップを重ねるなかで真の性能が引き出されてゆきます。その様子もSPEC CFP2006で公開されるベンチマーク結果を観察することで詳細に把握できます。
◎ Sandy Bridgeを採用した計算機の実用時期を予想
Sandy Bridgeアーキテクチャを採用したCore i3 / i5 / i7シリーズのプロセッサを搭載したパソコンは2011年の初めから発売が始まっています。しかしこれらは1ソケット機であり、コア数も少なく、メモリ帯域幅も狭く、ECCメモリにも対応していないなど、HPC計算用としては力不足です。
そこで、Sandy Bridgeアーキテクチャを採用したエントリーモデルの1ソケット・サーバプロセッサであるE3-1200番台が4月から発売されています。E3-1200番台のプロセッサの特徴は、ECCメモリに対応したパソコン用プロセッサということです。それ以外の点はパソコン用と同じため性能面では魅力がありません。この計算機の用途は主に、Sandy Bridgeの特性を把握するためのプロトタイピング機です。
Sandy Bridgeを搭載した本格的なHPC計算機は、市場の予想では、1ソケット機と2ソケット機がそれぞれ今年の下半期から発売されるとのことです。そして4ソケット機の発売は来年以降になると予想されています。このプロセッサはまだ開発中であり、開発環境やOSもチューニングも平行して進められると考えられます。
◎ Sandy Bridgeを搭載した1ソケット機のベンチ結果が公開がされ始めた
Sandy Bridgeを採用した1ソケット機が発売されると、それを用いたSPEC CFP2006のベンチマーク結果が少しづつ公開されはじめました。Sandy Bridgeに対応したOS環境や開発環境も実用性を向上させているようです。プロトタイピング機の構築なら十分可能と考えられます。
SPEC CFP2006では浮動小数点演算だけでも17本のプログラムをコンパイルし動作させなければなりません。SPEC CFP2006のベンチマークを実施するだけでも相当の完成度が求められます。
(資料、 SPEC CFP2006で用いられている17本の浮動小数点演算プログラム)
bwaves (Fortran) : Computational Fluid Dynamics
gamess (Fortran) : Quantum chemical computations
milc (C) : Physics/Quantum Chromodynamics
zeusmp (Fortran) : Physics/Magnetohydrodynamics
gromacs (Fortran and C) : Chemistry/Molecular Dynamics
cactusADM (Fortran and C) : Physics/General Relativity
leslie3d (Fortran) : Computational Fluid Dynamics
namd (C++) : Classical Molecular Dynamics Simulation
dealII (C++) : Adaptive Finite Element Method
soplex (C++) : Simplex Linear Program (LP) Solver
povray (C++) : Computer Visualization
calculix (Fortran and C) : Structural Mechanics
GemsFDTD (Fortran) : Computational Electromagnetics
tonto (Fortran) : Quantum Crystallography
lbm (C) : Computational Fluid Dynmaics
wrf (Fortran and C) : Weather Forecasting
sphinx3 (C) : Speech Recognition
Sandy Bridegを搭載した計算機が発表されても、すぐにユーザの計算機が全てSandy Bridgeに置き換えられるわけではありません。ユーザの手元にはまだ何年間も現行のNehalemアーキテクチャを搭載した計算機が動作し続けます。そのためコンパイラの開発者はNehalemアーキテクチャについてもコンパイラの改良を継続しなければなりません。また、コンパイラの改良は時間がかかります。そのためコンパイラがメジャーバージョンアップすると、現行のNehalemアーキテクチャについても性能の確認をしておく必要があります。
そこで、SPEC CFP2000で公開されているベンチマークテスト結果を参考にして現行のNehalem系のプロセッサで、Intel Compiler Version 11コンパイラとIntel Composer XE 2011コンパイラの性能比較を行いました。
Intel Compiler Version 11コンパイラとIntel Composer XE 2011コンパイラでの平行処理を比較しても大きな性能向上はみられませんでした。次はそれを比較したグラフです。
SPEC CFP2006ベンチマークテスト結果から、Xeon X5670 2.93GHz機でのIntel Compiler V11とIntel Composer XE 2011のスループット処理結果を引用し、各アプリケーション毎の計算に要した時間を縦軸にとり棒グラフ化しました。青がIntel Compiler V11を表し、赤がIntel Composer XE 2011を表します。横軸はアプリケーション別に並べています。
コンパイラをIntel Composer XE 2011に変更すると、一部のアプリケーションで僅かに性能が向上していますが、大部分は大きな変化はありません。例外的に "lbm" だけが大幅に高速化しています。

次にシリアル処理の結果を調べました。すると驚いたことにメモリ性能律速型アプリケーションの一部で驚くような性能向上を示していました。アプリケーションによってその率は違いますが、4本のアプリケーションで154%から429%の性能向上が確認されました。
この結果を見た瞬間、これはベンチマーク作業のミスではないかとさえ疑いました。そこで複数のベンダーが公開している結果を再確認すると、他のベンダーでも同様の結果が確認できました。次がシリアル処理性能が向上した4本のアプリケーションの名前と速度上昇率です。
・ 流体計算 "zeusmp" はシリアル計算速度が306%の高速化
・
流体計算 "leslie3d" はシリアル計算速度が304%の高速化
・ 電磁界解析 "GemsFDTD" はシリアル計算速度が154%の高速化
・ 流体計算 "lbm" はシリアル計算速度が429%の高速化

シリアル処理性能が向上したことは素晴らしいことです。一般にHPC計算では、少しでも低い平行度や並列度で高いスループットが得られる方が次の2点で優れているとされます。
1点めは、世の中にはまだ沢山の並列化されていないメモリ性能律速型アプリケーションがあります。それらの処理速度がコンパイラを更新するだけで高速化することは大きな意味があります。
2点めは、並列化オーバーヘッドが大きいため、並列度を高くすると失速してしまうようなアプリケーションでは、シリアル計算が高速化すると並列度を増やすことなくいので、並列化オーバーヘッドの影響が少なくなり、並列処理が高速化します。
ではなぜ4本のアプリケーションだけが性能向上したのでしょうか。残念なことにその理由は検討材料が不足しているため明らかにできません。これは推定ですが、新しいコンパイラはキャッシュメモリの管理が改善され効率良くデータを読み出せるようになった可能性があります。新コンパイラの宣伝文句にもベクトル性能の向上が謳われていました。
そこでメモリ性能の改善を別の視点から確認するため、これらのアプリケーションでの平行処理のスループット性能を確認しました。すると、残念なことにスループット性能は向上していませんでした。これはシリアル処理性能あるいは低い平行度の処理でメモリ帯域幅を使い尽くしてしまい、平行度を高くしてもメモリ待ちが発生しスループット性能がある水準以上は向上しなかったことを示しています。
ここでもう1つ気になる点を発見しました。それはシリアル処理のスループット性能が、パラレル処理のスループット性能よりも高い場合があったのです。これは異常なことです。1CPU 6core機で、1coreの処理時間と、6core全部を平行動作させた場合の処理時間を比べると、次の4本のアプリケーションでは10倍近くも時間がかかっていました。6core使っているにもかかわらず、0.6core分のスループットしか出ていませんでした。
・ 流体計算 "bwaves" の6平行処理はシリアル処理より1081%も時間がかかる
・ 流体計算 "cactusADM" の6平行処理はシリアル処理より1049%も時間がかかる
・
流体計算 "leslie3d" の6平行処理はシリアル処理より928%も時間がかかる
(・ 電磁界解析 "GemsFDTD" の6平行処理はシリアル処理より639%も時間がかかる)
・ 流体計算 "lbm" の6平行処理シリアル処理は6平行処理よりより1115%も時間がかかる
そこで次にそれをグラフ化しました。公開されている"SPEC CFP2006 "のXeon WestmereでのIntel Composer XE2011のパラレル処理の時間とシリアル処理の時間を引用し、シリアル処理の時間を基準 (100%) にパラレル処理での時間の増加率をアプリケーション別にグラフ化しています。
6core機なので100%なら6core分のスループット性能が全て発揮されています。600%なら1core分の性能しか発揮されていません。1200%なら0.5core分の性能しか発揮されていないことになります。
実は、先に挙げたスループットが高速化した4本のアプリケーションは全てこの中に含まれています。さらに "bwaves" もこの4本と同類だったとみなすことができそうです。1コアの処理でメモリ帯域を全て消費している高メモリ性能律速型アプリケーションです。

さらにこれに準ずるアプリケーションとして次の5本のアプリケーションがあります。これらは6coreのうちの3coreを動作させることでメモリ帯域幅が飽和しているようです。
・ "milc"の6平行処理はシリアル処理より299%も時間がかかる
・ "zeusmp"の6平行処理はシリアル処理より455%も時間がかかる
・
"soplex"の6平行処理はシリアル処理より259%も時間がかかる
・ "wrf"の6平行処理はシリアル処理より245%も時間がかかる
・ "sphinx3"の6平行処理はシリアル処理より286%も時間がかかる
最後に、次の5本のアプリケーションはCPUに搭載している6coreを全て平行動作させてもメモリ帯域幅が飽和しません。これらは完全なCPU性能律速型アプリケーションです。
・ "gamess"の6平行処理はシリアル処理より95%も時間がかかる
・ "gromacs"の6平行処理はシリアル処理より93%も時間がかかる
・
"namd"の6平行処理はシリアル処理より88%も時間がかかる
・ "deall"の6平行処理はシリアル処理より120%も時間がかかる
・ "povray"の6平行処理はシリアル処理より91%も時間がかかる
・ "calculix"の6平行処理はシリアル処理より105%も時間がかかる
・ "tontp"の6平行処理はシリアル処理より109%も時間がかかる
なかには100%を下回っているアプリケーションもあります。これには理由があります。このベンチマーク・テストの元データではハイパースレッドを利用してジョブを投入しています。そのため、同じコア内の片方のジョブのアイドルタイムを利用して他方のジョブが処理を行っています。そのため100%を越える効率になる場合があるのです。しかし、このページでは問題点を明確にするためハイパースレッドをオフに換算して取り扱っています。
このようにSPEC CFP2006のパラレル処理のスループットを観察すると、以上のように4種類の場合すなわち、パラレル処理がシリアル処理より10倍近くも時間が掛かる場合、6倍の時間で処理できる場合、約3倍の時間で処理できる場合、同じ時間で処理できる場合があることがわかりました。
第一世代Coreアーキテクチャが登場して約5年になります。コアの性能がフルに発揮できるようにコンパイラの最適化が進み、1つのコアでプロセッサが持つ32GB/sのメモリ帯域幅を使い尽くすところまで来たということです。
この文章の影の主題であった、コンパイラの最適化は新しいアーキテクチャが登場してからも継続して進められ、次のアーキテクチャが登場した後でもこのような性能向上があるということを、実際のベンチマークテストで見ることができました。
次のグラフは上のグラフにIntel Compiler Ver.11の結果を追加したものです。このグラフで見て頂きたい所は、Intel Compiler Ver.11からIntel Composer XE 2011にアップグレードしたことで、各アプリケーションでの処理時間の増加率を比較できるようにしたものです。
左からみてゆくと "bwaves" は当初からシリアル計算がメモリ帯域を使い尽くしていたようです。"zeusmp"、"leslie3d"、"GemsFDTD"、"lbm"はコンパイラのバージョンアップでシリアル性能が高速化しています。コンパイラのバージョンアップによる効果が鮮やかに表現されたグラフです。

現行のNehalemアーキテクチャを搭載した計算機でも新コンパイラを導入すると大きなメリットが得られる可能性があります。そのためには新コンパイラをテストする価値は十分にあります。そしてさらに、Sandy Bridgeに備えることができます。現行のNehalemアーキテクチャ環境で新コンパイラを使うことは一石二鳥の効果があります。
SPEC CFP2006で利用されている浮動小数点演算アプリケーションの一覧。
(公開されているSPEC CFP2006より転記しています。)
bwaves (Fortran) : Computational Fluid Dynamics
gamess (Fortran) : Quantum chemical computations
milc (C) : Physics/Quantum Chromodynamics
zeusmp (Fortran) : Physics/Magnetohydrodynamics
gromacs (Fortran and C) : Chemistry/Molecular Dynamics
cactusADM (Fortran and C) : Physics/General Relativity
leslie3d (Fortran) : Computational Fluid Dynamics
namd (C++) : Classical Molecular Dynamics Simulation
dealII (C++) : Adaptive Finite Element Method
soplex (C++) : Simplex Linear Program (LP) Solver
povray (C++) : Computer Visualization
calculix (Fortran and C) : Structural Mechanics
GemsFDTD (Fortran) : Computational Electromagnetics
tonto (Fortran) : Quantum Crystallography
lbm (C) : Computational Fluid Dynmaics
wrf (Fortran and C) : Weather Forecasting
sphinx3 (C) : Speech Recognition
本サイト記載の会社名および製品名は、それぞれ各社の商標または登録商標です。
【SPEC CPU2006の公開データを資料として引用】
SPEC, SPECint and SPECfp are resistered trademarks of the Standard Performance Evaluation Corporation. For more information on this SPEC benchmarks see www.spe.org. SPEC and the benchmark name SPEC CPU2006 are registered trademarks of the Standard Performance Evaluation Corporation. Competitive benchmark results stated above reflect results published on www.spec.org as of March, 2010. The comparison presented above is based on the best performing 2-cpu servers currently shipping by Bull SAS, Fujitsu For the latest SPEC CPU2006 benchmark results, visit http://www.spec.org/cpu2006/