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に対するユニファイドバイナリ |



