"Interlagos" の開発コードで知られる、"Bulldozer" アーキテクチャを採用した、最新のOpteron 6200番台のプロセッサ(以下、Interlagos) による、Linpack HPLベンチマークテストの結果報告です。
Interlagosの特徴は、最大で16コアを搭載し、4チャンネルのメモリポートを実装していることです。その結果、4ソケット機なら総コア数64コア、総理論演算性能589GFLOPS、総メモリ帯域204.8GB/sに達する高性能サーバを実現できます。
さらにInterlagosのユニークな点は、Bulldozerアーキテクチャからサポートが始まった "FMA" という命令セットを使い "Flex FP" という資源分配機能の働きにより、1個のコアが2個の浮動小数点演算モジュールを並列動作させることで、単体コアの浮動小数点演算性能を従来の2倍に引き上げられるようになったことです。そのためInterlagosは、従来のOpteronの課題であった単体コアの浮動小数点演算性能が低いという問題を解決できる目途がつきました。(なおBulldozerrアーキテクチャはFMA命令セットと共にインテルの "AVX" 命令セットもサポートしています)
しかしInterlagosは、上記のような高いメモリ性能や浮動小数点演算性能を実現した代償として、プロセッサの構造が複雑化しました。メモリシステムは非対称化した分散メモリとなり、とマルチコア構造も非対称化しました。
次の模式図は複雑な構造を持つInterlago 4ソケット機の内部構造を簡略化して示したものです。しかしこれでも複雑すぎて処理の流れがよくわかりません。そこで右にさらに簡略化した図を示しました。しかしこれでもわかりません。この複雑さがInterlagosの本質を示しています。


Interlagosは構造が複雑なため、プロセッサの性能を発揮させるためにはシステム全体の構造を理解し、適切に運用しなければなりません。そこでこのページではLinpack HPLベンチマークテストを使って、Interlagosの性能を多角的に評価し、特に "Bulldoser Module" と呼ばれる新たに導入された仕組みを調査しています。
参考:SPECfpとStreamでのInterlagosの調査 (異なる視点での評価)
しかし一方で、Interlagosの性能をLinpack HPLの結果だけで評価することは早計です。Linpack HPLは感度の高いテストであり、その時点での突き詰めたCPU性能を確認できますが、その反面、すこし枯れ気味のユーザアプリでの評価と乖離が発生することがあります。
そこで弊社では、Interlagosの性能を様々な視点から評価できるように、次の2種類のベンチマークテストの結果を次のページで公開しています。
・ SPECfp 2006ベンチマークテストによる実用的アプリケーションでのInterlagosの性能調査
・ StreamベンチマークテストによるInterlagosのメモリ性能調査これらの調査では次のような結論が得られています。
・ Interlagosは従来のアプリケーションでも高いスループットが得られる
・ Interlagosの仕組みを理解し適切にジョブ管理しなければ性能を全て引き出せない
・ 「メモリ性能律速型アプリケーション」のスループットは非常に高い複雑化したBulldoserアーキテクチャ (Bulldoser Die, Bulldoser Module) のHPC計算に対する効果には疑問があります。しかし、その一方でInterlagos 4ソケット機が持つ200GB/sを超えるメモリ帯域が持つ「メモリ性能律速型アプリケーション」への効果は絶大です。この優秀さは暫くは揺るぎません。
各CPUダイ搭載されている2チャンネルのメモリポートがDDR3 1600MHzで動作すると、各CPUダイは25GB/sのメモリ帯域を持つローカルメモリを利用でき、4ソケット機なら8個の独立したCPUダイによって200GB/sの総メモリ帯域を持つことになり、各CPUダイに搭載されているコアの中から適切な数だけを利用して、「メモリ性能律速型アプリケーション」を並列動作あるいは平行動作させることで、Interlagosに素晴らしい性能を発揮させることができます。
次の図は「メモリ性能律速型アプリケーション」をInterlagos 4ソケット機で効率良く動作させるための資源利用の様子を示したものです。8個のCPUダイを独立したプロセッサとして利用し、各CPUダイ上の2コアだけを使いメモリボトルの最小化と並列処理ボトルネックの最小化を実現しています。CPUダイの内部の並列処理は数値演算ライブラリを使ったスレド並列処理を利用し、プロセッサ内部の並列処理は、MPIを利用したプロセス並列処理を利用し、プロセッサの階層構造に対応した処理をしています。さらに処理の高速化を目指す場合は、複数の計算機をInfiniBandで接続したMPIによるネットワーク並列処理を利用します。ここでの資源管理はジョブスケジューラが担っています。
![]() |
⇒ |
![]() |
Interlagosが内蔵する |
Interlagosのメモリボトルネックに着眼し |
Interlagosの特徴は、16個のコアを3層の階層に分散して搭載していることです。Interlagosの性能を引き出すためには、この階層構造の特性を理解しボトルネックを避けてジョブを動作させなければなりません。ここでは各階層の構造を説明します。
第1の階層は、16コアのInterlagosプロセッサと呼ばれる階層です。しかしこの階層の実態は、"Bulldoser Die" と呼ばれる物理的に独立した2個の半導体をネットワークで接続し、仮想的に16コアの環境を実現したものです。またメモリ・システムも、各Bulldoser Dieに独立して2チャンネルづつ実装されているため、非対称型の分散メモリ空間になっています。
Interlagosはこのような特性のため、HPCで利用する場合は、1個の仮想マルチコアプロセッサとして利用するよりも、2個の独立したプロセッサで構成されたネットワーク並列環境として割り切って利用する方が合理的です。ジョブを投入する場合は、Interlagosプロセッサに投入するのではなく、各Bulldoser Dieに直接投入し、メモリも明示的にローカルメモリを使用することでメモリボトルネックや通信ボトルネックを抑えられます。

第2の階層は、8コアのBulldoser Dieと呼ばれる階層です。この階層は第1の階層とは異なり、コアとメモリが直接接続された対称型マルチプロセッシング環境になっています。そのためHPC計算として利用する場合はBulldoser Dieがジョブ投入の対象です。なお、Bulldoser Dieに投入した後のジョブ管理はシステム側が自動的に行います。
ところで実は、第2の階層もフラットな構造ではなく、さらにその内部には "Bulldoser Module" と呼ばれる機能的に独立した4個の2コア・コア・モジュールがネットワークで接続されて搭載された階層構造になっています。

Interlagosの仕組みを理解するためには、第3の階層であるBulldoser Moduleを理解する必要があります。次の模式図はBulldoser Moduleだけを抜き出したものです。
Bulldoser Moduleでの整数演算処理は一般的な処理の流れです。しかし、浮動小数点演算処理の流れはユニークです。ここでは最初に整数演算処理の流れを確認してから、浮動小数点処理の流れを調べます。

最初にBulldoser Moduleでの整数演算処理の流れを追います。図にはCore 0とCore 1という2個のコアがあります。その下にそれぞれ独立した整数演算用スケジューラーと整数演算実行モジュールがあります。
Core 0に整数演算を投入すると、その命令はCore 0の整数演算スケジューラーにわたされ、そこからCore 0の整数演算実行モジュールに投入されます。同様に、Core 1に整数演算を投入すると今度はCore 1専用の処理系で処理が実行されます。整数演算は一般的な処理の流れです。

次に浮動小数点演算処理の流れを追います。図にはCore 0とCore 1という2個のコアがあります。しかし、浮動小数点演算用スケジューラーは1個しかありません。また浮動小数点演算実行モジュールも2個しかありません。これは問題です。
なぜ浮動小数点演算実行モジュールが2個しかないと問題なのかというと、それはBulldozeアーキテクチャから新たにサポートされた "FMA"という命令セットが原因です。FMA命令セットは従来の128-bitの命令長のSSE命令セットとは異なり、256-bitの命令長です。そのため、128-bitの浮動小数点演算実行モジュールでは命令長が不足します。
そこでBulldozer Modulaは128-bitの浮動小数点演算実行モジュールを2個使って、仮想的に256-bitの浮動小数点演算実行モジュールを生成し、"FMA" 命令セットに向対応する仕組みを備えています。これが "Flex FP" と呼ばれる仕組みです。
例えばCore 0にFME命令セットを使ったジョブを投入すると、2個の浮動小数点演算モジュールがCore 0に割り当てられます。するとCore 1に割り当てられる浮動小数点演算モジュールは残っていません。そのため今の実行されている処理が終わるまでは、次の処理は実行されません。FMA命令セットを利用すると、シリアル処理は2倍に高速化されますが、全体のスループットが向上するわけではありません。16コア機でFMAを使うと8並列で最高性能に到達し、16並列にしてもスループットは向上しません。これがインテルのAVXと異なる点です。
しかし、FMAは決して無意味ではありません。次の3つのようなメリットが考えられます。並列処理を実行する場合は常に並列処理オーバーヘッドの問題が付きまといます。FMAを使うと命令レベルで処理速度が向上するため、並列度を増やすことなく高速化が可能になります。さらにプロセス数を半分にしてもスループットが同じになるということは使用するメモリ容量を半分にできる、より大きな系の計算を少ない容量のメモリで実施できるようになります。もちろん、並列化されていないアプリケーションのシリアル処理を高速化することにも有効です。

ではFMA命令セットを使わず、従来のSSE命令セットを使う場合はどうなるのでしょうか。その場合は2個のコアにそれぞれ1個の浮動小数点演算モジュールが割り当てられるため、各コアのシリアル処理性能は従来のままです。16コア機の場合は16並列で最高性能に達します。

