お問い合わせ | 導入事例 | HPC計算機 | 管理サーバ/ファイルサーバ | オプション | OS/開発環境 | アプリ | システム構築 | サポート | FAQ | ベンチ | 技術情報 | 購入案内

ベンチマークTOP

アプリケーション別ベンチマーク

 Gaussian (test397)大規模計算
 VASP (Hg)VASP (large job)
 GAMESS
 Amber9 (jac)
 CHARM
 FLUENT
 STAR-CD
 LS-Dyna


SPEC CFP2006の結果評価

Linpack HPL定点観測

システムインターコネクトの試験

ストレージのべンチマーク

基礎のベンチマークテスト


プロセッサ番号一覧へ

HPC計算機テストセンター概要
HPC計算機テストセンター利用法

LS-Dyna Xeon 2n4p16c (08.9.29)

LS-Dyna Xeon 1n2p8c (08.7.23)

LS-Dyna Xeon 1n2p8c (07.1.26)

Linpack HPLによる計算機の定点観測テスト

新Opteronプロセッサ "Interlagos" の性能を
Linpack HPLを用いて調査
(2012.1.19〜27)

Interlagosについて

 "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のメモリボトルネックに着眼し
2コア・2スレッド並列階層と
8CPUダイ・8プロセス並列階層を
組み合わせた
階層型16並列処理での資源管理

48コアを敢えて使わないことで
メモリ容量の節約
メモリボトルネックの回避
並列処理ボトルネックの回避
を実現

Interlagosの構造

 Interlagosの特徴は、16個のコアを3層の階層に分散して搭載していることです。Interlagosの性能を引き出すためには、この階層構造の特性を理解しボトルネックを避けてジョブを動作させなければなりません。ここでは各階層の構造を説明します。

第1の階層 "Interlagos"

 第1の階層は、16コアのInterlagosプロセッサと呼ばれる階層です。しかしこの階層の実態は、"Bulldoser Die" と呼ばれる物理的に独立した2個の半導体をネットワークで接続し、仮想的に16コアの環境を実現したものです。またメモリ・システムも、各Bulldoser Dieに独立して2チャンネルづつ実装されているため、非対称型の分散メモリ空間になっています。

 Interlagosはこのような特性のため、HPCで利用する場合は、1個の仮想マルチコアプロセッサとして利用するよりも、2個の独立したプロセッサで構成されたネットワーク並列環境として割り切って利用する方が合理的です。ジョブを投入する場合は、Interlagosプロセッサに投入するのではなく、各Bulldoser Dieに直接投入し、メモリも明示的にローカルメモリを使用することでメモリボトルネックや通信ボトルネックを抑えられます。

 

第2の階層 "Bulldoser Die"

 第2の階層は、8コアのBulldoser Dieと呼ばれる階層です。この階層は第1の階層とは異なり、コアとメモリが直接接続された対称型マルチプロセッシング環境になっています。そのためHPC計算として利用する場合はBulldoser Dieがジョブ投入の対象です。なお、Bulldoser Dieに投入した後のジョブ管理はシステム側が自動的に行います。

 ところで実は、第2の階層もフラットな構造ではなく、さらにその内部には "Bulldoser Module" と呼ばれる機能的に独立した4個の2コア・コア・モジュールがネットワークで接続されて搭載された階層構造になっています。 

 

第3の階層 "Bulldoser Module

 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を使う場合と使わない場合の、
メリットとデメリット

 次に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は計算機の特性を把握するための指標のひとつでしかありません。

Interlagos 4CPUの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            

 

 

これまで行ってきた
全ての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
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 4CPU 40-core搭載
ProServer DPeR910によるLinpack HPLテスト (11.10.26-28)

 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並列の並列化効率は90パーセントと良好
32並列の並列化効率は63パーセントへ低下
40並列の並列化効率は40パーセントに急落

  OpenMPを用いた並列計算では16並列までは順調な性能向上を示していますが、32並列になると並列効率は63パーセントに低下しています。OpenMPを用いた計算では並列通信オーバーヘッドが高くなり、それが並列化効率を低下させていると考えられます。

 さらに40並列では並列化効率が40パーセントにまで急落しています。LinpackHPLは並列化効率が高いベンチマークテストです。それが40パーセントの並列化効率しか得られないということは大問題です。

