 |
Pentium® D システムのハードウェア仕様、OS仕様 |
|
|
インテル(R) Dual Core プロセッサ |
| システム名 |
EPSON Endeavor Pro3300 (18万円) |
| プロセッサ |
Pentium® D 820 |
| Clock |
2.8 GHz |
| L2 cache |
1MB + 1MB |
| 使用メモリ(最大帯域) |
DDR2-667 (10.6GB/s) 1GB x 2 枚 |
| FSB (MHz)(最大帯域) |
800 (6.4GB/s) |
| チップセット |
インテル(R) 955X |
| 使用 OS |
SUSE 10.0 (kernel 2.6.13) |
| 64ビット環境 |
EM64T |
| 使用コンパイラ |
PGI 6.0 |
|
- プロセッサは、現在の製品ラインで最もクロックが低い 2.8GHz の 1M キャッシュを備えたIntel(R) Pentium(R) D を使用した。
- チップセットは、サーバ対応型のインテル(R) 955X を使用した。コンシューマ向けの 945X との大きな違いは、955X の方がインテル(R)
メモリ・パイプライン・テクノロジを実装している違いである。このテクノロジは、メモリ・パイプラインの強化により各メモリ・チャネルの利用率を高め、プロセッサとシステム・メモリ間のデータ転送を高速化する機能である。HPC
用途では、955X の方が良い。
- FSB(フロント・サイド・バス)は 800MHz であり、CPU と チップセット間のバス帯域は、最大
6.4GB/s となる。
- メモリに関しては、2005年11月現在、市場で最も高速な DDR2-667(PC2-5300) CL5 のチップを使用した。以前リポートした Athlon64x2 の性能評価に使用した機材では、バルク製品の性能が遅いメモリを使用して評価したが、今回は、最も高速なメモリを使用した。これは、メモリ性能が如何にシステム性能に影響するかを検証するためでもある。メモリはデュアルチャネル対応であり、最大メモリ帯域は、10.6GB/s
と言う高速性を有する。AMD 社のメモリテクノロジは PC3200 (6.4GB/s) が最大であるため、インテル社の方がこの点では優れている。但し、このシステムは
メモリ-チップセット間の帯域 10.6GB/s に対して、チップセット-CPU 間は FSB
800MHz であるため、6.4GB/s と言うバランスの悪い形となっている。律速となるのは、FSB
800MHz であるが、ただ、 メモリ-チップセット間のの高速性と言う「余裕」は、HPC用途の実行性能に良い影響を与える。
- プログラムの実行性能は、プロセッサのよし悪しよりも、メモリのデータ転送性能に大きく依存するため、プロセッサの選択に悩むより、実装されているメモリモジュールの性能の見極めをしっかり行った方が良い。PCを購入する際には、購入ベンダーに問い合わせることをお勧めする。「購入プロセッサのクロックの選択で悩むより、しっかりしたメモリを実装した製品を選択した方が、全体性能に大きく貢献する」。同じ予算で考えた場合、プロセッサ製品ラインアップの高価な高クロック製品にお金をつぎ込むより、高速なメモリモジュールの方を購入する方が賢い購入法である。以下のベンチマーク結果でご理解いただけるかと思う。
- OS は 2005年11月現在、最新の SUSE 10.0 を使用した。Kernel 2.6.13 レベルのものである。
- コンパイラは、インテル(R) プロセッサに対しても十分な最適化が可能な PGI
コンパイラを使用した。
|
(注意) 性能試験、ベンチマーク性能並びにその評価は、使用するコンピュータ・システム並びに搭載コンポーネントにより変化します。ここで表示している性能値は、PGI
社並びに弊社が特定のシステムにおいて測定した性能値を表示したものであり、システムのハードウェア・ソフトウェア構成が異なる場合は、実際の性能値が異なる場合があります。
|
 |
