ソフテック・トップページへ
ホーム 製品 セキュリティ・サービス HPCサービス ダウンロード 企業情報

PGI compiler TIPS
PGI & Pentium D デュアルコアの性能
最適化・性能情報 > Pentium D ベンチマーク
 
  

  Intel® デュアル Pentium® Dプロセッサ・システムでも
PGI コンパイラの高速性が実証される !!
 (2005年11月)

2005 年 11 月の時点で、Intel(R) Pentium(R) D や AMD OpteronTM, Athlon64X2等のデュアルコア・プロセッサが市場に出荷され早半年が過ぎました。つい近頃、Intel(R) Xeon(R) 7000番台のデュアルコア・プロセッサも発表され、来年以降はデュアルコア・プロセッサが台頭していくものと思われます。HPC 市場では、相対的に低クロック周波数で動作するAMDのOpteronプロセッサの性能が、インテル社のPentium(R)、Xeon(R) 等のプロセッサ性能よりも速いと言う定評がありますが、実装可能なメモリ性能まで含めたプロセッサ性能を比較した場合、両者はどのような位置関係にあるのかを見極めるために、以下に述べるベンチマーク試験を行いました。
プロセッサの性能を活かすのは、「コンパイラ」の役目であり、使用するコンパイラによって性能は異なります。PGIコンパイラは、AMD社のプロセッサ用コンパイラと言う定評がありますが、そもそもインテル社のX86系のプロセッサ用コンパイラとして育ってきたこともあり、インテル社のプロセッサに対しても十分な最適化能力を有することを以下で実証します。PGIコンパイラは、インテル社のプロセッサにも、AMD社のプロセッサにもそれぞれマイクロアーキテクチャに応じた最適化を行える、商用で唯一のコンパイラです。プロセッサによって、各社コンパイラの性能の違いがあることに関してはこちらをご覧ください
今回のベンチマーク性能値によると、PGIコンパイラは、インテル社の Pentium(R) D、Pentium(R) 4, Pentium(R) Xeon 等のプロセッサにおいても、非常に高速な性能値が得られることが分かりました。

ご参考 : デュアル Athlon64 X2 プロセッサ・システムをPGI コンパイラで評価する!

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) を使用して 1184MFLOPSMサイズデータ (256x128x128) では 1185MFLOPS と言う性能であり、2.8GHzと言うクロックのシステムにおいては、最高位のレベルの性能が記録されたことである。また、データサイズが大きくなっても、性能の低下が見られないことは特筆すべきことであろう。。ちなみに、他社ベンダーが公開している Pentium D 840 3.2GHz/2MB(L2) Dual-Core DDRII-533 FSB800 とインテルコンパイラ バージョン 9.0 との組合せでは、Sサイズデータ1004 MFLOPSMサイズデータ 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 プロセッサの最適なマルチスレッド・コードを生成できます。



この画面トップへ


※本ページに記載されている会社名、製品名は、各社の登録商標または商標です。

 ソフテックは、PGI 製品の公認正規代理店です

サイトマップ お問合せ
Copyright 2006 SofTek Systems Inc. All Rights Reserved.