OpenMPI:
16並列の並列化効率は91パーセントと良好
32並列の並列化効率は89パーセントと良好
40並列の並列化効率は38パーセントに急落

 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パーセントと良好 (これも問題なし)

 IntelMPIを用いた並列計算では16並列の並列化効率が92パーセント、32並列の並列化効率が89パーセントです。そしてさらに、40並列の並列化効率も88パーセントでした。これまでみられた並列化効率の低下は見られませんでした。これはなぜでしょうか。

 この理由はおそらく、OpenMPとOpenMPIではスレッドやプロセスを各コアに配置する際の自動最適化が上手く機能していないためではないかと考えることができます。

OpenMP + OpenMPI + 手動制御によるハイブリッド並列:
40並列の並列化効率は82パーセントに到達

 それを確認するため、OpenMPとOpenMPIのハイブリッド並列処理のテストを行います。具体的には、各プロセッサに10個のスレッドをOpenMPによって割り当て、各プロセッサに4個のプロセスをOpenMPIによって割り当てる (10threads x 4MPI) という処理の分配です。すると並列化効率は82パーセントに改善しました。

OpenMP + OpenMPI #N:100000
手動制御によるハイブリッド並列:
40並列の並列化効率は82パーセントに到達

 そこでさらに高い効率が得られるかを確認するため、N値を100000にして通信オーバーヘッドの影響を低下させて再テストを実施したところ、効率は91パーセントにまで向上。これまでで最高の効率を記録しました。

IntelMPI #N:100000:
IntelMPIもN値100000で再テスト
40並列の並列化効率は94パーセントに到達

 最後にIntelMPIの性能を確認するため、IntelMPIでもN値を100000にして再テストをしましたす。すると効率は94パーセントという性能を記録しました。

MPICH2:
表には未記載、OpenMPIよりも性能が出ない
Processor affinityやMemory affinity等の制御もできない
コア数の多いシステムには不向き

 なお表には記載していませんが、MPICH2のテストもおこなっています。しかし残念なことに、MPICH2はOpenMPIよりも性能が出ないばかりか、OpenMPIのようにProcessor affinityやMemory affinity等の制御ができないので手動での最適という手段も使えません。MPICH2はコア数の多いシステムには不向きなことがわかりました。

 

1-socket 4-core Sandy Bridge Xeon E3-1280 3.5GHzに
CentOS 5.6 (AVX非対応)を搭載するとAVX-256を利用できず
Linpack HPLは49.6GFLOPSの性能しか発揮できないことが判明
(2011. 6. 17)

AVXは256bit幅 (AVX-256) で処理することで
従来の128bit幅の2倍の高速処理を実現

 「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-256を利用するには
アプリケーションがAVX-256に対応していなければならいない

 AVXの高速なネイティブモードであるAVX-256を利用するためには、アプリケーションがAVX-256に対応していなければなりません。もしアプリケーションがAVX-256に対応していないと、AVX-256の代わりにSSE互換モードであるAVX-128が利用され、アプリケーションは高速化されません。

AVX-256を利用するには
OSもAVXに対応していなければならない

 AVX-256を利用するためには計算機に搭載しているOSもAVXに対応していなければなりません。具体的にはRedHat6.0以降のOS (AVX対応) を搭載していなければなりません。もし計算機がRedHat6.0以前のOS (AVX非対応) を搭載していると、AVX-256の代わりにAVX-128 (SSE互換モード) が利用され、アプリケーションは高速化されません。

いまだに、多くのアプリケーションは
RedHat6.0以前のOS (AVX非対応) にしか対応していない

 現在使用されている多くのアプリケーションはRedHat6.0以前のOS (AVX非対応) に対応しています。そのためSandy BridgeにRedHat 6.0以降のOS (AVX対応) を搭載しても、多くのアプリケーションは正常に動作しなくなるか、動作してもシステムが不安定になる可能性があります。もちろんそのようなアプリケーションはSSEを利用しようとするためAVX-256を利用できず、アプリケーションは高速化されません。

アプリケーションが対応するOSのバージョンと
計算機に搭載しているOSのバージョンが適合しない場合の問題点
ルール外での使用のためサポートが受けられない

 また他の問題として、アプリケーションが対応しているOSと、計算機に搭載されているOSが適合していないと、各開発元からのサポートが受けられなくなるという問題があります。

 OSやアプリケーションを含むソフトウェア類は無数のソフトウェア部品で構成され、それらが相互に通信しながら処理を進めています。すなわち、アプリケーションが対応しているOSと、計算機に搭載されているOSのバージョンが適合していると、通信処理が正しく行われていることが保障されます。そのため、処理に不整合が発生しても、それを開発元に伝えれば技術支援やバックフィックスなどの対応が行われます。

 ところがそれらのバージョンが適合していないと、ソフトウェア部品の通信処理に不整合が発生しても、それは保障範囲外になるため誰も対応しません。不整合はいつまでも解決されません。

