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



PGI コンパイラ製品の購入をご検討の方は、こちらからお問い合わせください



PGI compiler TIPS
PGI TIPS/FAQ インデックス
技術情報・TIPS > TIPS Index


PGI コンパイラ カテゴリ別インデックス

※本画面とは別に、PGI FAQ の画面がございます。FAQの詳細インデックスをご覧になりたい場合は、こちらのページへどうぞ。また、サイト内検索は、以下をご利用ください。

Google softek.co.jp


 ■ PGI社 ユーザ・フォーラム・サイト

PGI User Forum (英語)

PGI コンパイラに関するユーザによるフォーラムサイトです。



 ■ PGI コンパイラに関する情報、動作環境等

PGI コンパイラ最新バージョン情報

最新のバージョンの情報を説明しています。

PGI 製品がサポートするプロセッサの種類

32 ビット / 64 ビットプロセッサを含む PGI コンパイラ製品がサポートするプロセッサの種別とその利用可能なハードウェア機能について説明しています。

PGI 製品がサポートする Linux OS の種類と Linux のバージョンの調べ方

PGI 製品がサポートする OS の種別とその OS 上で利用可能な機能、システム・ライブラリのバージョン等を纏めています。

 

 ■ インストール時の注意、トラブル対策

インストール時の注意とトラブル対策に関するFAQ総合インデックスへ

インストール時の留意点、問題への対策法等を FAQ として纏めています。

新しいバージョンのインストールの方法

現在、お持ちのコンパイラバージョンから新しいバージョンに変更(あるいは、追加)する際の方法について説明します。

新しいバージョンと旧バージョンを切り替えて利用する方法

PGIコンパイラを使用する際の環境変数の設定内容について

SUSE 10.0等の Linux 上で旧バージョン PGI 5.1 をインストールする方法

SUSE 10.0等の Linux 上で旧バージョン PGI 5.2 をインストールする方法

PGI 6.1以降のコンパイラを OpenSUSE10.0/10.1/10.2 上でインストールしたいのですが、この distribution には GNU のFortran パッケージが含まれていません。これをインストールする方法がありますか

PGI 6.0/6.1 を Fedora Core 4 (64bit) 上でインストールしたいのですが、この distribution では 32bit 互換の GNU g77 がデフォルトでインストールされません。これをインストールする方法がありますか

PGI コンパイラをインストールしようとするシステムには、gcc、g77 など GNU コンパイラを先にインストールしている必要がありますか

