PGI Compiler

x86およびx64プロセッサ対応のFortran/ C /C++コンパイラ


PGIコンパイラは、Portland Group社のLinux、MacOSおよびWindows向けの高性能Fortran/ C/ C++コンパイラです。Intel プロセッサ、AMDプロセッサのどちらにも対応、マルチコア並列環境にも最適化されており、32ビット版と64ビット版を同梱しています。高いベンチマーク性能で、地球物理学モデリング、機械工学、非線形動力学、計算化学および高エネルギー物理学などの研究分野で広く利用されています。リリース2010より、アクセラレータ対応製品(GPGPU対応)と非対応製品(x86コンパイラのみ)の価格が別々になりました。また、Workstation製品には、オンライン見積による割引もございます。



アプリケーションを高速化するために

アプリケーションを高速化する方法はいくつかありますが、高速な(そして高額な)ハードウェアを導入したり、人手でチューニングしたりするよりも、高機能のコンパイラで再度コンパイルし直す方が手っ取り早く(そして安く)良い結果を得られることがあります。高価なハードウェアを購入する前に一度、高機能コンパイラの導入を検討してみてはいかがでしょうか。
左図は、オープンソースの線形代数ライブラリBLASに含まれる行列とベクトルの積を計算するコード(DGEMV)を、GNU Fortran4.1.2とPGI Fortran7.0でコンパイルし、ベクトルの長さを変えながら、計算速度(FLOPS)を比較測定した結果です。PGIコンパイラが生成したコードは、GNUに比べ、データがキャッシュに乗っている場合には最大2.8倍、そうでない場合には最大1.2倍高速であるという結果が出ました。

GPGPUプログラミング

PGIコンパイラを使えば、GPGPUプログラミングも、CまたはFortran95のソースコードにディレクティブを追加するだけです。ディレクティブを無視すれば、通常のCまたはFortran95のソースコードになるので、CPUによる計算とGPUによる計算の比較も簡単にできます。また、ユニファイドバイナリ機能により、GPUがあればGPUで、GPUがなければCPUで計算するといった実行形式を作成できます。NVIDIA製BLASライブラリに対応しておりますので、Lapackライブラリを使うコードでは、ライブラリを入れ換えるだけでGPUによる計算が可能になります。64ビットLinux、64ビットMac OS、64ビットWindows上で利用可能です。

GPUによる姫野ベンチマークの実験
GPU (Tesla C1060)を使って、姫野ベンチマークを実験しました。オリジナルコードに「!$acc region」と「!$acc end region」のディレクティブを書き加えただけの版では、15.3GFLOPS、配列の構造を変えて細かいディレクティブを加えた版では20.5GFLOPSの性能が出ました。富士通研究所様が情報処理学会で発表した、CUDAプログラミングによる69.7GFLOPSと比べると、こちらの性能は0.28倍ですが、ディレクティブベースの簡単なプログラミングの成果としては、充分実用的な性能といえるのではないでしょうか。

製品仕様