Sandy Bridgeに搭載しているOSのバージョンを
アプリケーションに合わせてバージョンダウンする

 上記の問題を解決するためには、Sandy Bridgeに搭載するOSのバージョンをアプリケーションに合わせてバージョンダウンすることで、アプリケーションとOSのバージョンを適合させる必要があります。幸いにもSandy Bridgeは下位互換性を備えているため、RedHat6.0以前のOS (AVX非対応) すなわちRedHat5.5 (CentOS5.5) などを搭載できます。OSをバージョンダウンすると多くのアプリケーショに対応できます。

例外的にOSのバージョンダウンが効果を発揮する場合

 これから発売される2-socket 8-coreのSandy Bridgeを搭載した計算機の基本性能は、たとえAVX-256が利用できず、AVX-128を利用することになっても高い性能が期待できます。

 その理由は、コア数の増加 (8-core化)、クロック速度の向上、メモリチャンネル数の増加 (4-chanel化)、メモリ速度の向上 (1600MHz)、キャッシュメモリの高速化、コンパイラの高速化などです。これらの相乗効果により、AVX-128を利用していても、プロセッサ全体では1.2倍から2倍の性能向上が期待できます。

 バイナリーで提供されるアプリケーションでRedHat6.0以降への対応に時間がかかることが確定している物を使用される場合は例外的にOSのパージョンダウンが役に立ちます。

Sandy Bridgeに搭載しているOSを
バージョンダウンした場合の問題点

 しかしその反面、OSをバージョンダウンすると、AVXに対応できなくなります。そのためAVX-256は利用できなくなります。

 またSandy BridgeにRedHat6.0以前のOS (AVX非対応) を搭載すると、AVXに対応したアプリケーションが正常に動作しない可能性があります。もしアプリケーションが正常に動作したとしても、AVX-256を利用することができず代わりにAVX-128を利用するためアプリケーションは高速化しません。

 OSをバージョンダウンした場合は、Sandy BridgeをNehalem Microarchitectureとして利用することになります。そのため用途は限られたものになります。

Sandy Bridgeで全てのアプリケーションに対応するためには
2種類のOSを使い分ける必要がある

 以上のことから、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の動作環境を整備する必要があるのでしょうか。

Sandy BridgeはAVXに対応した
最新のOS (RedHat6.0以降) を搭載して利用する

 あと1年もすれば多くのアプリケーションがSandy Bridgeに対応します。当然それらのアプリケーションはRedHat6.0以降のOS (AVX対応) に対応します。

 Sandy Bridgeを使って確認したいことは、どのアプリケーションが何時からRedHat6.0以降のOSに対応し、いつからAVXにフル対応し、どれ位い性能が向上するかということです。これらの情報によってシステムの導入計画や運用計画を合理的に立案できます。

 数か月のうちにアプリケーションがRedHat6.0以降のOS (AVX対応) に対応するのであればRedHat6.0以降のOS (AVX対応) を搭載した計算機の導入をお勧めします。

Lipack HPLのテスト結果 (抜粋)

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年に一度の周期で更新される

 計算機のアーキテクチャは約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

 

1-socket 4-core Sandy Bridge Xeon E3-1280 3.5GHzが
Linpack HPLベンチにて94GFLOPSを達成
AVX (Advanced Vector Extension) の性能を発揮
(2011. 5. 31)

Sandy Bridge Microarchitectureの発表と製品展開

 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は浮動小数点演算の性能を2倍に高速化する
AVX (Advanced Vector Extension)命令セットを採用

 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から提供されています。

SPECfpベンチマークのAVXによる高速化は時間がかかる

 アプリケーションを含むシステム全体がAVXに最適化されないと本来の性能が得られないということを如実に示すベンチマーク結果が公開されています。Sandy BridgeによるSPECfpベンチマークです。Sandy Bridgeの動作環境を整えたにもかかわらず、SPECfpでは殆どのアプリケーションの性能が向上していませんでした。

 このことから、AVXは理論性能は高いが、実際のアプリケーションの性能向上は難いアーキテクチャだと結論付けそうになりました。

Linpack HPLベンチマークは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の処理効率はほぼ同じ
・ 並列処理の通信方法を変更しても処理効率はほぼ同じ