(ただし、今回のLinpack HPLのテストでは、この機能の正常動作は確認できませんでした。しかし、SPECfp 2006を調査した結果では、コア数の増加に比例して16コアまで性能が向上していました。最終的にプロセッサを評価する場合は現実的なアプリケーションを用いたテストを実施しているSPECfp 2006の結果を利用します。)
次にFMAを使う場合と使わない場合のメリットとデメリットを整理します。試算はクロック速度が2.3GHz、搭載コア数が16コアのプロセッサを使った場合の値です。
○ FMA命令セットを使い、2個の浮動小数点演算モジュールを1個のコアで占有する場合
・ FMAを使った場合の理論性能
単体コアの理論性能は18.4GFLOPS
単体プロセッサを8コアで利用した場合の総理論性能は147.2GFLOPS (18.4GFLOPS x8)
単体プロセッサを16コアで利用した場合の総理論性能は147.2GFLOPS (9.2GFLOPS x16)・ FMAを使うことのメリット
単体コアの性能が2倍になる
並列処理オーバーヘッドを低減できる
メモリ容量を節約できる・ FMAを使うことのデメリット
アプリケーションの再コンパイルが必要
○ FMA命令セットを使わず、1個の浮動小数点演算モジュールを1個のコアで利用する場合
・ FMAを使わない場合の理論性能
単体コアの理論性能は9.2GFLOPS
単体プロセッサを8コアで利用した場合の総理論性能は73.6GFLOPS (9.2GFLOPS x8)
単体プロセッサを16コアで利用した場合の総理論性能は147.2GFLOPS (9.2GFLOPS x16)・ FMAを使わないことのメリット
アプリケーションの再コンパイルが不要・ FMAを使わないことのデメリット
コア数の増加に比例して並列オーバーヘッドが増大する
コア数の増加に比例して使用するメモリ容量が増える
次の表はInterlagos 4ソケットサーバを用いたLinpack HPLベンチマークの結果です。表の最上段はIntelagosの結果です。その次の幾つかの結果は、Interlagosの結果と比較するため、過去の結果から抜粋したものです。
Interlagosの結果の1行目は、Opteron用の数値演算ライブラリ "ACML" の中に含まれている "FMA" に対応した数値演算ライブラリを用いてLinpack HPLを新たにコンパイルしたバイナリを使用し、1個のコアに2個の浮動小数点演算モジュールを割り当てた場合の計算結果です。(なお、コンパイラはIntelコンパイラを、MPIライブラリはIntel MPIを使用しています)
1行目を左から見ます。1coreでのシリアル処理の結果は14.6GFLOPSで、その処理効率は85%です。これはOpteronとしては並みの処理効率です。FMAによってFlex FPが正しく機能し256-bitで処理されていることを示しています。
すこし横道に入り、比較のためインテルのSandy Bridge 1ソケット機による256-bitのAVXによる性能を見ると、シリアル処理の結果は27.56GFLOPSで、その処理効率は98%です。見事に最適化されています。
次に1行目を右に辿ると処理効率が徐々に低下し、32並列で358.5GFLOPSに達しますが、処理効率は64%まで低下しています。さらに並列度を上げると48並列で一旦性能が低下し64並列で元に戻っています。Buldozer Moduleの説明通りの動作が確認できました。
ここでも横道に入り、比較のためインテルのSandy Bridge 1ソケット機による256-bitのAVXによる4並列での性能を見ると、結果は94.0GFLOPSで、その処理効率は84%まで低下しています。Sandy Bridgeは1個のCPUダイでの処理効率ですから厳しいようです。
次にInterlagosのピーク性能を確認するためNの値を大きくしました。すると32並列で406GFLOPに達しました。しかし64並列では408GFLOPSと性能向上はありません。この時の処理効率は73%でした。これがピーク性能です。
そして次はFMAを使わない2個の浮動小数点演算モジュールを使用したテストを実施しました。単体コアの性能は半分になる筈です。しかし64並列まで性能が伸び続け、最終的にはFMAを使った場合と同程度の性能に落ち着く筈です。
ところがテストの結果を見ると、32並列では206.5GFLOPSと妥当な性能でしたが、驚いたことに64並列の結果も207.5GFLOPSと変わりませんでした。何度もテストを繰り返したのですが結果は同じでした。我々のテスト方法が間違っているのか、開発環境やシステムに問題があるのか、あるいはジョブスケジューラに問題があるのか、まだ原因はわかりません。現在はこういう現象が起きたという報告だけです。
視点を変えてSPECfp 2006 baseでのスループット調査では、Opteron 42core機とInterlagos 64core機のスループットを比較すると「CPU性能律速型アプリケーション」での性能向上率はコア数の増加に比例していました。このことから、Interlagos 64coreは無駄ではないことが判っています。
最後にMKLでの性能も確認しました。結果はご覧のとおりです。32並列で52%の効率、64並列で9%の効率でした。MKLとLinpack HPLのInterlagos上での相性は良くありません。しかし、他の一般のHPC計算アプリケーションではACMLを使ったビルドよりもMKLを使ったビルドの方が高速な場合がありました。ですから、この結果だけから全てを判断することは早計です。Linpack HPLは計算機の特性を把握するための指標のひとつでしかありません。
| yy mm dd |
System | 並列 種類 |
N値 | Linpack HPL (GFLOPS) | ||||||||
| 4-socket 16-core Opteron (32nm, Interlagos) | 1node | |||||||||||
| 4CPU | ||||||||||||
| 1core | 2core | 4core | 8core | 16core | 24core | 32core | 48core | 64core | ||||
| 12 01 19 |
ProServer DPeR815 16-core Opteron 6276 2.2GHz (32nm, Interlagos) DDR3-1600MHz 64GB (4GB x16) 1-node 4-socket、4CPU、64-core ScientificLinux 6.1 Kernel-2.6.32-131.21.1.el6.x86_64 IntelCompiler 12.1.1.256 MKL 10.3.7.256 ACML 5.0.0 IntelMPI 4.0.3 glibc glibc-2.12-1.47.el6.x86_64 |
IntelMPI ACML FMA |
30000 (効率) |
14.6 (82%) |
29.0 (82%) |
56.2 (80%) |
105.8 (75%) |
201.1 (71%) |
287.6 (68%) |
358.5 (64%) |
323.9 (58%) |
380.0 (68%) |
| 65000 (効率) |
406.1 (72%) |
408.1 (73%) |
||||||||||
| IntelMPI ACML 非FMA |
30000 (効率) |
206.5 (73%) |
207.5 (37%) |
|||||||||
| IntelMPI MKL |
30000 (効率) |
147.2 (52%) |
49.0 (9%) |
|||||||||
| 理論 性能 |
FMA | 17.6 | 35.2 | 70.4 | 140.8 | 281.6 | 422.4 | 563.2 | 563.2 | 563.2 | ||
| 非FMA | 8.8 | 17.6 | 35.2 | 70.4 | 140.8 | 211.2 | 281.6 | 422.4 | 563.2 | |||
| 4-socket 12-core Opteron (45nm, Magny-Cours) | 1node | 2node | 4node | |||||||||
| 4CPU | 8CPU | 16CPU | ||||||||||
| 1core | 2core | 4core | 6core | 8core | 12core | 48core | 96core | 192core | ||||
| 10 05 28 |
ProServer DPeR815 12-core Opteron 6174 2.2GHz 12MB HT3、(45nm, Magny-Cours) DDR3-1333MHz 256GB (8GB x32) 1-node 4-socket、4CPU、48core gcc-4.1.2、ACML4.4.0 |
OpenMPI | 15000 | 7.6 | ||||||||
| 30000 (効率) |
7.7 (88%) |
58.4 (83%) |
301.4 (71%) |
|||||||||
| 15000 (合計) |
7.3 1x48job (350) |
|||||||||||
| 23000 (合計) |
7.4 1x48job (355) |
|||||||||||
| 30000 (合計) |
14.3 2x24job (344) |
|||||||||||
| 28.4 4x12job (340) |
||||||||||||
| 42.3 6x8job (338) |
||||||||||||
| 55.1 8x6job (330) |
||||||||||||
| 82.8 12x4job (331) |
||||||||||||
| 158.9 24x2job (318) |
||||||||||||
| (ideal) | - | 8.8 | 17.6 | 35.2 | 52.8 | 70.4 | 105.6 | 422.4 | ||||
| 4-socket 10-core XeonMP (32nm, Westmere-EX) | 1node | 2node | 4node | |||||||||
| 4CPU | 8CPU | 16CPU | ||||||||||
| 1core | 2core | 4core | 8core | 16core | 32core | 40core | 80core | 160core | ||||
| 11 10 26 |
ProServer DPeR910 4CPU 40core (HT off) XeonMP E7-4850 2.0GHz 10-core 4CPU 40-core Westmere-EX QPI 6.4GT/s DDR3-1333MHz Intel Compiler 12.0、MKL 10.2 IntelMPI 4.0.2、OpenMPI 1.4.3 HPL 2.0、CentOS5.5 |
OpenMP | 15000 | |||||||||
| 30000 (効率) |
7.8 (98%) |
15.2 (95%) |
29.8 (93%) |
58.1 (91%) |
107.2 (84%) |
161.7 (63%) |
126.9 (40%) |
|||||
| OpenMPI | 30000 (効率) |
7.8 (98%) |
15.5 (97%) |
30.6 (96%) |
60.0 (94%) |
116.7 (91%) |
226.9 (89%) |
120.0 (38%) |
||||
| IntelMPI | 30000 (効率) |
7.8 (98%) |
15.5 (97%) |
30.7 (96%) |
59.9 (94%) |
117.7 (92%) |
228.4 (89%) |
281.1 (88%) |
||||
| OpenMPI 4procs + OpenMP 10threads |
30000 (効率) |
262.9 (82%) |
||||||||||
| 100000 (効率) |
292.7 (91%) |
|||||||||||
| IntelMPI | 100000 (効率) |
301.7 (94%) |
||||||||||
| (ideal) | - | 8.0 | 16.0 | 32.0 | 64.0 | 128.0 | 256.0 | 320.0 | ||||
| 1-socket 4-core Xeon (32nm, Sandy Bridge) | 1node | 2node | 4node | 8node | 16node | 32node | 64node | |||||
| 1CPU | 2CPU | 4CPU | 8CPU | 16CPU | 32CPU | 64CPU | ||||||
| 1core | 2core | 4core | 8core | 16core | 32core | 64core | 128core | 256core | ||||
| 11 06 17 |
ProServer DPrT1600 4-core Xeon E3-1280 3.5GHz 8MB (TB:3.9GHz On) (32nm, Sandy Bridge) DDR3-1333MHz x2ch 16GB (8GB x2) 1-node 1-socket、1CPU、4-core CentOS 5.6 kernel 2.6.18-238.el5xen (SSE対応カーネル) Intel Compiler 12.0.4.191, MKL 10.3-4 IntelMPI 4.0.2.003 HPL 2.0 |
AVX | 30000 (効率) |
- | - | - | - | - | - | - | - | - |
| SSE OpenMP |
12.9 (92%) |
25.5 (91%) |
49.6 (89%) |
|||||||||
| SSE IntelMP |
12.9 (92%) |
25.7 (92%) |
49.9 (89%) |
|||||||||
| SSE OpenMPI |
12.9 (92%) |
25.6 (91%) |
49.4 (88%) |
|||||||||
| SSE 理論 性能 |
14 | 28 | 56 | |||||||||
| 11 05 31 |
ProServer DPrT1600 4-core Xeon E3-1280 3.5GHz 8MB (TB:3.9GHz On) (32nm, Sandy Bridge) DDR3-1333MHz x2ch 16GB (8GB x2) 1-node 1-socket、1CPU、4-core R.H.E.L.6.0 kernel 2.6.32-17. el6.x86_64 (AVX対応カーネル) Intel Compiler 12.0.4.191, MKL 10.3-4 IntelMPI 4.0.2.003 HPL 2.0 |
AVX OpenMP |
30000 (効率) |
27.5 (98%) |
52.4 (94%) |
94.0 (84%) |
||||||
| AVX IntelMPI |
27.5 (98%) |
52.4 (94%) |
92.9 (83%) |
|||||||||
| AVX OpenMPI |
27.5 (98%) |
52.4 (94%) |
92.4 (83%) |
|||||||||
| AVX 理論 性能 |
28 | 56 | 112 | |||||||||
| SSE OpenMP |
14.3 (102%) |
27.4 (98%) |
51.1 (91%) |
|||||||||
| SSE IntelMP |
14.3 (102%) |
27.6 (99%) |
51.3 (92%) |
|||||||||
| SSE OpenMPI |
14.3 (102%) |
27.6 (99%) |
51.3 (92%) |
|||||||||
| SSE 理論 性能 |
14 | 28 | 56 | |||||||||
| yy mm dd |
System | 並列 種類 |
N値 | Linpack HPL (GFLOPS) | ||||||||
| 4-socket 16-core Opteron (32nm, Interlagos) | 1node | |||||||||||
| 4CPU | ||||||||||||
| 1core | 2core | 4core | 8core | 16core | 24core | 32core | 48core | 64core | ||||
| 12 01 19 |
ProServer DPeR815 16-core Opteron 6276 2.2GHz (32nm, Interlagos) DDR3-1600MHz 64GB (4GB x16) 1-node 4-socket、4CPU、64-core ScientificLinux 6.1 Kernel-2.6.32-131.21.1.el6.x86_64 IntelCompiler 12.1.1.256 MKL 10.3.7.256 ACML 5.0.0 IntelMPI 4.0.3 glibc glibc-2.12-1.47.el6.x86_64 |
IntelMPI ACML FMA |
30000 (効率) |
14.6 (82%) |
29.0 (82%) |
56.2 (80%) |
105.8 (75%) |
201.1 (71%) |
287.6 (68%) |
358.5 (64%) |
323.9 (58%) |
380.0 (68%) |
| 65000 (効率) |
406.1 (72%) |
408.1 (73%) |
||||||||||
| IntelMPI ACML 非FMA |
30000 (効率) |
206.5 (73%) |
207.5 (37%) |
|||||||||
| IntelMPI MKL |
30000 (効率) |
147.2 (52%) |
49.0 (9%) |
|||||||||
| 理論 性能 |
FMA | 17.6 | 35.2 | 70.4 | 140.8 | 281.6 | 422.4 | 563.2 | 563.2 | 563.2 | ||
| 非FMA | 8.8 | 17.6 | 35.2 | 70.4 | 140.8 | 211.2 | 281.6 | 422.4 | 563.2 | |||
| 1-socket 4-core Xeon (32nm, Sandy Bridge) | 命令 並列 (効率) |
1node | 2node | 4node | 8node | 16node | 32node | 64node | ||||
| 1CPU | 2CPU | 4CPU | 8CPU | 16CPU | 32CPU | 64CPU | ||||||
| 1core | 2core | 4core | 8core | 16core | 32core | 64core | 128core | 256core | ||||
| 11 06 17 |
ProServer DPrT1600 4-core Xeon E3-1280 3.5GHz 8MB (TB:3.9GHz On) (32nm, Sandy Bridge) DDR3-1333MHz x2ch 16GB (8GB x2) 1-node 1-socket、1CPU、4-core CentOS 5.6 kernel 2.6.18-238.el5xen (SSE対応カーネル) Intel Compiler 12.0.4.191, MKL 10.3-4 IntelMPI 4.0.2.003 HPL 2.0 |
AVX | 30000 | - | - | - | - | - | - | - | - | - |
| SSE OpenMP (効率) |
12.9 (92%) |
25.5 (91%) |
49.6 (89%) |
|||||||||
| SSE IntelMP (効率) |
12.9 (92%) |
25.7 (92%) |
49.9 (89%) |
|||||||||
| SSE OpenMPI (効率) |
12.9 (92%) |
25.6 (91%) |
49.4 (88%) |
|||||||||
| SSE 理論 性能 |
14 | 28 | 56 | |||||||||
| 11 05 31 |
ProServer DPrT1600 4-core Xeon E3-1280 3.5GHz 8MB (TB:3.9GHz On) (32nm, Sandy Bridge) DDR3-1333MHz x2ch 16GB (8GB x2) 1-node 1-socket、1CPU、4-core R.H.E.L.6.0 kernel 2.6.32-17. el6.x86_64 (AVX対応カーネル) Intel Compiler 12.0.4.191, MKL 10.3-4 IntelMPI 4.0.2.003 HPL 2.0 |
AVX OpenMP (効率) |
30000 | 27.5 (98%) |
52.4 (94%) |
94.0 (84%) |
||||||
| AVX IntelMPI (効率) |
27.5 (98%) |
52.4 (94%) |
92.9 (83%) |
|||||||||
| AVX OpenMPI (効率) |
27.5 (98%) |
52.4 (94%) |
92.4 (83%) |
|||||||||
| AVX 理論 性能 |
28 | 56 | 112 | |||||||||
| SSE OpenMP (効率) |
14.3 (102%) |
27.4 (98%) |
51.1 (91%) |
|||||||||
| SSE IntelMP (効率) |
14.3 (102%) |
27.6 (99%) |
51.3 (92%) |
|||||||||
| SSE OpenMPI (効率) |
14.3 (102%) |
27.6 (99%) |
51.3 (92%) |
|||||||||
| SSE 理論 性能 |
14 | 28 | 56 | |||||||||
| 4-socket 12-core Opteron (45nm, Magny-Cours) | 1node | 2node | 4node | |||||||||
| 4CPU | 8CPU | 16CPU | ||||||||||
| 1core | 2core | 4core | 6core | 8core | 12core | 48core | 96core | 192core | ||||
| 10 05 28 |
ProServer DPeR815 12-core Opteron 6174 2.2GHz 12MB HT3、(45nm, Magny-Cours) DDR3-1333MHz 256GB (8GB x32) 1-node 4-socket、4CPU、48core gcc-4.1.2、ACML4.4.0 |
OpenMPI | 15000 | 7.6 | ||||||||
| 30000 (効率) |
7.7 (88%) |
58.4 (83%) |
301.4 (71%) |
|||||||||
| 15000 (合計) |
7.3 1x48job (350) |
|||||||||||
| 23000 (合計) |
7.4 1x48job (355) |
|||||||||||
| 30000 (合計) |
14.3 2x24job (344) |
|||||||||||
| 28.4 4x12job (340) |
||||||||||||
| 42.3 6x8job (338) |
||||||||||||
| 55.1 8x6job (330) |
||||||||||||
| 82.8 12x4job (331) |
||||||||||||
| 158.9 24x2job (318) |
||||||||||||
| (ideal) | - | 8.8 | 17.6 | 35.2 | 52.8 | 70.4 | 105.6 | 422.4 | ||||
| 4-socket 10-core XeonMP (32nm, Westmere-EX) | 1node | 2node | 4node | |||||||||
| 4CPU | 8CPU | 16CPU | ||||||||||
| 1core | 2core | 4core | 8core | 16core | 32core | 40core | 80core | 160core | ||||
| 11 10 26 |
ProServer DPeR910 4CPU 40core (HT off) XeonMP E7-4850 2.0GHz 10-core 4CPU 40-core Westmere-EX QPI 6.4GT/s DDR3-1333MHz Intel Compiler 12.0、MKL 10.2 IntelMPI 4.0.2、OpenMPI 1.4.3 HPL 2.0、CentOS5.5 |
OpenMP | 15000 | |||||||||
| 30000 (効率) |
7.8 (98%) |
15.2 (95%) |
29.8 (93%) |
58.1 (91%) |
107.2 (84%) |
161.7 (63%) |
126.9 (40%) |
|||||
| OpenMPI | 30000 (効率) |
7.8 (98%) |
15.5 (97%) |
30.6 (96%) |
60.0 (94%) |
116.7 (91%) |
226.9 (89%) |
120.0 (38%) |
||||
| IntelMPI | 30000 (効率) |
7.8 (98%) |
15.5 (97%) |
30.7 (96%) |
59.9 (94%) |
117.7 (92%) |
228.4 (89%) |
281.1 (88%) |
||||
| OpenMPI 4procs + OpenMP 10threads |
30000 (効率) |
262.9 (82%) |
||||||||||
| 100000 (効率) |
292.7 (91%) |
|||||||||||
| IntelMPI | 100000 (効率) |
301.7 (94%) |
||||||||||
| (ideal) | - | 8.0 | 16.0 | 32.0 | 64.0 | 128.0 | 256.0 | 320.0 | ||||
| 4-socket 8-core XeonMP (45nm, Nehalem-EX) | 1node | 2node | 4node | 8node | ||||||||
| 4CPU | 8CPU | 16CPU | 32CPU | |||||||||
| 1core | 2core | 4core | 8core | 16core | 32core | 64core | 128core | 256core | ||||
| 10 06 18 |
ProServer DPeR910 4CPU 32core (HT off) X7560 8-core XeonMP 2.27GHz、Nehalem-EX QPI 6.4GT/s DDR3-1333MHz 256GB Intel Compiler 11.1、MKL 10.2 IntelMPI 1.4.1、HPL 2.0、CentOS5.5 |
OpenMP | 15000 | |||||||||
| 30000 | 9.3 | 35.1 | 69.9 | 127.4 | 148.0 | |||||||
| OpenMPI | 30000 | 35.8 | 65.1 | 133.9 | 233.1 | |||||||
| (ideal) | - | 9.1 | 18.2 | 36.3 | 72.6 | 159.8 | 290.6 | |||||
| 2-socket 6-core Xeon (32nm, Westmere) | 1node | 2node | 4node | 8node | 16node | |||||||
| 2CPU | 4CPU | 8CPU | 16CPU | 32CPU | ||||||||
| 1core | 2core | 4core | 8core | 12core | 24core | 48core | 96core | 192core | ||||
| 11 06 27 |
ProServer DPeT710 2CPU 12core (HT off) X5690 6-core Xeon 3.46GHz 12MB、Westmere QPI 6.4GT/s Intel 5520 Chipset DDR3-1333MHz 48GB Intel Compiler 12.0.4.191、MKL 10.3-4 IntelMPI 4.0.2.003、OpenMPI 1.4.3 CentOS 5.5 (Final) HPL 2.0 |
SSE OpenMP (効率) |
30000 | 13.1 (95%) |
25.4 (92%) |
49.6 90(%) |
96.6 (88%) |
135.7 (82%) |
||||
| SSE OpenMPI (効率) |
13.1 (95%) |
25.7 (93%) |
50.3 (91%) |
96.6 (88%) |
134.3 (81%) |
|||||||
| SSE IntelMPI (効率) |
13.1 (95%) |
26.0 (9%4) |
50.9 (92%) |
99.7 (90%) |
142.0 86%) |
|||||||
| SSE 理論 性能 |
- | 13.8 | 27.6 | 55.2 | 110.4 | 165.6 | ||||||
| 10 06 18 |
ProServer DPeT5500 2CPU 6core (HT off) X5680 6-core Xeon 3.33GHz 12MB、Westmere QPI 6.4GT/s Intel 5520 Chipset DDR3-1066MHz 24GB Intel Compiler 11.1、MKL 10.2 IntelMPI 4.0、HPL 2.0、CentOS5.4 GbE SW |
OpenMP | 15000 | |||||||||
| 30000 | ||||||||||||
| OpenMPI | 30000 | 12.8 | 92.2 | 124.7 | ||||||||
| (ideal) | - | 13.3 | 26.6 | 53.3 | 106.6 | 159.8 | ||||||
| 10 05 28 |
ProServer DPeM610 2CPU 6core (HT off) X5660 6-core Xeon 2.80GHz 12MB、Westmere QPI 6.4GT/s Intel 5520 Chipset DDR3-1333MHz 24GB Intel Compiler 11.1、MKL 10.2 IntelMPI 4.0、HPL 2.0、OpenMP 1.4.1 CentOS5.4 GbE SW |
OpenMP | 15000 | 11.1 | ||||||||
| 30000 | 43.0 | 83.8 | 110.8 | |||||||||
| OpenMPI | 30000 | 43.6 | 80.0 | 111.3 | 153.7 | 190.7 | 369.7 | |||||
| IntelMPI | 30000 | 43.8 | 82.3 | 114.1 | 147.0 | 208.6 | 377.6 | |||||
| OpenMP OpenMPI |
61000 | 284.0 | 479.2 | |||||||||
| OpenMP IntelMPI |
61000 | 304.8 | 498.8 | |||||||||
| (ideal) | - | 11.2 | 22.4 | 44.8 | 89.6 | 134.4 | 268.8 | 537.6 | 1075.2 | |||
| 2-socket 4-core Xeon (45nm, Nehalem) | 1node | 2node | 4node | 8node | 16node | 32node | ||||||
| 2CPU | 4CPU | 8CPU | 16CPU | 32CPU | 64CPU | |||||||
| 1core | 2core | 4core | 8core | 16core | 32core | 64core | 128core | 256core | ||||
| 10 02 25 |
ProServer DPeR610 2CPU 8core (HT off) X5570 Quad-core Xeon 2.93GHz 8MB、Nehalem QPI 6.4GT/s Intel 5520 Chipset DDR3-1333MHz 24GB Intel Compiler 11.0、MKL 10.1 IntelMPI 3.2、HPL 2.0、OpenMP 1.4.1 CentOS5.4 InfniBand QDR ConnectX PCIe2.0 / 10GbE |
IntelMPI OpenMP |
280k | 2585 | ||||||||
| 09 04 17 - 20 |
ProServer DPeR610 2CPU 8core (HT on/off) X5570 Quad-core Xeon 2.93GHz 8MB、Nehalem QPI 6.4GT/s Intel 5520 Chipset DDR3-1333MHz 24GB (4GBx6) Intel Compiler 11.0、MKL 10.1 IntelMPI 3.2、HPL 2.0、CentOS5.3 ※ HTonにて8スレッド2ジョブ同時投入を実施 |
Serial | 15000 | 10.7 | 10.7 8job |
|||||||
| 30000 | 10.8 | |||||||||||
| OpenMP | 30000 | 79.9 | ||||||||||
| OpenMPI | 30000 | 80.4 | ||||||||||
| IntelMPI | 30000 | 81.1 | ||||||||||
| IntelMPI HT on |
30000 | 49.7 (8) |
||||||||||
| 73.7 (16) |
||||||||||||
| 38.3 37.9 (8+8) |
||||||||||||
| 09 04 17 |
ProServer DPeR610 2CPU 8core (HT off) X5570 Quad-core Xeon 2.93GHz 8MB、Nehalem QPI 6.4GT/s Intel 5520 Chipset DDR3-1333MHz 24GB (4GBx6) Intel Compiler 9.1、MKL 10.1 IntelMPI 3.2、HPL 2.0、CentOS5.3 ※ HTonにて8スレッド2ジョブ同時投入を実施 |
IntelMPI | 30000 | 80.2 | ||||||||
| 2-socket 4-core Xeon (45nm, core MA) | 1node | 2node | 4node | 8node | 16node | 32node | ||||||
| 2CPU | 4CPU | 8CPU | 16CPU | 32CPU | 64CPU | |||||||
| 1core | 2core | 4core | 8core | 16core | 32core | 64core | 128core | 256core | ||||
| 09 04 20 |
ProServer DPe29502I 2CPU 8core X5470 Quad-core Xeon 3.33GHz 2x6MB (45nm) FSB1333MHz Intel 5000X Chipset DDR2-667 FB-DIMM 32GB Intel C Compiler 11.0、MKL 10.1 Intel MPI 3.2、OpenMPI1.2.5、HPL 2.0、CentOS5.3 |
Serial | 15000 | 11.7 | 8.6 8job |
|||||||
| 30000 | 11.9 | |||||||||||
| OpenMP | 30000 | 71.4 | ||||||||||
| IntelMPI | 30000 | 67.7 | ||||||||||
| 09 04 17 |
ProServer DPe29502I 2CPU 8core X5470 Quad-core Xeon 3.33GHz 2x6MB (45nm) FSB1333MHz Intel 5000X Chipset DDR2-667 FB-DIMM 32GB Intel C Compiler 9.1、MKL 10.1 Intel MPI 3.2、OpenMPI1.2.5、HPL 2.0、CentOS5.3 |
Serial | 15000 | 11.7 | ||||||||
| OpenMP | 30000 | 45.4 | 67.5 | |||||||||
| IntelMPI | 30000 | 67.2 | ||||||||||
| 09 04 17 |
ProServer DPe29502I 2CPU 8core X5470 Quad-core Xeon 3.33GHz 2x6MB (45nm) FSB1333MHz Intel 5000X Chipset DDR2-667 FB-DIMM 32GB Intel C Compiler 9.1、MKL 10.1 Intel MPI 3.2、OpenMPI1.2.5、HPL 2.0、CentOS4.7 |
IntelMPI | 30000 | 65.5 | ||||||||
| 08 11 06 |
ProServer DPe19502I 2CPU 8core X5460 Quad-core Xeon 3.16GHz 2x6MB (45nm) FSB1333MHz Intel 5000X Chipset DDR2-667 FB-DIMM 8GB Intel C Compiler 11.0、MKL 10.1 Intel MPI 3.2、OpenMPI1.2.5、HPL 2.0 |
OpenMP | 15000 | 10.9 | ||||||||
| OpenMP | 30000 | 60.8 | ||||||||||
| IntelMPI | 30000 | 58.8 | ||||||||||
| 08 11 06 |
ProServer DPrT7400 2CPU 8core X5482 Quad-core Xeon 3.2GHz 2x6MB FSB1600MHz Intel 5400 Chipset DDR2-800 FB-DIMM 128GB (8GBx32) Intel Compiler 9.1、MKL 10.0 OpenMPI1.2.6、HPL 2.0 |
OpenMP | 120000 | 74.9 | ||||||||
| 08 04 11 |
ProServer DPrT7400 2CPU 8core X5472 Quad-core Xeon 3.0GHz 2x6MB FSB1600MHz Intel 5400 Chipset DDR2-800 FB-DIMM 8GB Intel Compiler 10.1、MKL 10.0 Intel MPI3.0、OpenMPI1.2.5、HPL 1.0 |
OpenMP | 15000 | 10.3 | 19.9 | 37.6 | 61.2 | |||||
| 30000 | 58.3 | |||||||||||
| 31000 | 56.1 | |||||||||||
| IntelMPI | 15000 | 19.8 | 38.4 | 59.0 | ||||||||
| 30000 | 59.6 | 100.9 | ||||||||||
| 31000 | 60.2 | |||||||||||
| OpenMPI | 15000 | 19.8 | 38.4 | 59.4 | ||||||||
| 30000 | 60.8 | 106.1 | ||||||||||
| 31000 | 61.8 | |||||||||||
| OpenMP OpenMPI GbE |
30000 | 88.3 | ||||||||||
| OpenMP IntelMPI GbE |
30000 | 94.1 | ||||||||||
| 08 01 17 |
ProServer DPrT5400 2CPU 8core X5460 Quad-core Xeon 3.16GHz 2x6MB (45nm) FSB1333MHz Intel 5400 Chipset DDR2-667 FB-DIMM 16GB Intel Compiler 10.0、MKL 9.1、HPL 1.0 |
OpenMP | 15000 | 10.3 | 19.8 | 35.9 | 56.0 | |||||
| 31000 | 61.9 | |||||||||||
| 08 01 11 |
ProServer DPrT5400 2CPU 8core X5450 Quad-core Xeon 3.0GHz 2x6MB FSB1333MHz Intel 5400 Chipset DDR2-667 FB-DIMM 16GB Intel Compiler 10.0、MKL 9.1、HPL 1.0 |
OpenMP | 15000 | 10.0 | 19.0 | 34.6 | 54.3 | |||||
| 31000 | 59.1 | |||||||||||
| 4-socket 4-core Opteron (45nm, Shanghai) | 1node | 2node | 4node | 8node | 32node | |||||||
| 4CPU | 8CPU | 16CPU | 32CPU | 64CPU | ||||||||
| 1core | 2core | 4core | 8core | 16core | 32core | 64core | 128core | 256core | ||||
| 09 03 09 / 11 |
ProServer DPeM905 (Blade DPeM1000e) Quad-core Opteron 8378 2.4GHz 6MB (45nm, Shanghai) DDR2-800MHz 32GB 4-socket、8node、32CPU、128core InfiniBnad DDR、GbE x1 Intel Compiler11.0、MKL11.0、 Openmpi-1.2.8、HPL2.0 |
OpenMPI I/B (DDR) |
15000 | 28.5 | 53.4 | 99.6 | 180.0 | 310.5 | 533.8 | |||
| 30000 | 29.9 | 57.9 | 112.5 | 211.3 | 385.0 | 717.9 | ||||||
| 50000 | 419.8 | 821.6 | ||||||||||
| 100000 | 917.5 | |||||||||||
| OpenMPI GbE |
15000 | 108.0 | ||||||||||
| 30000 | 238.0 | |||||||||||
| 50000 | 286.6 | 383.6 | ||||||||||
| 100000 | 608.7 | |||||||||||
| (ideal) | - | 7.5 | 15 | 30 | 60 | 120 | 240 | 480 | 960 | |||
| 2-socket 4-core Opteron (45nm, Shanghai) | 1node | 2node | 4node | 8node | 16node | 32node | ||||||
| 2CPU | 4CPU | 8CPU | 16CPU | 32CPU | 64CPU | |||||||
| 1core | 2core | 4core | 8core | 16core | 32core | 64core | 128core | 256core | ||||
| 08 12 24 |
ProServer DPeR805 Quad-core Opteron 2384 2.7GHz 6MB (45nm, shanghai) DDR2-667MHz 16GB Intel Compiler11.0、MKL11.0、 Oopenmpi-1.2.8、HPL2.0 |
OpenMP | 30000 | 8.5 | 16.8 | 32.0 | 57.0 | |||||
| IntelMPI | 30000 | 8.5 | 16.9 | 31.9 | 60.3 | |||||||
| 4-socket 4-core Opteron (65nm, Barcelona) | 1node | 2node | 4node | 8node | 32node | |||||||
| 4CPU | 8CPU | 16CPU | 32CPU | 64CPU | ||||||||
| 1core | 2core | 4core | 8core | 16core | 32core | 64core | 128core | 256core | ||||
| 08 11 28 |
ProServer DPeR905 Quad-core Opteron 8352 2.2GHz 2MB (65nm, Barcelona) FSB1066MHz DDR2-667MHz 64GB Intel Compiler9.1、MKL10.1、 IntelMPI3.2、HPL2.0 |
OpenMP | 15000 | 25.2 | 45.6 | 79.8 | ||||||
| 30000 | 26.3 | 48.3 | 90.0 | |||||||||
| 85000 | 26.5 | 52.8 | 89.3 | |||||||||
| 4-socket 4-core Xeon (65nm) | 1node | 2node | 4node | 8node | 32node | |||||||
| 4CPU | 8CPU | 16CPU | 32CPU | 64CPU | ||||||||
| 1core | 2core | 4core | 8core | 16core | 32core | 64core | 128core | 256core | ||||
| 08 11 28 |
ProServer DPeR900 4CPU 16core X7350 Quadcore Xeon 2.93GHz 2x4MB 65nm FSB1066MHz Intel 7300 Chipset DDR2-667 FB-DIMM 128GB (8GBx16にて4ch接続) Intel Compiler 9.1、MKL 10.1、 IntelMPI 3.2、HPL 2.0 |
OpenMP | 15000 | 35.0 | 61.9 | 68.4 | ||||||
| 30000 | 37.0 | 68.8 | 77.8 | |||||||||
| 120000 | 39.2 | 76.0 | 87.6 | |||||||||
| 08 01 09 |
ProServer DPeR900 4CPU 16core X7350 Quad-core Xeon 2.93GHz 2x4MB (65nm) FSB1066MHz Intel 7300 Chipset DDR2-667 FB-DIMM 32GB (4ch接続) Intel Compiler 10.0、MKL 9.1、HPL 1.0 |
OpenMP | 15000 | 9.8 | 18.8 | 34.1 | 56.9 | 54.7 | ||||
| 1-socket 4-core Xeon (45nm) | 1node | 2node | 4node | 8node | 16node | 32node | 32node | |||||
| 1CPU | 2CPU | 4CPU | 8CPU | 16CPU | 32CPU | 64CPU | ||||||
| 1core | 2core | 4core | 8core | 16core | 32core | 64core | 128core | 256core | ||||
| 08 05 19 |
ProServer DPeT300 X3363 Quadcorere Xeon 2.83GHz 2x6MB (45nm) FSB1333MHz Intel 5100 Chipset DDR2-667 FB-DIMM 6GB Intel Compiler 9.1、MKL 10.0、HPL 1.0 |
OpenMP | 15000 | 9.7 | 33.9 | |||||||
| 27000 | 9.9 | 35.3 | ||||||||||
| 30000 | ||||||||||||
| 08 05 30 |
ProServer DPeR300 L5410 Quad-core Xeon 2.33GHz 2x6MB (45nm) FSB1333MHz Intel 5100 Chipset DDR2-667 FB-DIMM 12GB Intel Compiler 9.1、MKL 10.0、HPL 1.0 |
OpenMP | 15000 | 8.1 | 29.2 | |||||||
| 27000 | 8.2 | 30.0 | ||||||||||
| 30000 | 8.2 | 30.6 | ||||||||||
| 2-socket 4-core Opteron (65nm) | 1node | 2node | 4node | 8node | 16node | 32node | ||||||
| 2CPU | 4CPU | 8CPU | 16CPU | 32CPU | 64CPU | |||||||
| 1core | 2core | 4core | 8core | 16core | 32core | 64core | 128core | 256core | ||||
| 08 06 26 |
ProServer DPeSC1435 Quad-core Opteron 2356 2.3GHz (65nm, Barcelona) DDR2-667MHz 8GB Intel Compiler 10.1、MKL 10.0、HPL 1.0 |
OpenMP | 15000 | 7.3 | 14.0 | 27.3 | 48.6 | |||||
| 30000 | 51.2 | |||||||||||
| 2-socket 4-core Xeon (65nm) | 1node | 2node | 4node | 8node | 16node | 32node | ||||||
| 2CPU | 4CPU | 8CPU | 16CPU | 32CPU | 64CPU | |||||||
| 1core | 2core | 4core | 8core | 16core | 32core | 64core | 128core | 256core | ||||
| 06 11 27 |
ProServer I 1U 2CPU 8core X5355 Quad-core Xeon 2.66GHz 2x4MB (65nm) FSB1333MHz Intel 5000P Chipset (off) DDR2-667 FB-DIMM 8GB MKL 8.1、HPL 1.0 |
OpenMP | 15000 | 7.3 | 44.7 | |||||||
| 32000 | 45.1 | |||||||||||
| 07 02 07 |
ProServer DPr690 2CPU 8core X5355 Quad-core Xeon 2.66GHz 2x4MB (65nm) FSB1333MHz Intel 5000X Chipset DDR2-533 FB-DIMM 64GB MKL 8.1、HPL 1.0 |
OpenMP | 30000 | 38.9 | ||||||||
| 44000 | 39.9 | |||||||||||
| 64000 | 38.4 | |||||||||||
| 90000 | 42.2 | |||||||||||
| 07 02 13 |
ProServer DPr690 2CPU 8core X5355 Quad-core Xeon 2.66GHz 2x4MB (65nm) FSB1333MHz z Intel 5000X Chipset DDR2-533 FB-DIMM 64GB Intel Compiler 9.1、MKL 9.0、HPL 1.0 ・ MKLが9.0へメジャーバージョンアップ |
OpenMP | 15000 | 40.0 | ||||||||
| 30000 | 46.4 | |||||||||||
| 44000 | 44.2 | |||||||||||
| 64000 | 44.7 | |||||||||||
| 90000 | 47.6 | |||||||||||
| 07 06 06 |
ProServer DPr690 2CPU 8core X5355 Quad-core Xeon 2.66GHz 2x4MB (65nm) FSB1333MHz Intel 5000X Chipset DDR2-667 FB-DIMM 24GB Intel Compiler 10.0、MKL 9.1、HPL 1.0 ・ インテルコンパイラ10.0へメジャーアップ ・ MKLも9.1へマイナーバージョンアップ |
OpenMP | 15000 | 8.2 | ||||||||
| 30000 | 52.3 | |||||||||||
| 07 09 19 |
ProServer DPr490 2CPU 8Core2node 16core X5365 Quadcore Xeon 3.0GHz 2x4MB (65nm) FSB1333MHz Intel 5000X Chipset DDR2-667 FB-DIMM 8GB Intel Compiler 10.0、MKL 9.1、HPL 1.0 |
OpenMP | 15000 | 10.0 | 19.0 | 33.9 | 43.1 | |||||
| 30000 | 48.4 | |||||||||||
| MPICH OpenMP GbE |
42000 | 76.12 | ||||||||||
| 2-socket 2-core Xeon (65nm) | 1node | 2node | 4node | 8node | 16node | 32node | 32node | |||||
| 2CPU | 4CPU | 8CPU | 16CPU | 32CPU | 64CPU | 64CPU | ||||||
| 1core | 2core | 4core | 8core | 16core | 32core | 64core | 128core | 256core | ||||
| 06 08 18 |
ProServer DPe1950 2CPU 4core 5160 Dual-core Xeon 3.0GHz (65nm) FSB1333MHz Intel 5000X Chipset DDR2-667 FB-DIMM 8GB Intel Compiler 9.1、MKL 8.1、HPL 1.0 |
OpenMP | 15000 | 8.7 | 16.7 | 28.4 | ||||||
| 31000 | 8.9 | 17.1 | 30.1 | |||||||||
| 44000 | 31.9 | |||||||||||
| 07 06 06 |
ProServer DPe1950 2CPU 4core 5160 Dual-core Xeon 3.0GHz (65nm) FSB667MHz Intel 5000X Chipset DDR2-667 FB-DIMM 8GB Intel Compiler 10.0、MKL 9.1、HPL 1.0 ・ インテルコンパイラ10.0へメジャーアップ ・ MKLも9.1へマイナーバージョンアップ |
OpenMP | 15000 | 10.3 | 33.3 | |||||||
| 31000 | 35.1 | |||||||||||
| 07 02 13 |
ProServer DPr690 2CPU 4core 5160 Dual-core Xeon 3GHz (65nm) FSB1333MHz Intel 5000X Chipset DDR2-667 FB-DIMM 8GB Intel Compiler 9.1、MKL 9.0、HPL 1.0 ・ MKLが9.0へメジャーバージョンアップ |
OpenMP | 15000 | 9.9 | ||||||||
| 06 10 10 |
ProServer DPr690 2CPU 2-node 8core 5160 Dual-core Xeon 3.0GHz (65nm) FSB1333MHz Intel 5000X Chipset DDR2-667 FB-DIMM 16GB |
MPICH OpenMP GbE |
64000 | 52.0 | ||||||||
| 06 10 20 |
ProServer DPr490 2CPU 4core 4node 16core 5160 Dual-core Xeon 3.0GHz (65nm) FSB1333MHz Intel 5000X Chipset DDR2-667 FB-DIMM 4GB |
MPICH OpenMP GbE |
44000 | 93.0 | ||||||||
| 06 10 30 |
ProServer DPr490 2CPU 4core 8node 32core 5150 Dual-core Xeon 2.66GHz 65nm FSB1333MHz Intel 5000X Chipset DDR2-667 FB-DIMM 4GB |
MPICH OpenMP GbE |
56000 | 125.6 | ||||||||
| 06 09 28 |
ProServer DPe1950 (fs-host) 2CPU 4core 5110 Dual-core Xeon 1.6GHz (65nm) FSB1333MHz Intel 5000X Chipset DDR2-667 FB-DIMM 2GB |
OpenMP | 15000 | 4.8 | 8.9 | |||||||
| 1-socket 4-core Core2 (65nm) | 1node | 2node | 4node | 8node | 16node | 32node | 32node | |||||
| 1CPU | 2CPU | 4CPU | 8CPU | 16CPU | 32CPU | 64CPU | ||||||
| 1core | 2core | 4core | 8core | 16core | 32core | 64core | 128core | 256core | ||||
| 06 12 05 |
ProServer 390 1CPU 4core QX6700 Core2 Extreme 2.66GHz 2x4MB (65nm) FSB1066MHz Intel 975X Chipset DDR2-533 4GB |
OpenMP | 15000 | 7.6 | 15.1 | 25.7 | ||||||
| 22000 | 27.9 | |||||||||||
| 1-socket 2-core Core2 (65nm) | 1node | 2node | 4node | 8node | 16node | 16node | 32node | 32node | ||||
| 1CPU | 2CPU | 4CPU | 8CPU | 16CPU | 32CPU | 64CPU | 64CPU | |||||
| 1core | 2core | 4core | 8core | 16core | 32core | 64core | 128core | 256core | ||||
| 06 12 05 |
ProServer 390 1CPU 2core E6700 Core2 Duo 2.66GHz (65nm) FSB1066MHz Intel 975X Chipset DDR2-533 1GB |
OpenMP | 9000 | 7.7 | 14.0 | |||||||
| 2-socket 1-core Xeon (NetBurst) | 1node | 2node | 4node | 8node | 16node | 32node | 64node | 32node | ||||
| 2CPU | 4CPU | 8CPU | 16CPU | 32CPU | 64CPU | 128CPU | 64CPU | |||||
| 1core | 2core | 4core | 8core | 16core | 32core | 64core | 128core | 256core | ||||
| 06 09 14 |
Xeon 3.6GHz 2CPU 2core (NetBurst MA) Intel E7250 Chipset DDR2-400 8GB |
OpenMP | 15000 | 6.5 | 12.5 | |||||||
| MPICH OpenMP GbE |
32000 | 41.6 | ||||||||||
| 48000 | 82.5 | |||||||||||
4-socket Xeon E7-4850 2.0GHz 10-coreプロセッサは、動作クロック周波数が2.0GHzと低いかわりに10コアを搭載することで高い浮動小数点演算スループット性能を実現した、32nmプロセス技術を使用するWestmere世代のプロセッサです。
HPC-ProServer DPeR910 (以下R910) はこのプロセッサを4個搭載することで40コアのメモリ共有型並列処理環境を実現した大型並列サーバです。
この40コア並列サーバを、Linpack HPLベンチマークテストを用いて、並列処理の条件を様々に変化させて評価しました。その結果次のようなことがわかりました。
R910に代表される4ソケット機の特徴は、ネットワーク並列化されていないアプリケーションをOpenMPや数値演算ライブラリMKLを用いて並列化し、それを多数のコアで処理することで、高い並列性能を実現することができることです。
今回のLinpackHPLベンチマークテスト結果からわかったことは、OpenMPや数値演算ライブラリMKLを用いて並列化した場合は、プロセッサ内での並列処理効率は高かったのですが、複数のプロセッサを用いた並列処理では、プロセッサ間の通信でなんらかのボトルネックが発生し、並列処理効率が著しく低下するということでした。
しかしこれを逆に考えると、プロセッサ間の通信負荷が少ないアプリケーションなら、OpenMPや数値演算ライブラリMKLを用いるだけで、多くのコアを搭載した並列計算機で高い並列化効率が得られる可能性が高いということです。
ネットワーク並列化されたアプリケーションのための大規模並列処理環境は十分に整備されています。しかし、ネットワーク並列化されていないアプリケーションのための大規模並列処理環境の整備はまだ不十分です。4ソケット機を使ってネットワーク並列化されていないアプリケーションの高速処理を実現することができれば素晴らしいことです。それを探す手掛かりのひとつがLinpackHPLベンチマークテストです。
OpenMPを用いた並列計算では16並列までは順調な性能向上を示していますが、32並列になると並列効率は63パーセントに低下しています。OpenMPを用いた計算では並列通信オーバーヘッドが高くなり、それが並列化効率を低下させていると考えられます。
さらに40並列では並列化効率が40パーセントにまで急落しています。LinpackHPLは並列化効率が高いベンチマークテストです。それが40パーセントの並列化効率しか得られないということは大問題です。
OpenMPIを用いた並列計算では16並列で91パーセント、32並列でも89パーセントの並列効率を維持しています。並列処理をMPI化することで計算の粒度が大きくなり通信オーバーヘッドが低下しているためだと考えられます。
ところがOpenMPIでも、40並列での効率は38パーセントに急落しています。OpenMPIによって通信オーバーヘッドが低下しても40並列になると並列化効率が急落するということは、ボトルネックは他にある可能性があります。
Opteron OpenMPI:
48並列の効率は80パーセントと良好 (これは問題なし!!)
そこで比較のため、OpteronでのOpenMPIによる48並列での並列化効率を確認しました。するとそれ71パーセントでした。(Opteron特有の性能オーバーヘッドを補正した後の並列化効率は80パーセント)。R910の40コア並列で並列化効率が低下した原因はOpenMPIやLinpackHPLの方ではなさそうです。
IntelMPIを用いた並列計算では16並列の並列化効率が92パーセント、32並列の並列化効率が89パーセントです。そしてさらに、40並列の並列化効率も88パーセントでした。これまでみられた並列化効率の低下は見られませんでした。これはなぜでしょうか。
この理由はおそらく、OpenMPとOpenMPIではスレッドやプロセスを各コアに配置する際の自動最適化が上手く機能していないためではないかと考えることができます。
それを確認するため、OpenMPとOpenMPIのハイブリッド並列処理のテストを行います。具体的には、各プロセッサに10個のスレッドをOpenMPによって割り当て、各プロセッサに4個のプロセスをOpenMPIによって割り当てる (10threads x 4MPI) という処理の分配です。すると並列化効率は82パーセントに改善しました。
そこでさらに高い効率が得られるかを確認するため、N値を100000にして通信オーバーヘッドの影響を低下させて再テストを実施したところ、効率は91パーセントにまで向上。これまでで最高の効率を記録しました。
最後にIntelMPIの性能を確認するため、IntelMPIでもN値を100000にして再テストをしましたす。すると効率は94パーセントという性能を記録しました。
なお表には記載していませんが、MPICH2のテストもおこなっています。しかし残念なことに、MPICH2はOpenMPIよりも性能が出ないばかりか、OpenMPIのようにProcessor affinityやMemory affinity等の制御ができないので手動での最適という手段も使えません。MPICH2はコア数の多いシステムには不向きなことがわかりました。
「Sandy Bridge Microarchitecture」 (以下、Sandy Bridge) は「Advanced Vector Extensions」 (以下、AVX) と呼ばれる命令セットを採用しています。AVXは256bit幅で処理する高速なネイティブモード (以下、AVX-256) と、128bit幅で処理するSSE互換モード (以下、AVX-128) という2種類の処理モードがあります。AVX-256の理論性能は従来の2倍です。(AVX-256、AVX-128はこの文章だけのローカルな表記)
AVXの高速なネイティブモードであるAVX-256を利用するためには、アプリケーションがAVX-256に対応していなければなりません。もしアプリケーションがAVX-256に対応していないと、AVX-256の代わりにSSE互換モードであるAVX-128が利用され、アプリケーションは高速化されません。
AVX-256を利用するためには計算機に搭載しているOSもAVXに対応していなければなりません。具体的にはRedHat6.0以降のOS (AVX対応) を搭載していなければなりません。もし計算機がRedHat6.0以前のOS (AVX非対応) を搭載していると、AVX-256の代わりにAVX-128 (SSE互換モード) が利用され、アプリケーションは高速化されません。
現在使用されている多くのアプリケーションはRedHat6.0以前のOS (AVX非対応) に対応しています。そのためSandy BridgeにRedHat 6.0以降のOS (AVX対応) を搭載しても、多くのアプリケーションは正常に動作しなくなるか、動作してもシステムが不安定になる可能性があります。もちろんそのようなアプリケーションはSSEを利用しようとするためAVX-256を利用できず、アプリケーションは高速化されません。
また他の問題として、アプリケーションが対応しているOSと、計算機に搭載されているOSが適合していないと、各開発元からのサポートが受けられなくなるという問題があります。
OSやアプリケーションを含むソフトウェア類は無数のソフトウェア部品で構成され、それらが相互に通信しながら処理を進めています。すなわち、アプリケーションが対応しているOSと、計算機に搭載されているOSのバージョンが適合していると、通信処理が正しく行われていることが保障されます。そのため、処理に不整合が発生しても、それを開発元に伝えれば技術支援やバックフィックスなどの対応が行われます。
ところがそれらのバージョンが適合していないと、ソフトウェア部品の通信処理に不整合が発生しても、それは保障範囲外になるため誰も対応しません。不整合はいつまでも解決されません。
上記の問題を解決するためには、Sandy Bridgeに搭載するOSのバージョンをアプリケーションに合わせてバージョンダウンすることで、アプリケーションとOSのバージョンを適合させる必要があります。幸いにもSandy Bridgeは下位互換性を備えているため、RedHat6.0以前のOS (AVX非対応) すなわちRedHat5.5 (CentOS5.5) などを搭載できます。OSをバージョンダウンすると多くのアプリケーショに対応できます。
これから発売される2-socket 8-coreのSandy Bridgeを搭載した計算機の基本性能は、たとえAVX-256が利用できず、AVX-128を利用することになっても高い性能が期待できます。
その理由は、コア数の増加 (8-core化)、クロック速度の向上、メモリチャンネル数の増加 (4-chanel化)、メモリ速度の向上 (1600MHz)、キャッシュメモリの高速化、コンパイラの高速化などです。これらの相乗効果により、AVX-128を利用していても、プロセッサ全体では1.2倍から2倍の性能向上が期待できます。
バイナリーで提供されるアプリケーションでRedHat6.0以降への対応に時間がかかることが確定している物を使用される場合は例外的にOSのパージョンダウンが役に立ちます。
しかしその反面、OSをバージョンダウンすると、AVXに対応できなくなります。そのためAVX-256は利用できなくなります。
またSandy BridgeにRedHat6.0以前のOS (AVX非対応) を搭載すると、AVXに対応したアプリケーションが正常に動作しない可能性があります。もしアプリケーションが正常に動作したとしても、AVX-256を利用することができず代わりにAVX-128を利用するためアプリケーションは高速化しません。
OSをバージョンダウンした場合は、Sandy BridgeをNehalem Microarchitectureとして利用することになります。そのため用途は限られたものになります。
以上のことから、Sandy Bridgeで全ての組み合わせについてのテストや開発をしようとすると、RedHat6.0以前のOSとRedHat6.0以降のOSの双方を搭載するシステムが必要です。
1) AVX対応の自作/商用アプリ用にRedHat6.1を搭載。AVX-128可、AVX-256可。
2) 商用アプリ用にRedHat5.6 (CentOS 5.6) を搭載。AVX-128可、AVX-256不可。
しかし、このような2種類のOSを搭載するというような手間をかけてまで、幅広いアプリケーションにに対応できるSandy Bridgeの動作環境を整備する必要があるのでしょうか。
あと1年もすれば多くのアプリケーションがSandy Bridgeに対応します。当然それらのアプリケーションはRedHat6.0以降のOS (AVX対応) に対応します。
Sandy Bridgeを使って確認したいことは、どのアプリケーションが何時からRedHat6.0以降のOSに対応し、いつからAVXにフル対応し、どれ位い性能が向上するかということです。これらの情報によってシステムの導入計画や運用計画を合理的に立案できます。
数か月のうちにアプリケーションがRedHat6.0以降のOS (AVX対応) に対応するのであればRedHat6.0以降のOS (AVX対応) を搭載した計算機の導入をお勧めします。
| yy mm dd |
System | 並列 種類 |
N値 | Linpack HPL (GFLOPS) | ||||||||
| 2-socket 6-core Xeon (32nm, Westmere) | 1node | 2node | 4node | 8node | 16node | |||||||
| 2CPU | 4CPU | 8CPU | 16CPU | 32CPU | ||||||||
| 1core | 2core | 4core | 8core | 12core | 24core | 48core | 96core | 192core | ||||
| 11 06 27 |
ProServer DPeT710 2CPU 12core (HT off) X5690 6-core Xeon 3.46GHz 12MB、Westmere QPI 6.4GT/s Intel 5520 Chipset DDR3-1333MHz 48GB Intel Compiler 12.0.4.191、MKL 10.3-4 IntelMPI 4.0.2.003、OpenMPI 1.4.3 CentOS 5.5 (Final) HPL 2.0 |
SSE OpenMP (効率) |
30000 | 13.1 (95%) |
25.4 (92%) |
49.6 90(%) |
96.6 (88%) |
135.7 (82%) |
||||
| SSE OpenMPI (効率) |
13.1 (95%) |
25.7 (93%) |
50.3 (91%) |
96.6 (88%) |
134.3 (81%) |
|||||||
| SSE IntelMPI (効率) |
13.1 (95%) |
26.0 (9%4) |
50.9 (92%) |
99.7 (90%) |
142.0 86%) |
|||||||
| SSE 理論 性能 |
- | 13.8 | 27.6 | 55.2 | 110.4 | 165.6 | ||||||
| 1-socket 4-core Xeon (32nm, Sandy Bridge) | 命令 並列 (効率) |
1node | 2node | 4node | 8node | 16node | 32node | 64node | ||||
| 1CPU | 2CPU | 4CPU | 8CPU | 16CPU | 32CPU | 64CPU | ||||||
| 1core | 2core | 4core | 8core | 16core | 32core | 64core | 128core | 256core | ||||
| 11 06 17 |
ProServer DPrT1600 4-core Xeon E3-1280 3.5GHz 8MB (Turbo Boost On : 3.9GHz) (32nm, Sandy Bridge) DDR3-1333MHz x2ch 16GB (8GB x2) 1-node 1-socket、1CPU、4-core CentOS 5.6 kernel 2.6.18-238.el5xen (SSE対応カーネル) Intel Compiler 12.0.4.191, MKL 10.3-4 IntelMPI 4.0.2.003 HPL 2.0 |
AVX128 OpenMP (効率) |
30000 | 12.9 (92%) |
25.5 (91%) |
49.6 (89%) |
||||||
| AVX128 IntelMP (効率) |
12.9 (92%) |
25.7 (92%) |
49.9 (89%) |
|||||||||
| AVX128 OpenMPI (効率) |
12.9 (92%) |
25.6 (91%) |
49.4 (88%) |
|||||||||
| AVX128 理論 性能 |
14 | 28 | 56 | |||||||||
| 11 05 31 |
ProServer DPrT1600 4-core Xeon E3-1280 3.5GHz 8MB (Turbo Boost On : 3.9GHz) (32nm, Sandy Bridge) DDR3-1333MHz x2ch 16GB (8GB x2) 1-node 1-socket、1CPU、4-core R.H.E.L.6.0 kernel 2.6.32-17. el6.x86_64 (AVX対応カーネル) Intel Compiler 12.0.4.191, MKL 10.3-4 IntelMPI 4.0.2.003 HPL 2.0 |
AVX256 OpenMP (効率) |
30000 | 27.5 (98%) |
52.4 (94%) |
94.0 (84%) |
||||||
| AVX256 IntelMPI (効率) |
27.5 (98%) |
52.4 (94%) |
92.9 (83%) |
|||||||||
| AVX256 OpenMPI (効率) |
27.5 (98%) |
52.4 (94%) |
92.4 (83%) |
|||||||||
| AVX256 理論 性能 |
28 | 56 | 112 | |||||||||
| AVX128 OpenMP (効率) |
14.3 (102%) |
27.4 (98%) |
51.1 (91%) |
|||||||||
| AVX128 IntelMP (効率) |
14.3 (102%) |
27.6 (99%) |
51.3 (92%) |
|||||||||
| AVX128 OpenMPI (効率) |
14.3 (102%) |
27.6 (99%) |
51.3 (92%) |
|||||||||
| AVX128 理論 性能 |
14 | 28 | 56 | |||||||||
計算機のアーキテクチャは約5年に一度の周期で更新されます。アーキテクチャが更新されると、それから約2年間は新しいアーキテクチャへのアプリケーションの移行期間となります。
アーキテクチャの更新は計算機の性能を飛躍的に向上させる正の側面と、計算機の運用に困難をもたらす負の側面の、両面性を持っています。システムの設計で大切なことは、正の側面を最大限に引き出し、負の側面を最小限に抑えることです。
インテルのアーキテクチャは下位互換性に十分配慮されています。そのためパソコンとして利用している場合は移行のストレスはほとんど感じません。上記のことが守られています。
しかしHPC計算のように高い性能が求められる用途では、下位互換で提供される範囲の性能では全く満足できません。
HPC計算ではアプリケーションがいかに早く移行期を通過し、高速なネイティブモードを利用できるようになるかが焦点です。
下図は5年のサイクルで繰り返されるアーキテクチャの更新の様子を示した模式図です。現在は移行期の半年目になります。
新しいアーキテクチャが発売されてから半年目にあたる現在は、開発環境、OS、1ソケットサーバの初期バージョンが提供され、性能を出しやすいLinpack HPLなどのベンチマークテストでネイティプの性能が確認されはじめたとろです。
開発環境の高度化、OSの改善、実際に利用されるアプリケーションの最適化などの作業はこれから活発化するという段階です。
| 開発期間 | 移行期間 | 利用期間 | |||||||
| -5 | -4 | -3 | -2 | -1 | 1 | 2 | 3 | 4 | 5 |
| アーキテクチャ開発 | アーキテクチャ改良 | ||||||||
| 製品開発 | 製品改良 | ||||||||
| 開発環境開発 | 開発環境改良 | ||||||||
| OS開発 | OS改良 | ||||||||
| アプリケーション開発 | |||||||||
| 第1世代 1ソケットCPU. | |||||||||
| 第1世代 2ソケットCPU. | |||||||||
| 第1世代 4ソケットCPU. | |||||||||
| 第2世代 1ソケットCPU. | |||||||||
| 第2世代 2ソケットCPU. | |||||||||
| 2G 4S | |||||||||
| (New) Many Core : 0.5TFLOPS | |||||||||
2011年の初頭にインテルはマイクロプロセッサのアーキテクチャを5年ぶりに刷新し、それまでの "Core Microarchitecture" から、新たに開発した "Sandy Bridge Microarchitecture" への世代交代を発表しました。そのスケジュールは次のようなものです。
・ 2011年Q1、PC用の1ソケットプロセッサCore i7/i5/i3を発売
・ 2011年Q2、サーバ用の1ソケットプロセッサXeon E3-1200番台を発売
・ 2011年Q4、サーバ用の2ソケットプロセッサを発売予定
・ 2012年以降、サーバ用の4ソケットプロセッサを発売予定
Sandy Bridgeの最大の特徴は1サイクルで256bit幅のデータを処理できることです。これに対応するため "AVX (Advanced Vector Extension)" と呼ばれる命令セットを採用しました。AVXは従来のSSEで採用されていた128bitのデータ処理幅を256bitに拡張し、同じクロック速度でこれまでの2倍の浮動小数点演算命令を処理できます。
例えば、3.5GHzで動作するコアの理論性能は、128bitのSSEでは14GFLOPSでしたが、256bitのAVXでは28GFLOPSへと2倍に高速化しています。
Sandy Bridgeの性能を発揮させる、すなわちAVXの性能を発揮させるためには、システム全体をAVXに対応させなければなりません。
具体的には、AVXに対応した開発環境であるIntel Compiler Version 12.0と、AVXに対応した数値演算ライブラリMKL 10.3を用いてアプリケーションを再コンパイルし、AVXに対応した実行モジュールを作成する必要があります。
これと並行して、AVXに対応したLinux OSであるRedHat 6.0を搭載した計算機の構築も必要です。これらの環境を整えてようやくAVXの性能を発揮させることができます。
しかし、AVXが利用できる環境を整えたからといって全てのアプリケーションが等しく高速化するわけではありません。AVXによってアプリケーションが高速に動作するためには、ハードウェア、OS、ミドルウェアのみならず、ソフトウェアもAVXに最適化しされていなければなりません。
ソフトウェアのAVXへの最適化はコンパイラが自動的に行います。しかし、コンパイラの働きでAVXに対応できるよになったとしても、それで性能が出ない場合も十分にあり得ます。
コンパイラで高速化できない箇所がソフトウェアの中にあり、それがボトルネックになって高速化できない場合はユーザが自分で解決しなければなりません。そのためには問題箇所の特定が必要です。それらの作業を簡単にできるようにしてくれる最適化支援ツールがIntelから提供されています。
アプリケーションを含むシステム全体がAVXに最適化されないと本来の性能が得られないということを如実に示すベンチマーク結果が公開されています。Sandy BridgeによるSPECfpベンチマークです。Sandy Bridgeの動作環境を整えたにもかかわらず、SPECfpでは殆どのアプリケーションの性能が向上していませんでした。
このことから、AVXは理論性能は高いが、実際のアプリケーションの性能向上は難いアーキテクチャだと結論付けそうになりました。
しかしそんな折、1-socket 4-core Sandy Bridge Xeon E3-1280 3.5GHzプロセッサを搭載したHPC ProServerDPrT1600によるLinpack HPLのベンチマークテスト結果が寄せられました。テスト結果を見るとSandy Bridgeは素晴らしい性能を発揮していました。
しかも寄せられたベンチマークテストでは、Sandy Bridgeの性能を浮き彫りにするため、複合的なテストが行われていました。具体的には、AVXを利用した場合とSSEを利用した場合のそれぞれについて、並列処理の通信の方法をOpenMP、IntelMPI、OpenMPに変更し、さらに並列度を1コア、2コア、4コアと変化させたテストが行われていました。その結果を下の表にまとめました。
この結果をから次のことがわかりました。
・ AVXの実効性能はSSEの実効性能のほぼ2倍
・ AVXとSSEの実効性能は理論性能とほぼ同じ
・ 並列度を高くしてもAVXとSSEの処理効率はほぼ同じ
・ 並列処理の通信方法を変更しても処理効率はほぼ同じ
Sandy BridgeはSPECfpベンチマークテストでは性能が出せませんでした。しかし、Linpack HPLベンチマークテストでは見事な性能が出ました。しかも単なるスループット性能だけでなく、並列処理でも性能が出ています。本来なSPECfpの中の幾つかのアプリケーションについては性能が出てほしいものです。しかし性能は出ていません。Linpack HPLとSPECfpでの性能の違いはどこから来るのでしょうか。
仮説を立てるための材料は少ないのですが、この違いの理由を考えることは意味があります。なぜなら、あと半年もすれば "Core Microarchitecture" はEOLを迎え "Sandy Bridge Microarchitecture" しか選択肢が無くなるからです。
Linpack HPLベンチマークはベンチマークテスト専用に開発されたプログラムです。そのためソースコードが簡潔でボトルネックの特定も容易です。開発環境の整備も小さな範囲で済みます。
少し穿った見方をすると、Linpack HPLは広く注目されているベンチマークテストであり、Lipack HPLで高い性能が出ると社会的に大きなインパクトがあります。そのためLinpack HPLに関連した開発環境の整備は早い段階から進んでいる可能性があります。
Linpack HPLに対してSPECfpはベンチマークテストとしての目的と方法が全く異なります。Linpack HPLは本当にハードウェアの基本的な性能を確認するためのベンチマークテストであるのに対して、SPECfpはユーザが実際のアプリケーションを利用してシステムを利用する状態での厳密な性能評価を目指していますです。このためSPECfpで使用されているベンチマークテスト用のコードは広く利用されているアプリケーションが使用されています。さらにテスト方法も実際のユーザの環境を反映できるように厳しく決められています。
SPECfpで使用されるアプリケーションは複雑かつ大規模なソフトウェアです。そのため開発環境の最適化だけでは高速化は難しく、アプリケーションの最適化も必要なようです。この両者を実現するためには多くの手間と長い時間がかかります。
そのうえSPECfpはアプリケーションのソースコードの変更が認められていません。テスト中にアプリケーションのボトルネックを発見すると、それを開発元に伝え、開発元が改良を行い、正式なレビジョンアップに反映されるのを待たなければ利用できません。同様に開発環境についても製品化されたものを使用しなければなりません。
この厳しさこそがSPECfpの真骨頂です。SPECfpは厳格なルールに則ってベンチマークが行われるため、計算機環境が正当に成熟するまでは性能が向上しない仕組みになっています。SPECfpは計算機システムの現実の性能を現実に評価できるベンチマークテストです。
このような理由からSPECfpベンチマークテストではAVXの性能が出るようになるまでに時間がかかります。しかしこれこそが現実です。
以上のことからわかることは、Linpack HPLで確認できたSandy Bridgeの性能は本物です。しかし、その性能が全てのアプリケーションに即座に反映されることはありません。
Linpack HPLはハードウェアの性能を高い感度で測定するツールです。しかし現実のアプリケーションの実効性能は測定できません。Linpack HPLはハードウェア性能の先行指標です。
SPECfpはハードウェアの性能に敏感に反応しません。しかし現実のアプリケーションの実効性能は正確に測定できます。SPECfpはハードウェアや開発環境ソフトウェアの全てを複合した場合の性能を確認するツールです。
計算機の性能を評価するためにはLinpack HPLとSPECfpの両方を、その特性に注意したうえで利用する必要があります。
マイクロアーキテクチャは数年に一回のペースで世代交代を繰り返します。マイクロアーキテクチャが世代交代した直後でも、簡単なアプリケーションは性能が出ます。しかし、複雑なアプリケーションは性能が出ないことが多いようです。このことはLipack HPLとSPECfpの性能差が大きいことからも確認できることです。
新しいアーキテクチャが発表されてから時間が経つに従い、アプリケーションを含むシステム全体の熟成が進み、複雑なアプリケーションの最適化が向上するため、複雑なアプリケーションの性能が理想値に近付きます。
過去を振り返ると、現在では高い性能を発揮している "Core Microarchitecture" もマルチコアで高い並列性能を発揮するようになるまでにはかなりの時間がかかりました。新しい "Sandy Bridge Microarchitecture" についても同様の過程を辿ると考えられます。