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

PGI compiler TIPS
SSE/SSE2 最適化性能・OpenMP 性能
最適化・性能情報 > SSE 最適化・OpenMP 性能

 
PGI コンパイラの スカラ最適化並びにベクトル最適化において SSE/SSE2 (スカラ・ベクトル)インストラクションを使用しますが、この最適化レベルによって性能がどのように変化するかについて説明します。以下に、 SPECfp2000 の Fortran コードと NAS Parallel Benchmark 3.0 のプログラムを題材にした、各最適化レベルの性能を示しました。

性能測定に使用したシステムと使用コンパイラは、以下のとおりです。

  IBM eServer 325, dual 1.6Ghz Opteron
  PGI 5.1 コンパイラ



SPECfp2000 Fortran コードの SSE/SSE2 最適化性能の変化

SPECfp2000 の Fortran コードを利用した PGI 5.1 バージョンによる最適化性能の変化に関して、以下の表に纏めました。PGI コンパイラでは、SSE スカラ・インストラクションによる最適化とベクトル・インストラクションによる最適化方法があり、コンパイラのオプション -fastsse をつけるとこの両方の最適化が施されます。ここでは、スカラ/ベクトル最適化性能の程度を見極めるために、各最適化レベルでの性能を表示しています。性能が大幅に向上していく様子が見ることができます。 32-bit 演算よりも 64-bit 演算での最適化効果が大きいこともこの表から読み取れます。なお、2GB 以上のプログラムをコンパイルする際に必要な mcmodel=medium の場合は、インデックス計算の付加コストのため若干性能が低下します。なお、 PGI 5.2 以降では、内部手続き間のグローバル最適化機能 (IPA) が強化されたため、PGI 5.1 による性能よりも 10〜15% 程度性能が向上しています。

SPECfp2000 ベンチマークによる PGI 5.1性能

APPLU APSI FACEREC FMA3D GALGEL LUCAS MGRID SIXTRACK SWIM WUPWISE Geo Mean Speed-up
Scalar SSE
32-bit
252.5 409.4 243.3 279 200.7 210.4 218.4 259.7 418.5 151 269 100.00%
Vector SSE
32-bit
252.9 382.6 197.2 227.6 192.2 207.9 221.5 229.2 209.5 150.9 242.3 111.00%
Vector SSE
64-bit
228.8 295.5 132.6 209.1 161.8 206.4 192.2 225.1 199.2 135.1 197.9 135.90%
Vector SSE
64-bit
medium-memory
232.4 334.5 149.7 222.4 165.3 205 191.7 234 200.7 132.7 211.9 126.90%
 (測定値は時間(秒)を示します)
 
  • Scalar SSE 32-bit : 32-bit 版スカラ SSE/SSE2 インストラクションを使用した最適化 (-Mscalarsse)
  • Vector SSE 32-bit : 32-bit 版ベクトル SSE/SSE2 インストラクションを使用した最適化 (-Mvect=sse )
  • Vector SSE 64-bit : 64-bit 版ベクトル SSE/SSE2 インストラクションを使用した最適化 (-Mvect=sse )
  • Vector SSE 64-bit medium-memory : 64-bit 版メモリモデルが2GB以上の medium の時のベクトル SSE/SSE2 インストラクションを使用した最適化 (-Mvect=sse -memodel=medium)



NPB 3.0 による SSE/SSE2 最適化性能と OpenMP並列性能

NPB 3.0 ベンチマークを使用して Opteron 2CPU システムでの SSE/SSE2 最適化性能と OpenMP 並列性能のスケーラビリティを以下の表に示しました。特に、並列性能に関しては、AMD Opteron のメモリ・アーキテクチャの特長である、メモリと各 CPU 間が独立のパスによるメモリバンド幅を有効に利用し、従来の Intel(R) 系のチップセットでは出しえなかった SMP 並列性能が大幅に向上しています。 PGI コンパイラによる、低オーバーヘッドの並列コードにより、実アプリケーション・レベルで1CPU に較べて 2CPU では約 1.83 倍の性能が得られております。

OpenMP NPB 3.0 ベンチマークによる PGI 5.1性能 (Class=A)

BT CG FT LU MG SP Geo Mean Speed-up
X87-32 162.5 6.8 20.2 230 7.4 153.5 42.4 100.00%
SSE-32 155.1 6.9 15.2 227.8 7.2 139.2 39.4 107.60%
VSSE-32 159.2 7.4 15.2 226 7 144.1 39.9 106.20%
1 CPU VPSSE-32 159 7.4 15.5 223.3 7.1 141.3 40 105.90%
2 CPU VPSSE-32 81 4.1 8 151.5 3.7 73.8 21.8 1.83X
                                               (測定値は時間(秒)を示します)

  • x87-32 : 32-bit 版スカラ SSE/SSE2 最適化なし
  • SSE-32 : 32-bit 版ベクトル SSE/SSE2 インストラクションを使用した最適化 (-Mvect=sse )
  • VSSE-32 : 32-bit 版ベクトル SSE/SSE2 インストラクションを使用した最適化 (-Mvect=sse )
  • 1 CPU VPSSE-32 : ベクトル SSE/SSE2 インストラクションを使用した最適化+OpenMP 1cpu (-Mvect=sse -mp)
  • 2 CPU VPSSE-32 : ベクトル SSE/SSE2 インストラクションを使用した最適化+OpenMP 2cpu (-Mvect=sse -mp)

この画面トップへ

<< STREAM によるメモリバンド幅の性能比較 性能比較・評価のトップへ戻る >>




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

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