SUSE 10.2、Fedora Core 6等(glibc 2.5以降)のLinux上で、PGI 6.1 バージョンをインストールできません。正しくインストールする方法を教えてください(

SUSE 10.2、Fedora Core 6等(glibc 2.5以降)のLinux上で、PGI 6.2 バージョンをインストールできません。正しくインストールする方法を教えてください(

 

 ■ ライセンス(マネージャ) に関する情報

PGI のライセンスのセット、Flexlmマネージャの問題等のFAQの総合インデックスへ

コンパイラが使用できない、急に使用できなくなる等のライセンスマネージャの問題に対する対処法を詳細に説明しています。

PGI コンパイラのライセンスキーの取得、変更、取消し等の方法について

PGIのライセンスの取得等の方法を詳細に説明しております。

PGI Server ライセンスの購入後、各マシン上でのライセンスファイルの設定の仕方

PGI Server ライセンスは、ネットワーク上の任意のマシン上で使用可能なフローティング・ライセンスです。基本的に任意のマシンにPGIコンパイラをインストールすることができますが、各マシン上でのライセンスファイルの設定の仕方を説明します。

PGI Server/CDKライセンスでの FLEXlm リダンダント(冗長)ライセンスサーバの設定の方法を教えてください

FLEXlm ライセンス管理マネージャの動作メカニズムと license.dat の関係を教えてください

PGI Server ライセンス-- 32bitマシン、64bitマシン混在時の実行環境(環境変数)の設定例

 

 ■ Compile/Link/実行時の問題等対策

Compile/Link/実行に関するFAQの総合インデックスへ

PGIのコンパイル、リンク、実行時に生じる問題等の FAQ

生成された実行モジュールにリンクされているダイナミックライブラリを知る

PGI で生成された実行モジュール(a.out) は、全て実行に必要なライブラリを含めた「静的」な実行形式では生成されていません。いわゆる、ダイナミックな共有ライブラリを使用する形式になっています。ldd コマンドで調べます。

静的(スタティック)ライブラリをリンクした実行モジュールの作成方法

PGI で生成された実行モジュール(a.out) は、全て実行に必要なライブラリを含めた「静的」な実行形式では生成されていません。いわゆる、ダイナミックな共有ライブラリを使用する形式になっています。

コンパイラをインストールしたマシン以外で実行モジュールを動かす方法

PGI コンパイラをインストールしたマシン以外のシステムで、実行モジュールを動作させたい場合の方法を4種の方法で説明しています。

ランタイム・ライブラリの種類と基礎知識

ランタイムライブラリの形態、リンク時における組み込む順位、静的リンク方法等を説明しています。

PGI 6.0 他のマシンで実行モジュールを動かすためのランタイム・ライブラリ

PGI 6.0 から他のマシンで実行モジュールを動かすための PGI Run-time ライブラリを正規に用意しました。$PGI/linux86/6.0/REDIST 配下の ライブラリファイルを他のシステムへコピーすることにより、他のマシンにおいても実行モジュールを動作させることが可能です。

-Bstatic を指定すると、未解決なライブラリルーチンが存在し、モジュールが生成できない問題

pgCC (C++) を使用して、デフォルトの共有ライブラリをリンクして実行モジュールは問題なく作成できるが、静的リンク -Bstatic を指定すると、リンク時に 「未解決な参照ルーチン」 が存在すると言う形でエラーになる場合の対処。

FORTRN77 3F関数 に関して PGI 提供関数ではなく、ネイティブな G77 3F 関数のライブラリをリンクする

PGI のデフォルトの 3F 関数を使用せずに、Linux システムが提供している g77 の 3F 関数をリンクしたいと言う要求に対する対処例 。

高度なテクニック : リンカ (ld) を直接操る方法

一部のランタイムライブラリを静的にリンクする方法を述べています。

Fortranプログラムが何らかの理由(例えばエラーや人為的に終了させるなど)で途中でストップしたとき、その時点までの結果がファイルに書き出されるようにするにはどうすればよいのでしょうか?

Intel Fortran、Compaq Fortran のような「環境変数」により、ユニット機番とファイル名を連結する方法について

開発中のプログラムが突然、segmentation fault で終了します。どこの部分で終了したか調べる方法はありますか?

デフォルトのコンパイラ・バージョンではなく、旧バージョンのコンパイラを利用する方法はありますか?

PGI 6.1 の PGDBG/PGPROF を使用する際、Java Runtime Environment が 1.5.0_04 以上を必要とされると言うメッセージが出ます。

PGI 6.1 をインストールし、コンパイル後実行した際に、 GLIBC_2.2.5 not defined と言うエラーが生じます。この対処法を教えてください

 

■ OSに依存したトラブルの対策

SUSE Linux 9.x 上で、システムリブート時の FLEXlm マネージャの起動失敗への対策(システム再起動後、コンパイラが使えない)

SUSE Linux のブート時に起動するソフトウェアのランレベルを設定するユーティリティ chkconfig に対応した INIT INFO 情報を lmgrd.rc ファイルの中に設定していないために引き起こる問題です。

64ビット Opteron マシンの Linux OS として Fedora Core 3 を使用しましたが、PGI 5.1/5.2 は動作しません。回避方法を教えてください。

PGI 5.1/5.2は正式に Fedora Core 3 をサポートしておりませんが、動作させるための手順を説明します。

Fedora Core 4 等においてデフォルトで SELinux (セキュアLinux) が動作しているシステムで、PGI ユーティリティの pgdbg、pgprof が起動時に Java のエラーで落ちます

RedHat Enterprise 4 上で、PGI ユーティリティの pgdbg、pgprof を起動する際に libXp.so.6 がオープンできないと言うエラーで落ちます

SUSE 10.0 (64bit) 上で PGI 6.0-8 を使用しています。コンパイルオプションに -Mipa を使用すると、リンク時にエラーが生じます。この対処法を教えてください

 

 ■ コンパイル・オプション、ツールの利用

PGI コンパイラのコマンド名、利用法、オプション一覧

PGI の F77, F95, HPF, C, C++ に共通な コンパイラ・オプション を一覧としてまとめました。オプションの意味をクイックに調べたい時に有用です。

最適な性能を得るためによく使うコンパイル・オプション

PGI の F77, F95, HPF, C, C++ のコンパイラを使用する際に、性能を最大限最適化するためのオプション(複数のオプションを組み合わせた「セット・オプション」があります。

コンパイルの最適化、並列化の情報を得るためのオプション

PGI の F77, F95, HPF, C, C++ のコンパイラを使用する際に、コンパイラのメッセージ、情報を得るための基本的なオプションを説明します。

ソースプログラムとその生成アセンブラのリスティングを対応付けて出力する

ソースプログラムのリスティング・ファイルを作成する

コンパイラコマンドで指定したコンパイル・オプションの意味を知る

PGI コンパイラの内部手続き(コード生成、アセンブラ、リンケージ)の詳細オプションを見る

リンク時に有用なオプション

PGI の F77, F95, HPF, C, C++ のコンパイラを使用してプログラムを開発する際に、リンク時の有用なオプションを説明します。

動的な shared library を含まないスタティックな実行モジュールを作成する

実行モジュールの形式は、システム的に共通な shared library は動的なものとしてリンクされ、実行時に必要なライブラリを読み込んで実行する形式となっています。これを静的なモジュールとして生成する方法を説明します。

PGI コンパイラによるリンク操作の裏技

PGI コンパイラで静的リンク時の問題の対処法や、ライブラリのリンク方法の特殊な例を説明してします 。リンカ ld コマンドを直接操る方法についても説明しています。

32bit Linux で 1GB を越えるメモリを使用する Fortran プログラムを実行したい

32bit Linux OS では、一般に、使用可能なメモリ空間の上限は 2GBですが、実際のデフォルトでは 1GB までのユーザ・メモリ空間を利用できる実行モジュールしか作成できません。これを回避します。

リンケージ・マップを出力する

異なるCPU 用に最適化したモジュールの作成(クロスコンパイル方法)

異なる CPU ターゲットでのクロスコンパイルを行う際のオプションを説明しています。

AMD64 と EM64T のコンパイラの内部最適化方法は異なるか?

インテルのCPUでもAMDのCPUでも、それぞれの特性に合わせた最適化を行っていることの実証

AMD64 と EM64T 間の PGI Unified Binaries

インテルのCPUでもAMDのCPUでも、最適な性能を提供する Unified Binaries

プログラムを開発する際によく使用するコンパイル・オプション

PGI の F77, F95, HPF, C, C++ のコンパイラを使用してプログラムを開発する際に、有用なオプションを示します。

実行時に配列境界のチェック (Bounds check) を行う

実行時に配列の境界チェックを有効にするようにオブジェクトを生成するためのものです。プログラムの配列境界の妥当性を確認するデバッグ時に非常に有効です。

浮動小数点演算での例外処理としてトラップを掛けプログラムを終了する

浮動小数点演算の例外処理の方式の指定が可能です。

浮動小数点演算の方式を IEEE 754 Standard に厳密に準拠するコードを生成

浮動小数点演算の処理方式を厳密に IEEE 754 に準拠した計算方式での実行モジュールの作成を行います。

x87 レジスタ(スタック)のビット長の制御

x87 アーキテクチャ上のレジスタビット長の使用精度の制御が可能です。

浮動小数点演算の精度に影響を与える最適化の有効/無効化

コンパイラ最適化において、ループの結合処理を許可するオプションで、浮動小数点演算の丸め誤差によって引き起こる計算結果の違いが起きても良いことを指示するものです。

ファイル I/O における内部エンディアン方式の変換

アンフォーマット Fortran データ・ファイルの入出力時にビッグエンディアン (big- Endian) からリトルエンディアン (little-endian) にあるいはその逆に、バイトをスワップ します。

64ビットサポート・オプション - 2GB を超えるプログラムの実行モジュールの生成オプション

PGI 64 ビット製品における F77, F95, C のコンパイラを使用して、2GB 以上のプログラム・オブジェクトがある場合のコンパイル・オプションの例を示します。

64ビットシステムでの PGI プログラミングモデル(メモリ空間、アドレッシング)

CPU のターゲットとオプションの組み合わせにより、64ビットシステムでのメモリ空間、アドレッシング範囲が異なります。このプログラミングモデルについて説明しします。

64ビットプログラミングモデル(-mcmodel=medium)において実際に生じる可能性のある制約事項と対処

2GB 以上の 64ビット計算において、生じる可能性のある問題とその見解について述べています。

自動スレッド並列化とOpenMP並列化のコンパイル・オプション

PGI コンパイラの自動並列化・OpenMP並列化を行うためのオプションについて説明しています。

PGHPF(High Performance Fortran)の実行環境の設定と使用法

商用コンパイラの中で唯一、HPF (High Performance Fortran) のコンパイラを提供する PGI。この HPF コンパイラの使用法と環境の設定の仕方を説明します。

性能解析プロファイラ OpenMP 対応 PGPROF の使用法

PGI 製品における F77, F95, HPF, C, C++ のコンパイラを使用して、性能解析プロファイラ PGPROF を使用する場合のコンパイル・オプション例とその利用法を示します。

OpenMP 対応並列デバッガ PGDBG の使用法

PGI 製品における F77, F95, HPF, C, C++ のコンパイラを使用して、シンボリック・デバッガ PGDBG を使用する場合のコンパイル・オプション例とその利用法を示します。

プログラムの Call Graph の出力

プログラムの実行時のルーチンのコールグラフを出力する。また、ルーチンの呼び出し依存関係を出力する

Fortran ソースコードのプリプロセス処理

Fortran ソースのプリプロセッサを使用する方法

 

 ■ 数学ライブラリの生成、利用法

AMD 高速数学ライブラリ ACML 3.x をインストールする

32ビット x86 及び 32ビット/64ビット版Linux OS上で動作する x86 アプリケーションの性能と機能性を最大化するための AMD 社で開発されたライブラリです。SSE/SSE2インストラクションを使用し、高度にチューニングされた BLAS カーネルを活用して、通常の Linear Algebra Package (LAPACK) 実装の場合よりもさらに高い性能を発揮するよう、LAPACKルーチンにはさらなる最適化が行われています。
また、FFT ライブラリも含まれております。さらに、OpenMP対応の並列版もあります。

BALS、LAPACK、ScaLapackについて

PGI コンパイラにバンドルされている AMD 社のACML ライブラリの中の性能最適化された LAPACK は、無償で利用することができます。ここでは、LAPACK 等のライブラリに関する一般的な説明を行います。

ACML ライブラリをリンクして、OpenMP 並列実行を行う方法

ACML ライブラリの OpenMP 対応版をインストールした後に、コンパイルと実行方法について説明しています。

ACML 行列積(DGEMM) を使用して OpenMP スレッド計算

ACML ライブラリの OpenMP 対応版を使用して LAPACK(DGEMM) の計算を行う


 ■ ポピュラなアプリケーション/ライブラリの PGI による最適化ガイド

アプリケーションのポーティング・ガイドの全インデックスへ(米国 PGI 社)

科学技術計算、エンジニアリング系のアプリケーションのPGIコンパイラを使用したポーティングする際の最適化ガイド

サードパーティの商用アプリケーションのPGIコンパイラを利用したポーティング状況

著名な理工学系商用アプリケーションは、64ビットアプリケーションのビルド・コンパイラとして PGI を採用しています。


 ■ ベンチマーク性能、性能最適化の方法、チュートリアル

行列積(MATMUL) の性能

ソースコード、組込み関数MATMUL、ACML ライブラリを使用した場合の性能比較

Linux 商用コンパイラの性能比較(2005/11)

(Polyhedron Fortran90 benchmark での各社の性能を比較する)

PGI コンパイラによる気候モデル MM5 の性能(2005/11)

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

(デュアルコアの性能検証、インテルコンパイラとの比較、マルチスレッド並列効)

低価格のデュアル Athlon64 X2 プロセッサ・システムを
PGI コンパイラで評価する!
(v6.0-5) (2005/8)

(デュアルコアの性能検証、Linux 検証、インテルコンパイラとの比較、マルチスレッド並列効率)

PGI 5.2 と PGI 6.0 の性能比較(v6.0)

実アプリケーションのベンチマークを使用した PGI コンパイラ 5.2 の性能を 100% (1.0) とした時の PGI 6.0 の相対性能比

PGI コンパイラとインテル(R)コンパイラの性能比較(v5.2)

科学技術、エンジニアリングベースの実アプリケーションのベンチマークとして有名な NAS Parallel Benchmark と SPECfp2000 の二種類を用いた、PGI コンパイラとインテル(R) コンパイラによる性能比較を行います。

SPECfp2000 ベンチマークによる インテル/PathScale コンパイラとの客観的な比較・評価(v5.2)

SPEC CPU2000 のベンチマークでは、各プログラムの性能測定において、最も高速実行できる複数のコンパイラのいずれかを使用します。高速に実行された際に使用した「コンパイラ」を各社別に評価すると、客観的なコンパイラの良し悪しを評価できます。

STREAMベンチマーク(メモリバンド幅)での比較(v5.2)

STREAMは、非常に単純な演算によるメモリのロード/ストアの性能を測定するベンチマークです。プロセッサのキャッシュの効果を反映させないように、非常に大きな配列間のロード/ストアの性能を測定できるようにベンチマークを行います。これは、性能全体を左右する重要な指標となります。

PGI コンパイラの SSE/SSE2 最適化性能・OpenMP 並列性能(v5.2)

PGI コンパイラの スカラ最適化並びにベクトル最適化において SSE/SSE2 (スカラ・ベクトル)インストラクションを使用しますが、この最適化レベルによって性能がどのように変化するかについて説明します。

HPL による Opteron クラスタの性能測定結果 (2003.10)

HPL(High Performance Linpack Benchmark) は、分散メモリ環境用途に作成された Linpack ベンチマーク(密行列 LU 分解計算)である。AMD64 市場投入直後の Opteron クラスタの性能をPGI コンパイラにより確かめた。


一般的なプログラムの性能最適化手法の概観(PDF 177KB)

性能最適化とは、何を行うのか、一般的な手法と性能的側面、数学(線形)ライブラリ LAPACK の活用の薦め等の話を纏めております。

 

 ■ 並列化の方法、最適化、性能、チュートリアル

並列化の基礎知識(PDF 1.1MB)

並列化の基礎的なことについて纏めています。並列化に関わる言葉の意味、並列プログラミング・モデルとその概要、OpenMP、HPF、MPI 並列の概念について書かれています。

PGI compiler が提供する並列化機能

PGI が提供している全ての言語コンパイラに実装された並列化機能とそのプログラミングモデルについての概略を纏めています。

PGHPF の実行環境の設定と使用法

商用コンパイラの中で唯一、HPF (High Performance Fortran) のコンパイラを提供する PGI。この HPF コンパイラの使用法と環境の設定の仕方を説明します。

PGI コンパイラによる、自動スレッド並列化とOpenMP並列化のコンパイル・オプション

PGI コンパイラの自動並列化・OpenMP並列化を行うためのオプションについて説明しています。

自動並列、OpenMP並列実行において、並列スレッド数を定義する環境変数

SMPシステム上でスレッド並列実行する際の環境変数の設定についいて説明します。

プログラムの自動並列化コンパイル例と実行例

並列実行時のコンパイル例と実行時のリスティング例です。

PGI コンパイラによる並列処理での NPTL スレッドライブラリの扱い

Linux に実装されたスレッド・ライブラリの違いにより、並列プロセスの見え方の違い

NUMAアーキテクチャ上でのスレッド制御を行うためのマルチプロセッサ環境変数

CPU affinity(固定的に スレッドとCPU 結合)を制御する環境変数について

OpenMP 並列実行時における Segmantation fault の問題への対処

自動並列化あるいは OpenMP 並列化を行って並列スレッド実行時に、この Segmentation violation (segmentation fault) の問題で、実行時エラーが生じる場合があります。この問題の対処法を説明します。

PGI 7.1バンドル MPICH-1 ライブラリ・ツールの使用方法

PGI コンパイラを使用した MPICH ライブラリの使用方法、MPI対応のデバッガの使用方法等を説明しています。

MPI プログラムのコンパイル・実行方法について

PGI コンパイラを使用して MPIプログラムのコンパイルの方法と実行方法を説明します。

MPICH - Message Passing Interface MPICH

PGI コンパイラを使用した MPICH メッセージ・パッシング・インタフェース バージョン 1.2.7 の生成方法について

並列処理での経過時間を測定する関数

並列処理で経過時間(Elapsed time) を個別に測定したい場合に使用する関数

並列化チュートリアル 連載(1) アムダールの法則、並列化率、並列効果

並列化する際に留意する事項、考え方、PGI コンパイラを利用して実際に並列化する方法(スレッド並列、MPI並列)、性能に関する考察等を順次、この並列化チュートリアルコーナーで連載していきます。 まず、初回は、並列性能に関する基本的な考え方の説明を行います。 

行列積のプログラムを例題に PGI コンパイラを使用する

行列積の計算を行うためのプログラムを例示し、PGI コンパイラの使用法、ACML ライブラリの使用法、行列積計算の性能等に関して説明します。 

高速フーリエ変換ライブラリ FFTE を使用する

高速フーリエ変換ライブラリである FFTE に関して、 PGI コンパイラを使用して最適な性能を得るための方法について説明します。ここでは、特に、PGI コンパイラ・ディレクティブ(指示行)の使用によって性能を向上させるための例を示します。 

行列積プログラムでメモリアクセス最適化

行列積のプログラムを用いて、最内側ループのメモリアクセス方法の変化により、性能が大きく異なることを説明します。行列積の性能最適化については他に多くの文献があり、メモリアクセス最適化の教科書的題材ですが、ここで理解していただきたいことは、プログラムの実効性能の大小は、実は配列計算時のメモリアクセスに関連したキャッシュの有効活用の度合いによって変化すると言うことです。 

メモリからのプリフェッチを制御し、キャッシュ利用の最適化を図る

PGI コンパイラ 6.0 以降では、コンパイラレベルでプリフェッチを行う対象を見出して、さらに、コンパイラ・オプションでキャッシュ制御命令のパラメータを指定することが可能で、プリフェッチのスケジューリング距離の調整やプリフェッチ命令の種類を変更することにより、キャッシュ利用の最適化を行うことができるようになりました。本稿では、プリフェッチ関連のコンパイラ・オプションの指定により、性能が大きく異なる場合があることを一つの例を使用して説明します。 

 

 ■ PC クラスタ上での扱い、留意点

PCクラスタ上で使用する場合、Workstation ライセンス、Server ライセンスのどちらが必要でしょうか

PGI Workstation ライセンスを使用して PC クラスタ上にインストールする際の留意点

PGI Workstation のノードロックライセンスをPC クラスタで使用するためのノウハウについて説明しています。

 



 ※本ページに記載されている会社名、製品名は、各社の登録商標または商標です。
 ソフテックは、PGI 製品の公認正規代理店です

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