言語仕様 Fortran95完全対応 Fortran2003部分対応
DEC Fortran拡張機能
C99完全対応
ANSI C++標準-EDG3.6 C++フロントエンド互換
32ビット版でも、64ビット整数と2GBを超えるファイルに対応
PGI CUDA Fortran extension(アクセラレータ対応ライセンスが必要
最適化 MMX / SSE / SSE2 / SSE3 / SSSE3 / SSE4a / ABM / AVX(対応CPUのみ)命令を使う高速ベクトル計算
IntelおよびAMD64ビットCPUに最適化されたコードを含むユニファイドバイナリを作成可能
ディレクティブにより一部分のユニファイドバイナリ化も可能
実行時プロファイリングによる最適化
Non Uniform Memory Access用最適化
マルチコアCPU用最適化
複数手続きにまたがる最適化
プリフェッチ(対応CPUのみ)
ライブラリ ACML4.1(LAPACK / BLAS / FFT)直列版およびOpenMP並列版
MPI(Linux版のみ)
並列処理 Open MP3.0
スレッドベースの自動並列化
CDKはMPIで最大256CPU(16、64、256の3種類のライセンス)、
クラスター構成によってはMPIとOpenMPの併用も可能
その他 PGDBGデバッガ付属
PGPROFプロファイラ付属
gcc / g77のオブジェクトとリンク可能
既知の問題点 拡張精度(80ビット)と4倍精度(128ビット)の浮動小数点数は扱えません。
対応OS Linux
 Red Hat Linux9以上/
 SUSE Linux Enterprise Server 9.0以上/
 SUSE 9.0以上/Red Hat Enterprise Linux 3以上/
 Fedora Core 4以上/Ubuntsu 8/
 一般的なカーネルリビジョン2.4以上、glibc2.3.2以上のLinux
MacOS
 MacOS X 10.4.9以上、Xcode 2.4.1以上(Intel CPUのみ)
32ビットWindows
 Windows XP/Windows Vista/Windows 7/
 Windows Server 2003/Windows Server 2008/
64ビットWindows
 Windowa XP Professional Edition/Windows Vista/
 Windows 7/Windows Server 2008 (x64)/
 Windows Server 2003 x64 Edition/

バージョン履歴

10.0追加機能: アクセラレータ正式対応/EDG 4.1規格C++/Fortran 2003拡張機能/AVX命令生成/RHEL 5、Fedora 11、SLES 11、SuSE 11.1、Ubuntu 9、Windows 7、Mac OS Snow Leopard対応
9.0追加機能: CUDA対応NVIDIA製アクセラレータによる計算(プレビュー版、64bit Linuxのみ)/Fortran2003の拡張機能/C/C++のOpenMP 3.0完全対応/Cの「_m128」データ型/Intel Core i7 CPU用最適化/AMD Istanbul(6 core Opteron)用最適化/PGDBGデバッガのユーザインターフェース改良/PGPROFプロファイラの改良/RHEL 5.3、Fedora 11、SuSE 11.1、SELS 11、Ubuntu 9.04対応
8.0追加機能: AMD Shanghai CPU用最適化/CUDA対応NVIDIA製アクセラレータによる計算(β版)/Fedora Core 8、9、SuSE10.3、11.0、Ubuntsu 8対応/OpenMP 3.0/PGPROF、PGDBGの改良/スレッドセーフなSTL/ループ最適化の改良/スカラープリフェッチの改良
7.2追加機能: Red Hat Enterprise Linux 5.0対応/Intel Penryn(45mm Core2)CPU用最適化/ACML4.1ライブラリ/Compaq Visual Fortranとの互換性向上/OpenMPの性能向上/Fortranの自動変数の生成、消滅の速度向上/大規模メモリでのNUMA/Thread Local Storage/一般的な性能向上
7.1追加機能: MacOSX(Intel CPUのみ)正式対応/Fedora Core7、SuSE 10.3対応/Barcelona、Core2用のより強力な最適化/OpenMP並列度無制限(ただし、プロファイラとデバッガは64並列まで)/C++のオーバーヘッドが少ない例外処理/メモリ割当の改良/より複雑なループのSSEベクトル化(間接参照、精度拡張、FMAX、FMIN、DMAX、DMIN)/Fortranライブラリの追加(コマンドライン、環境変数、日時の取得)/Linux用のServer、Workstation製品にもMPIライブラリを添付/一般的な性能向上
7.0追加機能: Quad-core Operation(コード名 Barcelona)用、Core2用最適化/Red Hat Enterprise Linux 4.0、Fedora Core 6、SuSE 10.2、Window Vista等のOSに対応/WindowsのUNIX環境のサブシステム(Subsystem for Unix-baseApplications、Windows Service for Unix)対応/3種類以上のCPUに対するユニファイドバイナリ
カタログをダウンロード(PDF 342KB)
開発元:The Portland Group, Inc.