HPC 用途では、実効メモリバンド幅とメモリ・アーキテクチャが重要 |
|
|
HPC分野のアプリケーションは、配列(ベクトルデータ)計算で代表されるようにメモリのアクセスを多用する。アプリケーションの性能の決め手は、もちろんプロセッサの能力であることは確かだが、プロセッサへのデータ供給が滞ると性能は大きく低下する。その意味で、メモリの実効バンド幅は、性能を左右する最も重要な指標である。もちろん、プロセッサの性能とメモリのデータ供給性能の間を埋めるのは、L2
キャッシュではあるが、そのサイズによって性能に影響するものの、1GB、2GB
と言った様な解析規模の大きなデータ配列を扱う計算の場合は、実際のメモリデータのバーストレート(実効バンド幅)がアプリケーションの性能を決めることになる。特に、デュアルコアの場合は特に重要である(遅いメモリほど並列効果が出にくい)。.......
この詳細は、「低価格のデュアル Athlon64 X2 プロセッサ・システムをPGI コンパイラで評価する!」に記載している。
|
 |
PGI コンパイラ による STREAM ベンチマークでの Pentium® D の実効メモリバンド幅 |
|
|
STREAM ベンチマークは、非常に単純な演算によるメモリのロード/ストアの性能を測定するベンチマークである。プロセッサのキャッシュの効果を反映させないように、非常に大きな配列間のロード/ストアの性能を測定できるようにベンチマークを行うものである。このベンチマークの性能は、主に、プロセッサの実メモリバンド幅を測定する目的と、コンパイラによるメモリ・ロード/ストア廻りの最適なコード生成が行われているかどうかを見るための重要な指標となる。実メモリバンド幅の性能は、実アプリケーションのデータのアクセス性能の基本となるため、性能全体を左右する重要な指標である。
ここでは、ベンチマークに使用したシステムである Intel(R) Pentium(R) D システムの実際のメモリバンド幅を以下に示す。なお、このシステムのメモリモジュールは、現在、市場で最も高速な DDR2-667(PC2-5300)
CL5 のモジュールをしており、非常に良いメモリバンド幅を示すことが期待される。実際以下のように、PGI コンパイラが生成した最適化コードを使用すると、triad(加・乗算)
演算において、 4.86GB/sec を示している。現在、1CPU STREAM ベンチマークで記録されている性能の中で最高の部類に入る。もちろん、これは、PGI
コンパイラによるベクトル最適化の効果も相まって記録した性能である。本システムの の最大メモリバンド幅は、FSB
800HHz のため6.4GB/sec であり、その76% 程度の実効値を示している。以下の実測ログは、PGI
コンパイラのメモリ最適化並びにベクトル最適化を行った場合の結果である。
|
【PGIのベクトル最適化を Enable にした場合】
$ pgf90 -fastsse -O3 -Mprefetch=distance:8,nta -Minfo stream.f -DUNDERSCORE mysecond.c
$ a.out
----------------------------------------------
Double precision appears to have 16 digits of accuracy
Assuming 8 bytes per DOUBLE PRECISION word
----------------------------------------------
----------------------------------------------
STREAM Version $Revision: 5.6 $
----------------------------------------------
Array size = 9000000
Offset = 0
The total memory requirement is 205 MB
You are running each test 10 times
--
The *best* time for each test is used
*EXCLUDING* the first and last iterations
----------------------------------------------
----------------------------------------------
Printing one line per active thread....
----------------------------------------------------
Your clock granularity/precision appears to be 1 microseconds
----------------------------------------------------
Function Rate (MB/s) Avg time Min time Max time
Copy: 4590.2096 0.0314 0.0314 0.0314
Scale: 4539.4265 0.0318 0.0317 0.0319
Add: 4887.4377 0.0442 0.0442 0.0442
Triad: 4863.1178 0.0444 0.0444 0.0445
----------------------------------------------------
Solution Validates!
----------------------------------------------------
|
|
公開されている STREAM ベンチマーク結果では、常に最高の性能値が記録されているため、この性能にはコンパイラによるループ内のベクトル化によるSSE、プリフェッチ(メモリアクセス)最適化の効果も含まれている。すなわち、コンパイラの最適化能力も含めた性能であるといえる。しかし、一般的なプログラム動作において、本来の実効的なメモリアクセス性能を把握するためには、このベクトル最適化を
disable にして評価することも重要である。こちらの性能の方が、多くの場合性能を支配する指標となる。(一般的には、コンパイラオプションを
-O2 として、ベクトル最適化を行わないコードを生成して測定する)
この場合、以下のように PGI コンパイラが生成したコードを使用すると、triad(加・乗算)
演算において、 3.58GB/sec を示している。この性能も現段階では、最高の部類に入ると言えよう。特に、この性能はメモリ・アクセスのネイティブな性能であり、実行性能の基盤的な性能となる意味で重要である。こうして見ると、マルチプロセッサではない、単体 1-way のシステムでは、AMD 社のメモリテクノロジより、インテル社のチップセットを含めたメモリテクノロジの方が一歩先進的であるということが言える。但し、SMP
システムのような共有メモリのマルチプロセッサ・システムでは、AMD社の NUMA
アーキテクチャの方が優れている。
|
【PGIのベクトル最適化を Disable にした場合、普通の場合のメモリアクセス性能】
$ pgf90 -O2 -Minfo stream.f -DUNDERSCORE mysecond.c
$ a.out
----------------------------------------------
Double precision appears to have 16 digits of accuracy
Assuming 8 bytes per DOUBLE PRECISION word
----------------------------------------------
----------------------------------------------
STREAM Version $Revision: 5.6 $
----------------------------------------------
Array size = 9000000
Offset = 0
The total memory requirement is 205 MB
You are running each test 10 times
--
The *best* time for each test is used
*EXCLUDING* the first and last iterations
----------------------------------------------
----------------------------------------------
Printing one line per active thread....
----------------------------------------------------
Your clock granularity/precision appears to be 1 microseconds
----------------------------------------------------
Function Rate (MB/s) Avg time Min time Max time
Copy: 4568.2329 0.0315 0.0315 0.0315
Scale: 3149.0575 0.0458 0.0457 0.0458
Add: 3568.0740 0.0606 0.0605 0.0608
Triad: 3583.6415 0.0603 0.0603 0.0603
----------------------------------------------------
Solution Validates!
----------------------------------------------------
|
 |
