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



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



New Release Information
最新リリース情報
ソフテックは、PGI 製品の公認正規代理店です


PGI® Workstation & PGI® Server 8.0 Release
米国 PGI 社の PGI Workstation/Server コンパイラ製品のバージョン8.0 をリリースしましたのでお知らせいたします。なお、このリリースでは、Linux 版から Windows版、Mac OS X版を順次、リリースしていきますので、これらのプラットフォームの同時リリースではありません。ご了承ください。本リリースにおける製品の主な新機能、特徴に関して以下に説明します。なお、ソフトウェアは http://www.softek.co.jp/SPG/ftp.html ページにてダウンロード可能です。 (2008年11月)

製品名 現バージョン アップデート日
PGI Workstation and PGI Server for Linux 
8.0-6 2009-4-27
PGI CDK for Linux (ご購入ユーザ様のみにご案内) 8.0-6 2009-4-27
PGI Workstation and PGI Server for Windows 8.0-6 2009-4-27
PGI Visual Fortran Standard (Windows) 8.0-6 2009-4-27
PGI Workstation for Mac OS X 8.0-6 2009-4-27

現在の最新バージョンは、version 8.0 となります。年間サブスクリプション契約をご購入あるいはご継続中のお客様は、新リリースのソフトウェアをダウンロードの上、再インストールをお願いいたします。最新の「日本語インストールの手引き」を必要なお客様は、support@softek.co.jp へメールにて依頼いただければ、送付いたします。新リリースのソフトウェアの入れ替えは次のステップで行うことができます。

バージョンアップの方法についての詳細は、こちらをご覧ください

STEP1 : 新リリースのソフトウェアのダウンロード
STEP2 : 新リリースのソフトウェアのインストール
STEP3 : 新リリースのライセンス・キーの取得と license.dat の入れ替え


ライセンスの更新に関する FAQ は、こちらをご覧ください

・旧バージョン PGI® 7.2 のリリースノートは、こちらのページで閲覧できます。
・旧バージョン PGI® 7.1 のリリースノートは、こちらのページで閲覧できます。
・旧バージョン PGI® 7.0 のリリースノートは、こちらのページで閲覧できます。
・旧バージョン PGI® 6.2 のリリースノートは、こちらのページで閲覧できます。
・旧バージョン PGI® 6.1 のリリースノートは、こちらのページで閲覧できます。
・旧バージョン PGI® 6.0 のリリースノートは、こちらのページで閲覧できます。

・PGI 8.0 の英語版リリース・ノートは、こちらで閲覧できます。