SPECfpベンチマークテストとLinpack HPLベンチマークテストの違いを考える

 Sandy BridgeはSPECfpベンチマークテストでは性能が出せませんでした。しかし、Linpack HPLベンチマークテストでは見事な性能が出ました。しかも単なるスループット性能だけでなく、並列処理でも性能が出ています。本来なSPECfpの中の幾つかのアプリケーションについては性能が出てほしいものです。しかし性能は出ていません。Linpack HPLとSPECfpでの性能の違いはどこから来るのでしょうか。

 仮説を立てるための材料は少ないのですが、この違いの理由を考えることは意味があります。なぜなら、あと半年もすれば "Core Microarchitecture" はEOLを迎え "Sandy Bridge Microarchitecture" しか選択肢が無くなるからです。

Linpack HPLベンチマークテストは性能を出しやすい

 Linpack HPLベンチマークはベンチマークテスト専用に開発されたプログラムです。そのためソースコードが簡潔でボトルネックの特定も容易です。開発環境の整備も小さな範囲で済みます。

 少し穿った見方をすると、Linpack HPLは広く注目されているベンチマークテストであり、Lipack HPLで高い性能が出ると社会的に大きなインパクトがあります。そのためLinpack HPLに関連した開発環境の整備は早い段階から進んでいる可能性があります。

SPECfpで性能を出すためには手間と時間がかかる

 Linpack HPLに対してSPECfpはベンチマークテストとしての目的と方法が全く異なります。Linpack HPLは本当にハードウェアの基本的な性能を確認するためのベンチマークテストであるのに対して、SPECfpはユーザが実際のアプリケーションを利用してシステムを利用する状態での厳密な性能評価を目指していますです。このためSPECfpで使用されているベンチマークテスト用のコードは広く利用されているアプリケーションが使用されています。さらにテスト方法も実際のユーザの環境を反映できるように厳しく決められています。

 SPECfpで使用されるアプリケーションは複雑かつ大規模なソフトウェアです。そのため開発環境の最適化だけでは高速化は難しく、アプリケーションの最適化も必要なようです。この両者を実現するためには多くの手間と長い時間がかかります。

 そのうえSPECfpはアプリケーションのソースコードの変更が認められていません。テスト中にアプリケーションのボトルネックを発見すると、それを開発元に伝え、開発元が改良を行い、正式なレビジョンアップに反映されるのを待たなければ利用できません。同様に開発環境についても製品化されたものを使用しなければなりません。

 この厳しさこそがSPECfpの真骨頂です。SPECfpは厳格なルールに則ってベンチマークが行われるため、計算機環境が正当に成熟するまでは性能が向上しない仕組みになっています。SPECfpは計算機システムの現実の性能を現実に評価できるベンチマークテストです。

 このような理由からSPECfpベンチマークテストではAVXの性能が出るようになるまでに時間がかかります。しかしこれこそが現実です。

先行指標となるLinpack HPL、現実を反映するSPECfp

 以上のことからわかることは、Linpack HPLで確認できたSandy Bridgeの性能は本物です。しかし、その性能が全てのアプリケーションに即座に反映されることはありません。

 Linpack HPLはハードウェアの性能を高い感度で測定するツールです。しかし現実のアプリケーションの実効性能は測定できません。Linpack HPLはハードウェア性能の先行指標です。

 SPECfpはハードウェアの性能に敏感に反応しません。しかし現実のアプリケーションの実効性能は正確に測定できます。SPECfpはハードウェアや開発環境ソフトウェアの全てを複合した場合の性能を確認するツールです。

 計算機の性能を評価するためにはLinpack HPLとSPECfpの両方を、その特性に注意したうえで利用する必要があります。

まとめ

 マイクロアーキテクチャは数年に一回のペースで世代交代を繰り返します。マイクロアーキテクチャが世代交代した直後でも、簡単なアプリケーションは性能が出ます。しかし、複雑なアプリケーションは性能が出ないことが多いようです。このことはLipack HPLとSPECfpの性能差が大きいことからも確認できることです。

 新しいアーキテクチャが発表されてから時間が経つに従い、アプリケーションを含むシステム全体の熟成が進み、複雑なアプリケーションの最適化が向上するため、複雑なアプリケーションの性能が理想値に近付きます。

 過去を振り返ると、現在では高い性能を発揮している "Core Microarchitecture" もマルチコアで高い並列性能を発揮するようになるまでにはかなりの時間がかかりました。新しい "Sandy Bridge Microarchitecture" についても同様の過程を辿ると考えられます。