PGI コンパイラ による姫野ベンチマークでの Pentium® D の性能はトップクラス! |
|
|
姫野ベンチマーク (F77 code) は、カーネル・ベンチマークの一つではあるが、演算密度が非常に高い特性に対し演算器の多重利用性と高いメモリバンド幅を備えることによって、実プログラムが達成できる最大の実効性能値を得ることができる。その意味で、これにはコンパイラの能力にも依存する。また、これは異なるプラットフォームにおける性能比較、あるいはプラットフォームの性能同定において有効である。
以下の表に、PGI 6.0 コンパイラと Pentium(R) D 2.8GHz を使用した性能結果を示す。ここで特筆すべき性能は、F90 コードの Sサイズデータ (128x64x64) を使用して 1184MFLOPS、Mサイズデータ (256x128x128) では 1185MFLOPS と言う性能であり、2.8GHzと言うクロックのシステムにおいては、最高位のレベルの性能が記録されたことである。また、データサイズが大きくなっても、性能の低下が見られないことは特筆すべきことであろう。。ちなみに、他社ベンダーが公開している Pentium D 840 3.2GHz/2MB(L2) Dual-Core DDRII-533 FSB800 とインテルコンパイラ バージョン 9.0 との組合せでは、Sサイズデータで 1004 MFLOPS、Mサイズデータで 894MFLOPS と言う数字が公開されている。遅いクロックのシステムの方が速いと言う結果となっている。なお、
Pentium(R) D 840での測定結果は、株式会社エッチ・アイ・ティー様の公開ページから引用させていただいた。
以下の表から分かることは、プロセッサ、メモリアーキテクチャの違いによる性能差が出ていることは明らかであるが、PGI
コンパイラと Pentium(R) D 820 の性能が大きく伸びていることが理解されるかと思う。使用コンパイラの違いにより、このような性能差が露呈する一例である。この性能差は、ベクトル最適化並びにキャッシュ利用に関するコンパイラの最適化能力の差に依るものであると思われる。また、Athlon64X2 性能と較べてもPentium(R) D 820 の方が性能が大きく伸びているのは、高速なメモリ性能による効果であると思われる。
PGI コンパイラとインテルコンパイラの性能比較
|
Dual Core プロセッサ 1コア性能 |
| プロセッサ |
Athlon64 X2 |
Pentium®D 820 |
Pentium®D 840 |
| Clock |
2.2 GHz |
2.8 GHz |
3.2 GHz |
| L2 cache |
1MB + 1MB |
1MB + 1MB |
1MB + 1MB |
| 使用メモリ |
PC3200 (6.4GB/s) |
DDR2-667 (10.6GB/s) |
DDR2-533 (8.5GB/s) |
| FSB (MHz)、最大帯域 |
- |
800 (6.4GB/s) |
800 (6.4GB/s) |
| 使用 OS |
SUSE 10.0(2.6.13) |
SUSE 10.0(2.6.13) |
- |
| 64ビット環境 |
AMD64 |
EM64T |
EM64T |
| 使用コンパイラ |
PGI 6.0 |
PGI 6.0 |
インテル 9.0 |
| F77 姫野ベンチ S サイズ(MFLOPS) |
1306 |
1539 |
- |
| F77 姫野ベンチ M サイズ(MFLOPS) |
1291 |
1494 |
- |
| F77 姫野ベンチ L サイズ(MFLOPS) |
測定できず |
1498 |
- |
| F90 姫野ベンチ S サイズ(MFLOPS) |
1066 |
1184 |
1004 |
| F90 姫野ベンチ M サイズ(MFLOPS) |
1007 |
1185 |
894 |
| F90 姫野ベンチ L サイズ(MFLOPS) |
測定できず |
1199 |
830 |
| S->M サイズでの性能低下率 |
6 % |
0% |
11 % |
| 実測データ参考 |
弊社測定 |
エッチ・アイ・ティー様
の公開ページ |
使用コンパイラ : PGI 6.0
使用コンパイラ・オプション : pgf90 -fastsse -O3 -Mprefetch=distance:8,nta
-Minfo -Mnontemporal
(注意) 性能試験、ベンチマーク性能並びにその評価は、使用するコンピュータ・システム並びに搭載コンポーネントにより変化します。ここで表示している性能値は、PGI
社並びに弊社が特定のシステムにおいて測定した性能値を表示したものであり、システムのハードウェア・ソフトウェア構成が異なる場合は、実際の性能値が異なる場合があります。
|
|
姫野ベンチマークにおけるデュアルコア Pentium(R) D の並列性能
|
|
姫野ベンチマーク (F90 code) を Pentium(R) D デュアルコアプロセッサ上で並列実行した場合の性能結果を以下に示す。前回リポートした
Athlon64 X2 の性能評価においては、メモリ帯域幅の必要な並列型の姫野ベンチマークは、良い結果が出なかった。これは、絶対的なメモリ帯域が、インテルのメモリテクノロジに比べ不足していることによる理由からと思われるが、Pentium(R)
D では、上述の STREAM ベンチマークの結果から見ても、Athlon64 X2よりも十分な実効メモリ帯域を有する。これが、姫野ベンチマークのメモリ・インテンシブな処理にも十分耐えうることを以下の性能結果から理解できる。性能の良いメモリを搭載したシステムは、総じて並列処理性能が良いということが言える。
以下の表には、株式会社エッチ・アイ・ティー様の公開ページから引用したインテル・コンパイラによる性能値も示した。使用コンパイラの違いにより、性能が大きく異なっていることが理解できる。今回使用した
2.8GHz のシステムが 3.2GHz のシステムより性能が良い結果となり、クロックの差を跳ね返し、PGI コンパイラの能力でより良い性能が現れているのが分かる。
姫野ベンチマーク(F90コード)並列モジュール
PGI コンパイラとインテルコンパイラの性能比較
|
サイズ |
並列モデル |
コンパイラ |
Clock |
himenoBMTxp |
実測データ参考 |
| 1 CPU (MFLOPS) |
| 1 コア |
2 コア |
Pentium® D 820 2MB (L2)
Dual-Core DDRII-667 FSB800 |
S |
OpenMP |
PGI® 6.0 |
2.8GHz |
1323 |
1927 |
弊社測定 |
Pentium® D 840 2MB (L2)
Dual-Core DDRII-533 FSB800 |
S |
OpenMP |
Intel® 9.0 |
3.2GHz |
1004 |
1782 |
エッチ・アイ・ティー様
の公開ページ |
Pentium® D 820 2MB (L2)
Dual-Core DDRII-667 FSB800 |
S |
MPI
(F77) |
PGI® 6.0 |
2.8GHz |
1518 |
1827 |
弊社測定 |
Pentium® D 840 2MB (L2)
Dual-Core DDRII-533 FSB800 |
S |
MPI |
Intel® 9.0 |
3.2GHz |
1030 |
1795 |
エッチ・アイ・ティー様
の公開ページ |
Pentium® D 820 2MB (L2)
Dual-Core DDRII-667 FSB800 |
M |
OpenMP |
PGI® 6.0 |
2.8GHz |
1280 |
1830 |
弊社測定 |
Pentium® D 820 2MB (L2)
Dual-Core DDRII-667 FSB800 |
M |
MPI
(F77) |
PGI® 6.0 |
2.8GHz |
1488 |
1933 |
弊社測定 |
Pentium® D 840 2MB (L2)
Dual-Core DDRII-533 FSB800 |
M |
- |
Intel® 9.0 |
3.2GHz |
894 |
- |
エッチ・アイ・ティー様
の公開ページ |
Pentium® D 820 2MB (L2)
Dual-Core DDRII-667 FSB800 |
L |
OpenMP |
PGI® 6.0 |
2.8GHz |
1295 |
1833 |
弊社測定 |
Pentium® D 820 2MB (L2)
Dual-Core DDRII-667 FSB800 |
L |
MPI
(F77) |
PGI® 6.0 |
2.8GHz |
1481 |
1921 |
弊社測定 |
Pentium® D 840 2MB (L2)
Dual-Core DDRII-533 FSB800 |
L |
- |
Intel® 9.0 |
3.2GHz |
830 |
- |
エッチ・アイ・ティー様
の公開ページ |
|
(注意) 性能試験、ベンチマーク性能並びにその評価は、使用するコンピュータ・システム並びに搭載コンポーネントにより変化します。ここで表示している性能値は、PGI
社並びに弊社が特定のシステムにおいて測定した性能値を表示したものであり、システムのハードウェア・ソフトウェア構成が異なる場合は、実際の性能値が異なる場合があります。
|
 |