Version 8.0 の詳細 (2008年11月)
Release 8.0 PGI Compiler Features and Performance (主な新規機能、特長について)

  • (NEW) OpenMP 3.0 :PGF95/PGCC コンパイラにおいて、マルチコア、マルチソケット・サーバ向けの並列プログラミングモデルである OpenMP 3.0 (Task含む)に完全準拠しました。

  • (NEW)Common Compiler Feedback Format (CCFF) セクションが、全ての PGI 8.0 コンパイラによって生成されます。CCFF は、利用者へ最適化を行った際の情報や最適化へのヒントをリポートするためその情報を保存するための標準化フォーマットです。この CCFF の標準化仕様は、他社に先駆けてPGI 社が提唱しています。

  • (NEW) x64+GPU のサポート - NVIDIA GPU の CUDAが有効な 64ビットLinux に対して、新しい高級言語 (Fortran/C99) 上の PGI アクセレータコンパイラのプログラミングモデルを暫定的にサポートします。正式なリリースは来年春以降となります。 この GPU を利用した「アクセレータ・コンパイラ」は、業界で初めての提供となります。
    なお、「暫定的な機能」を使用するためには、PGI 社の 「PGI Accelerator Compilers for x64+GPU Preview Program(ベータテスト)」に参加することが必要です(この用途のライセンスキーが必要です)。参加できる要件は、すでに PGI コンパイラをお持ちで、年間サブスクリプションを購入しているお客様のみとなっており、PGI 社の 「PGI Accelerator Compiler Evaluation Request」にて応募して下さい。予定では、2009年1月9日以降に、このベータテストが開始されます。(現在、このベータテストへの応募は締め切られております。正式なリリースまでお待ちください

    PGI Accelerator Compilers

    PGI Accelerator Compilers

    Accelerate Linux applications on x64+GPU platforms by adding OpenMP-like compiler directives to existing Fortran and C programs.


  • PGPROF - 性能解析とチューニング用ツールであるPGPROFが一新し、機能向上を行いました
    • (NEW)直観的なナビゲーションと分析機能を有する look-and-feel として一新しました。
    • (NEW)ソースコードと相関する形でブラウズできる CCFF 情報
    • Linux 上のハードウェアカウンタを使用してマルチコアの性能スケーラビリティの分析機能の向上
    • (NEW)マルチコア並列化や、GPU アクセレータにオフロードする対象となるコードの部分を特定するために演算密度 (Compute Intensity) を計算するようにしました
    • PGPROF のタイマーを有する実行モジュールの性能の向上

  • コンパイラ最適化と特徴
    • (NEW)すべての言語でループの演算密度を計算しリポートする機能
    • アンロール・ループ(展開ループ)へのパック SSEコードの生成
    • 一般的なリダクションループのSSEベクトル化
    • スカラ・プリフェッチと ”Spill tuning"、”Live-range splitting” 技法の向上
    • コード・ブロックの実行回数を静的に見積もる方法の向上
    • PGC++(R) STL は STLPort 4.6.2 をベースにスレッド・セーフとなりました
    • PGC++(R) における OpenMP 3.0 機能に対しての追加サポート
    • GCC variadic マクロ拡張
    • ツールの相互互換性向上のために DWARF の自動生成
    • Fortran 95 DWARF の強化

  • PGDBG デバッガの強化
    • OpenMP 3.0 デバッグ機能(Taskのサポートも含む)
    • PGI CDK では、Linux クラスタ用に OpenMPI のデバッギング機能追加
    • Mac OS X上での OpenMPI デバッギング機能を追加
    • Mac OS X 上の OpenMP ならびに自動並列化されたマルチコアアプリケーションのデバッグ機能
    • PGDBG に対して多くの信頼性とパフォーマンスの強化
    • MPI 使用機能の中に、MPICH-1 だけではなく、HP-MPI for LinuxMPICH-2、 あるいは、 MVAPICH のデバッギングとプロファイル機能を使用できるように利用拡張

  • (NEW) Windows版のインストール において、インストール時に www.pgroup.comから自動ライセンスファイル生成手続きができるようになりました。

  • 動作プラットフォームの拡張
    • 新しい Quad-Core AMD Opteron プロセッサ(AMD Shanghai)
    • 最新のインテルと AMD プロセッサに対する PGI Unified Binary のサポート
    • Fedora 8, Fedora 9, SuSE 10.3, SuSE 11.0, and Ubuntu 8 Linux サポート
    • Microsoft Vista 32-bit and 64-bit, Microsoft HPC Server 2008 サポート
    • Mac OS X Leopard for x86 32-bit and 64-bit サポート

  • PGI User's GuidePGI Tools GuidePGI Visual Fortran Users Guide のアップデート

PGI® 8.0 のリリース・ノートの詳細版は、PDF ファイルで提供しております。
サポートするプラットフォーム
 
  • 32ビット Linux - 32ビット x86 互換あるいは 64ビット x64 互換のプロセッサ上で動作する 32ビットLinux オペレーティングシステム上で利用可能です。
  • 64ビット/32ビットLinux - 32ビット Linux 製品の全ての機能を包括し、64 ビット x64 互換のプロセッサ上で動作する 64 ビット Linux オペレーティングシステム上で利用可能です。
  • 32ビット Windows -32ビット x86互換あるいは 64ビット x64 互換のプロセッサ上で動作する32ビットWindowsオペレーティングシステム上で利用可能です。
  • 64ビット/32ビットWindows - 32ビットWindows(R) 製品の全ての機能を包括し、64ビットx64 互換のプロセッサ上で動作する 64ビットWindows(R)オペレーティングシステム上で利用可能です。
  • 32ビットApple Mac OS X - 32ビットあるいは 64 ビットの Intel(R) ベースのプロセッサを搭載したシステムで、32ビットApple Mac オペレーティングシステム上で利用可能です。
  • 64ビットApple Mac OS X - 64ビットの Intel(R) ベースのプロセッサを搭載したシステムで、64ビットApple Mac オペレーティングシステム上で利用可能です。
  • 32ビット SFU - 32ビットx86互換あるいは64ビットx64互換のプロセッサ上で動作する32ビットWindows(R) オペレーティングシステム上の SFU (Windows Service for Unix) で利用可能です。(Windows(R) 製品のライセンスキーが必要です)
  • 32ビット SUA - 32ビットx86互換あるいは64ビットx64互換のプロセッサ上で動作する32ビットWindows(R) オペレーティングシステム上の SUA (the Subsystem for Unix-base Applications) で利用可能です。(Windows(R) 製品のライセンスキーが必要です)
  • 64ビット/32ビットSUA - 32ビットSUAの全ての機能を包括し、64ビットx64互換のプロセッサ上で動作する 64ビット Windows(R) オペレーティングシステム上の SUA (the Subsystem for Unix-base Applications) で利用可能です。(Windows(R) 製品のライセンスキーが必要です)

サポートするプロセッサタイプ

PGI 7.2 と同様に、32ビット x86 系のプロセッサ並びに 64ビットの AMD64、Intel(R) 64 のプロセッサに対応します。PGI 8.0 において、サポートする CPU は以下の表のとおりです。
新たに、インテル社のクアッドコア・プロセッサ Penryn プロセッサ用の最適化をサポートしました。

PGI コンパイラは、AMD64 ネイティブな最適化と Intel(R) インテル64 用の最適化を切り替えることが可能なクロス・コンパイル機能を有します。さらに、PGI コンパイラは、一つの実行モジュールフファイルで、AMD64 あるいは EM64T のどちらにも最適な性能を提供可能な PGI Unified Binaries の機能を業界で初めて提供しております。PGI コンパイラを利用することで、将来、ご使用システムを Intel 64(EM64T) もしくは AMD64 のどちらかの CPU プラットフォームに変更したとしても、最適化された共通コンパイラ基盤としてどちらのプラットフォームに対してもご利用いただけます。PGI 8.0 コンパイラがサポートするプロセッサの詳細に関しては、こちらをご覧ください

PGI がサポートするプロセッサのデフォルトで使用するハードウェア機構
prosessor Prefetch SSE1 SSE2 SSE3 32-bit 64-bit Scalar FP
Default
AMD Athlon                 x87
AMD Athlon XP/MP          x87
AMD Athlon64    SSE
AMD Opteron     SSE
AMD Opteron Rev.E/F SSE
AMD Opteron/Quad-Core SSE
AMD Turion SSE
Intel(R) Celeron                x87
Intel(R) Pentium II                x87
Intel(R) Pentium III          x87
Intel(R) Pentium 4       SSE
Intel(R) Pentium M       SSE
Intel(R) Centrino       SSE
Intel(R) Pentium 4 EM64T SSE
Intel(R) Xeon EM64T SSE
Intel(R) Core Duo EM64T SSE
Intel(R) Core 2 Duo EM64T SSE
Intel(R) Penryn
(Quad core)
SSE


サポートするOS の追加


Linux 版においては、RedHat Enterprise Linux 5.x 、SUSE LINUX 10.3、11.0 並びに Federa Core 9 をサポートしました。PGI 8.0 において、サポートする OS は こちらをご覧ください。
なお、PGI 7.0以前でサポートしておりました、古い Linux DistributionであるRedHat 8.0/7.3、SuSE 8.1/8.0、SLES8 SP2は、PGI 7.2 以降サポートしておりませんのでご注意ください。


PGI 8.0 の新コンパイラ・オプションと従来との変更部分(2008年11月)


PGI コンパイラ 8.0 において新規に導入されたオプションについて説明 しているPDF ファイルです。 

  • 未知のコンパイラ・オプションを指定した場合、今までは「警告」レベルの扱いでしたが、PGI 8.0 より、「エラー」として扱われます。この変更によって、コンパイラが認識できないオプション(スイッチ)が指定された場合、コンパイルエラーとなり停止することになります。

    一例 : pgf95-Error-Unknown switch: -Mconcu

    しかしながら、新しいコンパイラ・オプションである -noswitcherror を指定すると、従来のように、未知のオプション(スイッチ)が指定された場合、エラーで停止するの代わりに「警告」を出すように変更できます。
    次のオプションは、PGI 7.2から追加あるいは、修正されたものです。
  • -Mnodwarf DWARF デバッグ情報を生成バイナリに付け加えないように指示する新しいオプションです。
  • -Mnofpapprox 低い精度の浮動小数点演算を使用しないように指示する新しいオプションです。
  • -Minfo いくつかの新サブオプションが追加されました。
    • all 以下のサブオプションをすべて指定したものと解釈します。  -Minfo=accel,inline,ipa,loop,lre,mp,opt,par,unified,vect
    • accel アクセレータ情報の有効化
    • ccff オブジェクトファイルに最適化情報のような情報を追加します
    • ftn Fortran特有な情報の有効化
    • hpf HPF特融な情報の有効化 information
    • inline インライン情報の有効化
    • lre LRE情報の有効化
    • par 並列化の情報の有効化
    • pfo プロファイル・フィードバックに関する情報の有効化
    • vect ベクトル化の情報の有効化
  • -Mconcur 二つの新しいサブオプション(allcores、bind)が追加されました。
    • allcores 環境変数OMP_NUM_THREADS あるいは NCPUSにセットしていない場合、すべての有効なコアを使用する(リンク時に指定すること)
    • bind スレッドをコアあるいはプロセッサにバインドする(リンク時に指定すること)
  • -Mprof の新しいサブオプション:
    [no]ccff CCFF情報の有効化 [無効化]
  • -Msmartalloc の新しいサブオプション:
    hugebss hugeページの中にBSSセクションを置く
  • -Mvect の新しいサブオプション:
    [no]short 短いベクトル演算を有効化[無効化]
    -Mvect=short は、ループ外のスカラコードから生じる、あるいは、ループ・イテレーションの中から生じる短ベクトル演算のためのパックSSE演算の生成を有効化します。
  • -mp 二つの新しいサブオプション(allcores、bind)が追加されました。
    • allcores 環境変数OMP_NUM_THREADS あるいは NCPUSにセットしていない場合、すべての有効なコアを使用する(リンク時に指定すること)
    • bind スレッドをコアあるいはプロセッサにバインドする(リンク時に指定すること)
  • -Mneginfo いくつかの新サブオプションが追加されました。
    • all 以下のサブオプションをすべて指定したものと解釈します。-Mneginfo=accel,inline,ipa,loop,lre,mp,opt,par,vect
    • accel アクセレータ情報の有効化
    • ftn Fortran特有な情報の有効化
    • hpf HPF特有な情報の有効化 information
    • inline インライン情報の有効化
    • ipa Enable IPA information
    • lre LRE情報の有効化
    • mp OpenMP情報の有効化
    • opt 最適化の情報の有効化
    • par 並列化の情報の有効化
    • pfo プロファイル・フィードバックに関する情報の有効化
    • vect ベクトル化の情報の有効化
  • -tp 三つの新しいターゲットCPUタイプ
    • shanghai AMD Shanghai プロセッサ 32-bit mode
    • shanghai-32 AMD Shanghai プロセッサ, 32-bit mode
    • shanghai-64 AMD Shanghai プロセッサ, 64-bit mode
  • --pedantic 含まれたシステムヘッダーファイルに関わる警告メッセージを印刷しりためのスイッチ

Common Compiler Feedback Format(CCFF)

Common Compiler Feedback Format (CCFF)を使用して、 PGI コンパイラは、どのようにプログラムの最適化を行ったら良いか、あるいは、特定の最適化がなされないのか等の情報を実行モジュールファイルに保存します。この情報をオブジェクトファイルに追加するためには、コンパイラ・オプション -Minfo=ccff を指定します。
PGPROF 性能解析プロファイラは、CCFF コンパイラ・フィードバック情報を閲覧するためのインタフェースやプログラムのコンポーネントの性能に関する情報を提供するインタフェースを備えました。

OpenMPの強化

OpenMP は、FORTRAN と C/C++ プログラムにおける共有メモリ上のスレッド並列化を指定するために使用するコンパイラ指示行、API、環境変数の「仕様」です。
PGI Workstation 8.0 は、OpenMP 3.0 をサポートします。このサポートに関連したいくつか、強化した点があります。
【重要】
The C++ Standard Template library は、STLport コード内で許可された範囲でスレッドセーフとなりました。特定のコンテナーへの同時のアクセスは安全であり、共有コンテナーへの同時の読み込みも安全となります。しかし、共有コンテナーへの同時の書き込みは、#pragma omp critical セクションを指示してプロテクトしなければいけません。
ユーザは、テンプレートのヘッダーファイルとライブラリのスレッドセーフ・バージョンを使用するためには、-mp オプションを伴うコンパイル&リンクを行わなければなりません。指示行、プラグマ、クロウズ(指示節)、ランタイム・ライブラリ、環境変数等の詳細に関しては、PGI Workstation User's Guide(英文)の5章、Using OpenMP をご覧ください。


新しいOpenMPディレクティブとプラグマ

OpenMP プログラムの全てのパートは、「タスク」に一部です。このリリースでは、PGI は OpenMP 3.0 の部分となる次に示す、ディレクティブとプラグマをサポートします。

  • 明示的な TASK を定義するために、Task ディレクティブと omp task プラグマ
  • 現在のタスクが開始してから生成された「子」タスク終了を待つために指定する Taskwait ディレクティブと omp taskwait プラグマ
  • the DO...END DO, PARALLEL DO、and PARALLEL WORKSHARE ディレクティブと共に使用するCollapse (n) クロウズ(指示節)。これは、どの位のループ数が、このループ構造とともに関連しているかを指定するものです。



新しい OpenMP ランタイム・ライブラリ・ルーチン

PGI Workstation 8.0 は、三つの新しいランタイム・ライブラリ・ルーチンをサポートします。

  • omp_get_ancestor_thread_num
     このルーチンは、現スレッドにネストされたレベルを与えることにより、その先祖スレッドを返す。
  • omp_get_active_level
     このルーチンは、このルーチンを呼び出すタスクを囲んでいるアクティブなパラレル・リージョンが囲んでいる数を返す。PGI 現在、アクティブな並列リージョンが1レベルのみをサポートします。したがって、この値は、常に1となります。
  • omp_get_level
    このルーチンは、呼び出しコールを含むタスクを囲んでいる並列リージョンの数を返します。
  • omp_get_team_size
    このルーチンは、現スレッドの指定されたネストレベルに対して、その先祖に属するスレッド・チームのサイズを返します。
  • omp_set_schedule
    このルーチンは、the run_sched_var(ランタイムスケジュール)の値をセットします。
  • omp_get_schedule
    このルーチンは、the run_sched_varの値を返します。



新しい OpenMP 環境変数

PGI Workstation 8.0 は、以下の OpenMP環境変数をサポートします。

  • OMP_MAX_ACTIVE_LEVEL
    この変数は現在、無効となっております。一般には、ネスト並列性を有効(無効)にします。
  • OMP_THREAD_LIMIT
    この変数は、デフォルト64です。プログラムで使用可能な最大スレッド数の絶対数です。
  • OMP_STACKSIZE
    正式には、OMP_STACK_SIZE、 この変数は、デフォルトのスタックサイズを上書きします。新しく生成されたスレッドのサイズを制御します。


新しい MPI サポート


PGI 7.1より前のバージョンでは、MPI のサポートは、PGI CDK 製品のみとしていましたが、PGI 7.1 のリリース以降、MPICH1 が PGI Workstation/Server ライセンス(Linux版)にバンドルされました。ただし、このPGI Workstation/Serverライセンスでは、そのMPI プログラムの PGDBG デバッギング並びに PGPROF プロファイル機能は、ローカルなシステム上でかつ制限されたプロセス数(現在4プロセス)の範囲内での使用に限定されております。
この PGI Workstation 8.0-1 リリースでは、ローカルな MPI 使用機能の中に、MPICH-1 だけではなく、HP-MPI for LinuxMPICH-2、 あるいは、 MVAPICH のデバッギングとプロファイル機能を使用できるように利用拡張しました。なお、MPI ライブラリは、MPICH-1 のみバンドルされております。他の MPIライブラリは、任意にインストールしていただく必要があります。
PGI Tools Guide は MPIを利用した場合のツールの使用方法を説明しています。

  • PGPROF graphical MPI/OpenMP/multi-thread performance profiler.
  • PGDBG graphical MPI/OpenMP/multi-thread symbolic debugger


なお、MPIの使用方法については、PGI User's Guide の6章 Using MPI の項目をご参照ください。
※ PGI MPI プログラム開発用コンパイル・オプション、ツールの使用方法のページをこちらです。

  • 一般的なMPIプログラムの実行モジュール生成は、以下のようなコンパイル・オプションで、MPICHのインクルードファイルの取り込みとMPICHライブラリがリンクできるようになります。MPIプログラムのデバッグを行う際は、mpirun コマンドの引数に-dbg=pgdbgを追加指定してください。PGDBGのGUI表示が現れます。
    % pgf77 -o mpihello mpihello.f -Mmpi=mpich1(コンパイル)
    % mpirun mpihello
    Hello world! I'm node 0
    % mpirun -np 4 mpihello (実行)
    Hello world! I'm node 0
    Hello world! I'm node 2
    Hello world! I'm node 1
    Hello world! I'm node 3 (MPIデバッグ) % mpirun -dbg=pgdbg -np 4 mpihello

ライブラリ・インタフェース

PGIは、Fortranモジュールを使用することによってCインタフェースをエキスポートするライブラリへのアクセスを提供します。これらのライブラリと関数は、PGI User's Guide の8章の述べられております。


PGI Workstation 8.0

この章では、Linux、 Windows、 and Mac OS Xの各 OS に関わる PGI Workstation/Serverのアップデート並びに変更について述べています。

●PGI Workstation 8.0 for Linux

暫定的な x64+GPU サポート
PGI Workstation 8.0(Linuxのみ)は、 NVIDIA GPU の CUDA が有効な 64ビットLinux に対して、新しい高級言語上の PGI アクセレータコンパイラのプログラミングモデルを暫定的にサポートします。(これは、一般の製品ライセンスでは使用できません)

Java Runtime Environment (JRE)
Linux 上でのPGIのインストールでは、32ビットバージョンのJREを含みますが、十分な32ビット X Window をサポートサポートするためには、適正な関数等が有効である必要があります。
いくつかのシステムでは、たとえば、最近の Fedora Core では、これらの関数の一部が標準のインストールにおいて行われないようになりました。X Window は、一般的には、以下のライブラリをサポートします。
libXau libXdmcp libxcb
libX11 libXext

●PGI Workstation 8.0 for Windows

PGI Workstation 8.0 for Windows は、linux86 (32ビット)並びに linux86-64 (64ビット)環境と同様なほとんどの機能をサポートします。

新しいライセンス取得方法の提供(Windows版のみ)
PGI Workstation 8.0 for Windows のインストールにおいて、インストール時に www.pgroup.com から自動ライセンスファイル生成手続きができるようになりました。

●PGI Workstation 8.0 for Mac OS X

PGI Workstation 8.0 for Mac OS X は、linux86 (32ビット)並びにlinux86-64 (64ビット)環境と同様なほとんどの機能をサポートします。このリリースノートあるいはユーザマニュアルで指摘していること以外は、基本的に Linux版の機能と同一です。

PGI Unified Binary

全ての PGI コンパイラは、PGI Unified Binary オブジェクトあるいは実行モジュールを生成することができます。この PGI Unified Binary とは、AMD64 と EM64T(インテル(R)64)のどちらのプラットフォームに対しても性能ペナルティがない形で、それぞれの CPU ターゲットに対してフルに最適化されたコードを「一つの実行モジュール」として生成する機能です。プロセッサが異なると、そのハードウェア命令やキャッシュサイズ等のハードウェアの特徴が微妙に異なります。コンパイラは、アーキテクチャ特有の命令や命令スケジューリング、ベクトル化実装を行います。実行時に、この実行モジュールは、その実行プラットフォーム環境を認識し、動的に該当するコード・ストリームを選択します。実行時には、実行モジュールがその環境を見極め、動的に適切な最適化コードブロックを選択します。PGI Unified Binary は、複数のハードウェア・プラットホーム上で最適に動作する単一の実行モジュールを低オーバーヘッドで提供します。
実行モジュールのサイズは自動的に Unified binary culling( 抜粋)を経て制御されます。ターゲットが生成コードに影響する場所のサブルーチンや関数だけが、ユニークなバイナリイメージを有するようになっています。その結果、各々のターゲットのバイナリイメージのフルコピーを生成するものに比較して、10~90% のコードサイズの削減効果があります。
プログラムは、それを構成する全てのオブジェクト・ファイルが Unified binary としてコンパイルされなくても、PGI Unified Biary として使用することが可能です。PGI Unified Binary のオブジェクト・ファイルは、他のオブジェクト・ファイルからなるライブラリやプログラムを生成するために使用できます。PGI Unified Biary の実行には、特別なスタートアップコードは必要ありません。
-Mpfi オプションは、PGI Unified Binary の生成を抑止します。その代わり、ホストのためのデフォルトのターゲット自動検出ルールはターゲット・プロセッサを選択するために使用します。

配布と配置

ここでは、コンパイラを使用する上で、関連するトピックスについて述べます。特に、PGI Unified Binary 技術を通しての最適化や、Windows 上のリンクオプションについて、
さらに、siterc ファイルあるいは rc ファイルによるコンパイラのカスタマイズについて説明します。

  • PGI Unified Binaries の生成、そのコマンドラインのスイッチ、ディレクティブ、プラグマに関しては、PGI User's Guide の9 章の Distributing Files - Deployment にて詳しく説明しております。
  • スタティックリンクやダイナミックリンクを選択する際のコンパイラ・オプションの使用例やスタティック、ダイナミック・リンク・ライブラリの生成、使用法等に関する詳細は、PGI User's Guide の8章の Creating and Using Libraries に説明しております。
  • 特別の用途で、コンパイラの初期設定ファイルである、Siterc ファイルやユーザ rc ファイルをカスタマイズする方法は、PGI User's Guide の1章の Examples of Using siterc and User rc Files を参照してください。


アプリケーションの配置と再配布

PGI コンパイラで構築されたプログラムは、ランタイム・ライブラリ・ファイルを必要とする場合があります。PGI コンパイラがインストールされていないシステム上でこのようなプログラムを実行するような場合は、プログラムと共にランタイム・ライブラリ・ファイルも配布する必要があります。このために、全ての OS プラットフォーム用の再配布用ファイルを提供しています。Windows 版では、PGI は、Microsoft(R) の再配布ファイルも提供しています。

 PGI 再配布用ランタイム・ライブラリ

PGI 8.0 リリースでは、ランタイム・ライブラリを含むディレクトリは以下のとおりです。

  • $PGI/linux86/8.0/REDIST
  • $PGI/linux86-64/8.0/REDIST
  • $PGI/win64/8.0/REDIST
  • $PGI/win32/8.0/REDIST


これらのディレクトリには、PGI End-user License Agreement(EULA) の条項に基づいた PGI ライセンス契約によって再配布可能なPGI Linux ランタイム・ライブラリの共有オブジェクトファイル、あるいは、Windo wsダイナミック・リンク・ライブラリ(DLL) が含まれます。
 Linux REDIST ディレクトリに中には、サポートする全ての(CPU)ターゲット用の PGI ランタイム・ラブラリの共有オブジェクトファイルが含まれています。これによって、PGIがサポートしている、ほとんどの Linux システム上で実行することが可能な実行モジュールと PGI ランタイム・ライブラリのパッケージを作成することが可能となります。但し、このために必要な事項は、以下のとおりです。

  • 実行モジュールを実行するエンドユーザは、ランタイム・ライブラリの場所(パス)の設定等、そのための適切な環境を構築しておくこと
  • Linuxにおいては、PGI共有オブジェクトの検索場所を指定するためにLD_LIBRARY_PATH環境変数をセットすること。

 Microsoft(R) 再配布用ランタイム・ライブラリ 

Windows上のPGI製品は、Microsoft Open Tools を含みます。Microsoft Open Toolsのディレクトリには、"redist"と言うサブ・ディレクトリが存在します。PGI 7.2ライセンシーは、PGI End-user License Agreementに準拠し、このディレクトリ内のファイルを再配布することができます。

既知の制限事項

  • 一般的な制限事項
    • PGI 8.0 で生成されたオブジェクトあるいはモジュールは、PGI 5.x 並びにそれ以前のリリースのオブジェクト、モジュールとは互換性がありません。
    • PGI 6.1 並びにそれ以前のリリースにおいて -Mipa オプションを付加して作成されたオブジェクト・ファイルは、PGI 8.0上で再コンパイルが必要です。
    • -i8 オプションを使用するプログラムにおいて、PGI コンパイラにバンドルしている ACML ライブラリととともに使用する場合、互換性がありません。このオプションの互換ライブラリに関しては、developer.amd.com をご参照ください。
    • -i8 オプションの使用において、プログラムをMPIライブラリとACMLライブラリと共に使用する場合、互換性がありません。 Integer*8 配列の引数の使用により、これらのライブラリと共に使用する場合、異常終了します。
    • PGCCの -Mipa=libopt と-Mipa=vestigia lオプションを同時に使用した場合、リンク時に未解決な参照が生じる場合があります。これは、-Mipa にサブオプション vestigial を付加することにより、エラーとなる関数が削除されるために起こります。この場合は、vestigial を付加せずに、-Mipa のみの指定で対処してください。
    • ACML4.1.0 ライブラリは、-cache_align を含んだ -fassse コンパイル・オプションを使用して構築されております。32-bit ターゲットシステム上で、-lacml オプションを使用してACML ライブラリをリンクする際に、必ず、全てのプログラムに -cache_align もしくは、このオプションを含む複合オプションである -fastsse を付加してコンパイル/リンクを行ってください。64-bit ターゲットシステム上では、デフォルトでスタック 16byte アラインメントであるため、この問題は生じません。なお、性能が多少劣りますがポータビリティの良い libblas.aとliblapack.a ライブラリは、SSE 命令を有していないプロセッサ上で使用することができます。
    • -fPIC あるいは、-mcmodel=medium オプションを使用してコンパイルし、-lacml (ACMLライブラリ)をリンクする際に、 “error while loading shared libraries: libacml_mv.so: cannot open shared object file: No such file or directory.” と言うエラーメッセージが出力されます。その際は、" -lacml_mv" オプションをリンク時のコマンド列に追加してください。
    • -Mpfi と-mp を同時に使用することはサポートされていません。-Mpfiオプションは、コンパイル時に -mp を抑止しますが、それは、プログラムの中の OpenMP ディレクティブ/プラグマの解釈に依存してプログラムの実行時にエラーを引き起こすことになります。OpenMP に依存しないプログラムは、正確に profile feedback を使用することができます。-Mpfo オプションは、OpenMP 処理を抑止します。
  • プラットフォーム特有の制限事項
    ここでは、各プラットフォーム別のコンパイラ制限事項について説明します。

    Linux
    -mcmodel=mediumオプションを使用してコンパイルされたオブジェクトを組み込んだプログラムは、静的にリンクされることはできません。これは、linux 86-64環境における制約事項であり、PGIコンパイラによる制約事項ではありません。

    Apple Mac OS X
    Apple Mac OS プラットフォーム上では、 PGI Workstation 8.0 コンパイラは、ユーザバイナリの静的リンク(Static linking) をサポートしません。今後の Apple 社のアップデートとの互換性のために、コンパイラは、ユーザバイナリのダイナミック・リンク方式(Dynamic linking) をサポートします。

    Windows
    • Windowsにおいて、cygwinに含まれるvi のバージョンは、SHELL変数に予期しないものが指定されている場合、問題が起きる可能性があります。このケースの場合、viが起動される時、次のようなメッセージを出力します。この問題を修復するには、SHELL環境変数に対してcygwinのbinディレクトリの中のシェルを指定してください。(例、/bin/bash)
      E79: Cannot expand wildcards
      E79: Cannot expand wildcards
      E79: Cannot expand wildcards
      Hit ENTER or type command to continue
    • Windows上で、デバッギングのためにビルドされたランタイム・ライブラリ(例 msvcrtdとlibcmtd)は、PGI Workstationには含まれていません。デバッグ用途のために、-gオプションを付けてコンパイルするとき、PGIランタイム・ライブラリとMicrosoftランタイム・ライブラリの両方の標準的なnon-debugバージョンがいつも使用されます。この制約は、アプリケーションコードのデバッギング時にのみに影響します。
    • Dynamic Link Libraries(DLLs) は、PGI 8.0 によってMicrosoft Windowsプラットフォーム上で構築することができます。但し、次の制約があります。
    1. DLLsは、PGI C++コンパイラでは生成することはできません。
    2. もし、DLLsがPGIコンパイラにより構築された場合、ランタイムDLLsが必要となります。コンパイラ・オプション-Mmakedllは、正確なランタイム・ライブラリが使用されることを保証するためのものです。
    3. もし、実行モジュールが PGI コンパイラでコンパイルされた DLLs とリンクされているものならば、PGI ランタイム・ライブラリDLLs を使用しなければなりません。この場合は、デフォルトで使用される静的ライブラリを使用することができないからです。これを実現するためには、実行モジュールを作成する時に PGI 7.1 から導入された -Bdynamic オプションを使用してください。

    以下は、WindowsとPGDBGに係る問題・制限事項となります。
    • PGDBG Windows-Windows 上の PGDBG においては、一般にディレクトリ・パス名を区切るためにバックスラッシュ文字(“\” )を使用します。PGDBG は、C 言語の数式表示として、バックスラッシュをエスケープ文字の意味として使用します。一方、Windowsプ ラットフォームにおける PGDBG は、ディレクトリ・パス名を区切るためにフォワードスラッシュ文字(”/”)を使用してください。但し、この事項は DEBUG コマンド、あるいはコマンドライン上の実行モジュール名には適用されません。(但し、このコンベンション自体は、これらのコマンドにおいても動作します)
    • Windows プラットフォーム上のPGDBG において、一つのプロックである「システムコール」を超えてシングル・ステップ実行したとき、Windows は stepi/nexti をタイムアウトします。これを改善する方法に関しては、オンライン www.pgroup.com/support/tools.htm をご参照ください。
    • PGDBG SFU/SFA - オペレーティングシステムのサポートがないために、SFU/SUA システム上のPGDBGは、ハードウェア watchpoint(hwatchコマンド)をサポートしていません。
    • PGDBG SFU/SFA - オペレーティングシステムの制約により、32bit SUA 上のプログラムだけがPGDBGのマルチスレッドのデバッギングが可能です。但し、一つ制約があり、一度ストップすると、プロセスは全てのスレッド、あるいは、シングルスレッドの続行(スレッドの部分的なセットの続行ではなく)をしなければ、プロセスの続行ができません。スレッドの部分的なセットの続行は、結果として全てのプロセス(スレッド)を続行させることになります。
    • PGI Workstation ランタイム・ライブラリ DLLs と共に、-Mprof を使用しないでください。プロファイリングのための実行モジュールを構築するためには、スタティック・ライブラリを使用してください。基本的に、-Bdynamicがを使用しない限り、スタティック・ライブラリがデフォルトとなります。

  • PGDBGに関する制限事項
    • PGDBG-.so や.dll 等の shared ライブラリは、そのライブラリの中に含まれるコードがブレークポイントとしてセットされる前にロードされていなければなりません。
    • PGDBG は、スタティック・ライブラリで構築されている OpenMPI ライブラリを使用した OpenMPI プログラムのデバッグをサポートします。OpenMPI がダイナミック・ライブラリとして構築されている場合、多くのシェアード・ライブラリが openMPI プログラムによってロードされます。PGDBG のシェアード・オブジェクトの oad/unload イベントハンドラーの現在の実装では、OpenMPI のシェアード・オブジェクトをリンクしているMPIプログラムをデバッグすると、MPI_init らびに MPI_finalize は、非常に実行時間がかかります。したがって、OpenMPI イブラリを生成する際の config では、次のオプションを付けて生成したスタティック・ライブラリの openMPI を使用することを推奨します。
        --enable-static ?-disable-shared
    • PGDBG 8.0 リリースは、ランダムなアドレスを有効にするシェアード・ライブラリのローディングをサポートする新しい Linux システム上で、MPI プログラムのデバッギングをできます。
      ・ このモードが有効な時、PGDBG の現在の実装は、極めて多くのメモリを使用するため、その結果、性能が低下します。PGDBG MPIプログラムをデバッグする際は、PGI は現在、Linux カーネル上でこのモードを抑止することを推奨しています。このカーネルモードを抑止するにはルート権限で次のコマンドを実行してください。
        sysctl -w kernel.randomize_va_space=0
    • Fedora Core 6 or RHEL5 上でシェアード・ライブラリのロード認識においてPGDBG 内の問題により、MPICH-1 のデバッギングにおいて rank0 のプロセス以外のプロセスのブレーク・ポイントが無視されます。これは、ランダムなアドレスを有効にするシェアード・ライブラリのローディングを行っている時に生じます。
    • "pgserv" 環境の下で起動した MPI ジョブのデバッギング時に、プログラムの最初の実行文の前にジョブの進行が停止させられます。この時点でソースレベルのデバッグ情報が存在しないため、ソースレベルの次のコマンドを出すことは非常にゆっくりと実行します。遅くなります。これが完了するか、例外により止まるか、ユーザによって入力された PGDBG 停止コマンドによって止まるまで、ジョブを実行しなければならないことを回避するため、ユーザは、最初のブレークポイントをセットすべきです。フォートラン・プログラムがデバッグされている場合は、"continue" コマンドを出す前に実行パス上で、メイン、または MAIN_、あるいは別のポイントで最初のブレークポイントをセットしてください。
    • PGDBG-デバッグコマンドの watch 系のコマンドは、ローカル変数が対象の場合は信頼できません。Watch されるローカル変数のスコープ範囲内から関数、サブルーチンを呼ぶことが、イベントを見失うか、あるいは明確なイベントを誤る場合があります。もし、プログラムのスコーピング watch される変数のスコープ部分から離れていない場合、ローカル変数は正しく watch できます。グローバル、静的変数に対する watch コマンドは、常に正しいものを与えます。
    • PGDBG - Unified Binaries (-tp x64を付けて構築されたモジュール)のデバッギングは、フルにサポートされません。いくつかのサブプログラム名が unified binaries を生成する過程で変更されています。PGDBG は、アプリケーションのソースコード内で使用されているプログラム名とこれら変更された名前との間の変換を行いません。デバッグにおいては、Unified Binaries 生成オプションと付けずに、nativeなプロセッサターゲットで実行モジュールを生成してください。あるいは、Unified Binariesのデバッグを行う方法に関しては、http://www.pgroup.com/support/tools.htm に詳細な情報がありますので、ご参照下さい。
    • MPICH-1 のアプリケーションのデバッグ(mpirun -dbg=pgdbg ...) において、現在のディレクトリを含めて実行モジュール名を表記する、./ を指定しないでください。例えば、
       mpirun -dbg=pgdbg -np 4 ./a.out
      という形で実行モジュール名を指定すると、Linux カーネルモードの時に rank 0 以外のプロセスのブレーク・ポイントが失われる場合があります。これを解決する方法は、以下の形式で実行モジュール名を指定してください。
       mpirun -dbg=pgdbg -np 4 a.out
    • -mp を使用して生成された OpenMP プログラムが、SuSE9.0 システム上の複数プロセッサで並列実行した場合、極端に遅くなります。しかし、これと同じ実行モジュールが SuSE9.以上で動作させると期待される性能と効果が得られます。
    • PGPROF-PGI ランタイム・ライブラリ DLLs と共に、-Mprof を使用しないで下さい。プロファイリングのための実行モジュールを構築するために、静的ライブラリを使用してください。-Mdll オプションを使用していない場合は、デフォルトで静的ライブラリをリンクします。
    • PGDBG-デバッグコマンドの callコマンドは、次のF90/F95フィーチャをサポートしません:array-valued functions, pointer-valued, functions, assumed-shape array arguments, pointer arguments。 この問題に対する解決策はありません。
    • PGDBG -以前に run あるいは rerunである特定の I/O リダイレクションを行っているプログラムの実行後に、再度、引数のない run あるいは rerun を行うと、I/O 処理は、前の実行時の途中から継続されます。この問題は、stdout 等のファイルへ追加出力、stdin 等の入力ポイントがリセットされない等の予期せぬ結果を引き起こします。この制約は、I/O リダイレクトを伴う run あるいは rerun の後に行う shell コマンドに対しても同様な振る舞いとなります。

  • PGPROFに関する制限事項
    • -Mprof=func並びに-mcmodel=mediumあるいは-mpを一緒に使用した場合、生成された実行モジュールはセグメンテーション・フォールトが生じます。これらのオプションを同時に使用することは避けてください。
    • gprofスタイルのプロファイリング機能(-pg)を使用してコンパイル・リンクしたプログラムは、2.6.4 Linuxカーネルのシステム上でセグメンテーション・フォールトが生じます。
    • マルチスレッドのサンプルベースのプロファイル機能(gprofスタイルのプロファイリング:-pgあるいは、-Mprof=timeオプション)でレポートされる時間は、マスタ・スレッドだけのものとなっています。一方、PGI形式のプロファイリング(-Mprof=lines|func)あるいはハードウェア・カウンタ・ベースプロファイリング(-Mprof=hwcts) あるいは、pgcollectは、個々のスレッドあるいはプロセスの時間データを個別に取得するために使用されます。
  • ドキュメントの訂正 (PGPROF) PGI 8.0-3リリース時、追加
    • PGI Tools Guide において、PAPI モジュールを使用したハードウェア・カウンターをベースとしたプロファイリング機能(-Mprof=hwcts) は、PGI コンパイラのリリース時の PAPI のバージョンをサポートする旨の記述がありますが、これは誤りです。現在 PGI 8.0(7.2)においては、PAPI の最新バージョン 3.6 をサポートしておりません。今後のリリースにおいてサポートする予定です。

※文中で使用されている商品名、名称は、各社の商標あるいは登録商標です

(C) SofTek Systems, Inc. 2009

ライセンスの更新に関する FAQ
現在サブスクリプション契約期間中であるお客様は無償でバージョンアップが可能です。是非、この機会に性能が向上した新 8.0 リリースをご利用くださいますようお願いいたします。

  • コンパイラ製品のバージョンの見方と調べ方

    製品バージョンの表し方は、メジャーマイナーおよびバグフィックスの 3 種類となります。最初の1 桁目がメジャーバージョン、2 桁目がマイナーバージョン、最後のハイフォンで続く数字がバグ・フィックス番号となります。サブスクリプション契約を行っていないお客様に関しては、購入時のマイナーバージョンの以降のバグ・フィックスに関しては無償でソフトウェアを入手することができます。
      (例) version 8.0-2
           8 : メジャーバージョン番号
           1 : マイナーバージョン番号
           2 : バグ・フィックス番号

    現在所有している PGI コンパイラのバージョンを調べるには、以下のコマンドを実行してください。
       $ pgf77 -V
        pgf77 8.0-2 <--- バージョンを表す
        Copyright 1989-2000, The Portland Group, Inc. All Rights Reserved.
        Copyright 2000-2009, STMicroelectronics, Inc. All Rights Reserved.

  • 今所有しているライセンスで新バージョンが動作しますか?

    PGI のライセンス・ファイル (license.dat) には、3.0、3.1、3.2、3.3、4.0、4.1、5.0、5.1、5.2 、6.0、6.1、6.2、7.0、7.1、7.2 あるいは 8.0 と言った動作可能なバージョンを示すフィールドを持っています。現在、所有しているライセンスファイルの中のフィールドが現在、動作可能な最も高いリリース番号となります。最新のリリースを動作させるためには、最新リリース番号へのフィールド値の更新が必要です。年間サブスクリプション契約(ソフトウェア情報パッケージ購入)を行っているお客様は、ライセンスの発行サイトにおいて、新ライセンスを取得して、 license.dat の内容を変更してください。バージョンアップがサブスクリプション契約期間内で行われた場合、ライセンス発行サイト上で表示されるライセンスは自動的に更新されたものとなっていますので、この内容をコピーして、システム上の license.dat の内容を更新すると新リリース用のライセンスファイルとなります。(もちろん、新しいリリース・ソフトウェアは、インストールされていることが前提です)

======== (License.dat の例 : Release 8.0 の場合) =================
SERVER photon0 0002b32c36ba 27000
DAEMON pgroupd
PACKAGE pgi80-server-complete pgroupd8.0 ACF229192811 \
COMPONENTS="pgi-hpf-lin64:8.0 pgi-f95-lin64:8.0 \
pgi-f77-lin64:8.0 pgi-cc-lin64:8.0 pgi-cpp-lin64:8.0 \
pgi-hpf-lin32:8.0 pgi-f95-lin32:8.0 pgi-f77-lin32:8.0 \
(中略)
FEATURE pgi72-server-complete pgroupd8.0 31-dec-0 2 8355F01C7AD3 \
VENDOR_STRING=512349:16:ws DUP_GROUP=U SUITE_DUP_GROUP=U \
BORROW=336 TS_OK SIGN="0E79 CD28 B097 9765 8022 9A26 7008 7CE0 \
FAD6 1AC0 44B5 7309 13A6 9183 91EA 1371 BFB7 D294 FF29 DF3B \
9E16 ED8A 7583 6A59 1D77 9089 FC27 CF92 B78F 0D58"
======== (License.dat の例 : Release 8.0 の場合) =================

  • 一方、例えば新規購入で、リリース 8.0-1 のライセンスを取得していれば、その後のバグ・フィックスのリリースである 8.0-2、8.0-3 等の製品はサブスクリプション契約なしでも使用可能です。なお、ライセンスファイルのバージョン・フィールドの数字より前のコンパイラリリース製品は、問題なく動作します。

ライセンス発行の手順に関しては、こちらをご覧ください。

  • 現在の自分のライセンス情報をどのように調べればよいでしょうか?

現在の自分が所有しているライセンス情報は、ライセンス発行サイトにてオンラインで入手が可能です。お客様のWebアカウントでログインした後、"Manage PGI Products" --> "PIN Management" の画面になりますので、PIN番号のボタンをクリックすると、ライセンス情報、サブスクリプション期間終了日等がが表示されます。

  • 「年間サブスクリプション契約(ソフトウェア情報パッケージ)」とは何ですか?

年間サブスクリプション契約がなされているお客様は、製品のマイナーバージョンアップ時の新しいライセンスを得る権利を有します。製品のライセンスを新規に購入し、同時に年間サブスクリプション料金をお支払いただいた場合、1年以内の最新のリリースに対するアップグレードが可能となります。年間サブスクリプションをご購入いただいていないお客様は、購入の後に50日以内のバージョンアップ・リリースに対しては、新リリースのライセンス更新が可能です。なお、サブスクリプション契約を行っていないお客様が、その後、新バージョン用のライセンスの取得を行いたい場合、サブスクリプション契約空白期間も含めたサブスクリプション料金をお支払いただくことにより、新ライセンスの取得が可能となります。

  • お客様のアクセスコード(ユーザID、パスワード)を紛失あるいは忘れた方へ

お客様のお名前、組織名、ソフテック製品出荷ID をお書き添えいただき、support@softek.co.jp へその旨、お知らせください。アクセスコードを再度メールにてお送りいたします。



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

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