PGI コンパイラ による Pentium® D 上でのマルチスレッド並列性能も良好! |
|
|
Pentium(R) D のデュアルコア環境における 2 並列性能の評価のために、NAS Parallel Benchmark 3.2 の OpenMP ベンチマークの結果を以下に提示する。NPB ベンチマークの詳細については、同志社大学の三木研究室のページに詳細に記述されておりますので、こちらをご覧ください。以下の表では、計算のデータサイズを A, B について測定した結果を表示している。1スレッドの絶対性能も低価格なシステムでありながら、非常に良い数値を示している。
1スレッドと2スレッド計算での性能比(並列化効率)を各サイズ毎に示しているが、プログラムのメモリアクセス性の特性によって、効率が異なる。各プログラムの特性を考慮した場合、デュアルコアのアーキテクチャにおいては、ほぼ妥当な並列化効率と言える。
使用コンパイラ : PGI 6.0
使用コンパイラ・オプション : pgf95 -fastsse -Mipa=fast -mp -Minfo
関連TIPS情報
「PGI コンパイラの並列化のためのオプション」
Pentium®D 820 (2.8GHz, 2Mcache) の PGI 6.0 による並列性能
| NPB 3.2-OpenMP |
BT |
CG |
EP |
FT |
LU-hyper |
MG |
SP |
| SIZE (A) |
64x64x64 |
14000 |
536870912 |
256x256x128 |
64x64x64 |
256x256x256 |
64x64x64 |
| 1 thread (Mop/s) |
1210 |
496 |
12.9 |
769 |
701 |
942 |
890 |
| 2 thread (Mop/s) |
2211 |
789 |
25.7 |
1382 |
1174 |
1253 |
1301 |
| 並列効率 |
1.82 |
1.59 |
2.00 |
1.80 |
1.67 |
1.33 |
1.46 |
|
|
|
|
|
|
|
|
| SIZE (B) |
102x102x102 |
75000 |
2147483648 |
N/A |
102x102x102 |
256x256x256 |
102x102x102 |
| 1 thread (Mop/s) |
1178 |
115 |
12.9 |
711 |
651 |
1018 |
832 |
| 2 thread (Mop/s) |
2130 |
438 |
5.71 |
1253 |
1042 |
1345 |
1204 |
| 並列効率 |
1.81 |
3.80 |
2.00 |
1.76 |
1.60 |
1.32 |
1.44 |
※ BT、SP は、並列プロセッサ数が N2 で行うべきものであるが、ここではあえて 2 スレッドで計算
|
PGI コンパイラは、NUMA/Dual Core の AMD プロセッサだけではなく、インテル社のデュアルコアPentium® D プロセッサの最適なマルチスレッド・コードを生成できます。
|