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



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



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


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

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

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

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

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


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

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

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


PGI の最新 7.2 リリースは、
新型クアッドコア AMD Opteronプロセッサ上で
x64 ベンチマーク性能の新記録を達成


Version 7.2 の詳細 (2008年5月 /update 7月11日)

PGI® 7.2 のリリース・ノートの詳細版は、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.1 と同様に、32ビット x86 系のプロセッサ並びに 64ビットの AMD64、Intel(R) 64 のプロセッサに対応します。PGI 7.2 において、サポートする CPU は以下の表のとおりです。
新たに、インテル社のクアッドコア・プロセッサ Penryn プロセッサ用の最適化をサポートしました。

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

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 Fedora Core 8, 9 が追加されております。 Linux PGI コンパイラがサポートする Linux Distributions に関しては、こちらをご覧ください



PGI 7.2 MPICH ライブラリ機能

【MPIプロセスのデバッギング機能とプロファイル機能】

  • MPICH-1 ライブラリ (version 1.2.7) は、製品の中にバンドルしております (Linux 版のみ)。
  • Linux 版の PGDBG/PGPROF は、ローカル上(同一システム上)での 4 プロセスまでの MPICH-1 プロセス・デバッギング並びにプロファイリングが可能となります。一方、PGI CDK 製品は、ローカル並びにリモート MPI プロセス(MPICH-1、MPICH-2、MVARPICH) に対応し、その上限プロセス数は、購入ライセンスの「PGI CDKプロセス数」まで対応します。
  • Windows 版の PGDBG/PGPROF は、Microsoft Windows CCS クラスタ上で実行する MSMPI 並列プログラムのデバッギングとプロファイリング機能を有します。

PGI 7.2 コンパイラの新機能、特長等

 本 PGI 7.2のリリースは、主に性能強化のための改良となります。
  • 性能の向上− いくつかの標準ベンチマークや研究コミュニティ・コード、ISVコードのベンチマークの測定において、性能向上を達成しました。詳細は、http://www.pgroup.com/benchmarkに記載しいております。
  • ACML 4.1-0− AMD社の最新のACMLライブラリ 4.1-0をバンドルしました。
  • OpenMP− static/guided schedulingの性能向上のために、OpenMPの並列ループの分割を発見的なロジックで行うように修正されました。
  • OpenMP− OpenMPのランタイムルーチンにおける並列時のmutex/semaphore(同期)処理の効率化を図りました。
  • OpenMP− OpenMP パラレル・リージョンの中で、さらに追加的にインライン化を行えるように強化を図りました。
  • Fortran Automatic 変数− Fortranの自動変数の生成・削除の効率を向上させました。
  • NUMAサポート強化− ?Msmartalloc=hugeオプションを指定して、large page(2MB)の使用を組み合わせたNUMAサポートを行うことができるようになりました。
  • Thread Local Storageの導入− いくつかのOpenMP並列ランタイムルーチンの効率化による性能向上を図るために、TLS(Thread Local Storage) の使用を導入しました。
  • Vector packed SIMD code− OpenMPパラレル・リージョンの中でvector packed SIMD コードの効果を強化しました。
  • 新プロセッサ・サポート− インテルR Penrynプロセッサのための最適化とインストラクションのサポートを追加しました。Penrynクラスのプロセッサを搭載したシステム上でコンパイルを行うと自動的にプロセッサを認識し、その最適化を行うことができます。あるいは、コンパイル・オプションで ?tp penryn と言うターゲットを明示的に指定することで、penryn用の最適化モジュールを作成することができます。。 
  • CVF互換性− 32ビットWindows 版のPGI Fortranコンパイラに、CVF互換 /iface:cref 関数をサポートしました。また、一般的な引数、文字型引数に対して、CVFスタイルの引数の渡し方のコンベンションを使用できるようにしました。CREFには、参照による引数の引き渡し、対応した文字型引数の後に、隠れた長さ(hidden length)を引き渡すこと、さらに、アンダースコアのプリフィックスに続きアッパーケースとして外部名を現すこと、呼び出し側(caller)がスタックをクリーンアップできること等々のサポートを追加しました。なお、CREFを使用している場合は、オプション-Mnames=lowercaseを使用します。
  • CVF互換属性− CVF互換属性!DEC$ ATTRIBUTE nomixed_str_len_arg をサポートしました。この属性は、-Munixオプションを使用するための方法において、隠れた長さ(hidden length)がリストの最後に順番に置かれているということを指定するものです。注意:この属性は、CREF形態のルーチン、あるいは、デフォルトのWindows callingのコンベンションを使用する場合にのみ適用できます。
  • OpenMP Threadprivate− OpenMP Threadprivate変数のためのデバッギング・サポートを追加しました。
  • Microsoft Open Tools 9− Microsoftの新バージョンMicrosoft Open Tools 9 をWindows版にバンドルしました。デフォルトで、このバージョンが使用されます。
  • 18 additional CVF-compatible DFLIB and DFPORT− 以下のルーチンをサポートしました。
    dflib ? delfilesqq, findfileqq, fullpathqq, getfileinfoqq,
    getfileinfoqqi8, packtimeqq, setfiletimeqq, setfileaccessqq,
    setfiletimeqq, splitpathqq, unpacktimeqq.
    dfport− erf, erfc, derf, derfc, fstat64, lstat64, stat64.
  • SSEベクトル化の拡張− 間接アドレッシングの gather インデックス配列を有するループは、ベクトル化できるようになりました。FMAX, FMIN, DMAX, DMIN リダクション演算もベクトル化できるようになりました。

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


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

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

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

    しかしながら、新しいコンパイラ・オプションである -noswitcherror を指定すると、従来のように、未知のオプション(スイッチ)が指定された場合、エラーで停止するの代わりに「警告」を出すように変更できます。
    次のオプションは、PGI 7.2から追加あるいは、修正されたものです。
  • -drystdin− 標準インクルード・ディレクトリを出力して終了します。
  • -Minfo=intensity[:<n>] −ループ内の「演算密度」(Computational Intensity)を表示します。サブオプション<n>を指定すると、その(多重)ループレベルまでの情報を表示します。デフォルトは、最内側ループの情報が表示されます。演算密度とは、一般にループ内の演算数とメモリのロード・ストア数との比率を表し、演算とメモリ参照のバランスを見るための指標です。このような情報はパフォーマンス・チューニングにおいて特に重視されます。
     ・ ループ内の演算が浮動小数点演算である場合、演算密度は、浮動小数点演算総数を浮動小数点データのメモリロードとストアの総和で割った比率として定義します。
     ・ ループ内の演算が整数演算である場合、演算密度は、整数演算総数を整数データのメモリロードとストアの総和で割った比率として定義します。
    以下は、Linux上で実施した例です。(現在、Linux版のみ実装)
    ループ内の間接アドレッシングのベクトル化
    
    kato@photon26:~/Himeno> pgf90 -Minfo=intensity:3 -fastsse himenoBMTxp.f90
    
    jacobi:
       293, Intensity = 1.062
                         single add:n1*21) mul:n1*13) ld:n1*31) st:n1*1)
                        integer add:2+n2*(2+n1*1)
       294, Intensity = 1.062
                         single add:n1*21 mul:n1*13 ld:n1*31 st:n1*1
                        integer add:2+n1*1
       295, Intensity = 1.062
                         single add:21 mul:13 ld:31 st:1
                        integer add:1
    
    ---
    PGF90 (Version      7.2)          05/19/2008  20:31:17      page 1
    (  291)   do loop=1,nn
    (  292)      gosa= 0.0
    (  293)      do k=2,kmax-1
    (  294)         do j=2,jmax-1
    (  295)            do i=2,imax-1
    (  296)               s0=a(I,J,K,1)*p(I+1,J,K) &
    (  297)                    +a(I,J,K,2)*p(I,J+1,K) &
    (  298)                    +a(I,J,K,3)*p(I,J,K+1) &
    (  299)                    +b(I,J,K,1)*(p(I+1,J+1,K)-p(I+1,J-1,K) &
    (  300)                                -p(I-1,J+1,K)+p(I-1,J-1,K)) &
    (  301)                    +b(I,J,K,2)*(p(I,J+1,K+1)-p(I,J-1,K+1) &
    (  302)                                -p(I,J+1,K-1)+p(I,J-1,K-1)) &
    (  303)                    +b(I,J,K,3)*(p(I+1,J,K+1)-p(I-1,J,K+1) &
    (  304)                                -p(I+1,J,K-1)+p(I-1,J,K-1)) &
    (  305)                    +c(I,J,K,1)*p(I-1,J,K) &
    (  306)                    +c(I,J,K,2)*p(I,J-1,K) &
    (  307)                    +c(I,J,K,3)*p(I,J,K-1)+wrk1(I,J,K)
    (  308)               ss=(s0*a(I,J,K,4)-p(I,J,K))*bnd(I,J,K)
    (  309)               GOSA=GOSA+SS*SS
    (  310)               wrk2(I,J,K)=p(I,J,K)+OMEGA *SS
    (  311)            enddo
    (  312)         enddo
    (  313)      enddo
  • -Mipa=jobs:n− -Mipaオプションは、jobs:[n]サブオプションを指定できるようになりました。このサブオプションは、並列にnジョブで再コンパイルを行うように指示するものです。
  • -Mmpi=mvapich1− デフォルトのMVAPICH通信ライブラリを使用するように指示するものです。このオプションは、PGI CKのみに有効です。
  • -Mnames=lowercase|uppercase− Fortran外部関数名の大文字/小文字を指定するものです。Lowercaseの場合は、小文字を使用すると言う意味となり、upperecaseは大文字を使用すると言う意味となります。
  • -Mpfi[=indirect]− -Mpfiオプションは、間接的(indirect)な関数呼び出しターゲットを保持することを指示するためのindirectサブオプションです。
  • -Mpfo[=indirect|nolayout]− ?Mpfoオプションは、新しいサブオプションであるindirectとnolayoutを新設しました。Indirectサブオプションは、間接的な関数呼び出しのインライン化を有効にするもので、nolayoutは、動的なコード配置を抑止するものです。
  • -Mpre[=all]− サブオプションを付けない?Mpreオプションは、一部の冗長部削除を有効にします。サブオプションall を付けた場合、よりアグレッシブなpre処理を行います。
  • -Mprof=[mvapich1]− −Mprofオプションは、mvapich1サブオプションを有効にしました。これはプロファイル時にmvarpich1通信ライブラリを使用できるようにするものです。このオプションを使用すると-Mmpi=mvapich1の指定を内包したことになります。
  • -Mvect[=[partial]− −vectオプションは、最内側ループの分離によるループのベクトル化を有効にするように指示するサブオプション、partialを新設しました。
  • -Mwritable-strings− 書き込み可能なデータセグメント内にstring constantをストアできるようにします。(注意)既存の-Xt並びに-Xsは、本オプションを含みます。
  • -Mrpath − (Linux only)ldarg情報をリンカに渡します。そして、ランタイム検索パスにそのディレクトリを加えます。
  • -Mtp=[barcelona-32|core-32|p7-32|penryn|penryn-32|penryn-64|px-32] − 新たにターゲット指定オプションに以下のサブオプションが加わりました。 barcelona-32 は、?tp barcelonaと同じ core2-32は、 tp core2と同じ p7-32 は、?tp p7と同じ penryn は、Intel Penryn Architecture, 32ビットモード penryn-32は、 tp penrynと同じ penryn-64は、 Intel Penryn Architecture, 64ビットモード px-32は、?tp pxと同じ 次のオプションは、Microsoft Windows プラットフォーム用に加わったものです。 ・ ?Miface=unix|cref|mixed_str_len_arg|nomixed_str_len_arg−サブオプション?MifacはFortranのための呼び出しルール(コンベンション)を調整するものです。 unix - Use UNIX calling conventions,語末のアンダースコアがないタイプ cref - Use CREF calling conventions, 語末のアンダースコアがないタイプ mixed_str_len_arg ? 文字列の長さをその対応する引数の直後に置くタイプ nomixed_str_len_arg ?文字列の長さを引数リストの最後に置くタイプ ・ ?Mlargeaddressaware[=no]−Windows用に64bitアドレス・インデックシングと単一のデータオブジェクトのサイズが2GB以上使用できるようにするものです。(2008年5月現在、弊社の試験によるとまだ機能しておりません)

PGDBG(デバッガ)の新機能等

PGI Workstation/Server 7.2は、PGI 7.1で導入された以下の新機能をサポートしております。

  • PGDBG 7.2 は、PGDBG が動作する同じシステム上で動く MPICH-1 の 4 つのプロセスまでのアプリケーション・デバッグがでます
  • PGDBG 7.2 (Windows版)は、Microsoft(R) Windows CCS クラスタ上で動作する MSMPI アプリケーションのデバッギングをサポートします。
  • PGDBG 7.2 は次の機能の強化を行いました。

       ・ スタックトレース機能の向上
       ・ Microsoft(R) Visual C++ との互換性をより強化しました
       ・ gcc/g++ との互換性をより強化しました
       ・ 高速な disassebly と全体の性能向上

PGPROF(プロファイル)の新機能等

PGI Workstation/Server 7.2 は、PGPROF 並列プロファイラの中で、いくつかの新しい機能の追加と機能強化を行いました。

  • PGPROF 7.2 は、集合通信ルーチンも MPI プロファイリングをサポートします。
  • PGPROF 7.2 は、(Windows版) は、Microsoft(R) Windows CCS クラスタ上で動作する MSMPI アプリケーションのプロファイリングをサポートします。
  • PGPROF 7.2 は、いくつかの GUI の向上を行いました。


Linux上でのMPICHプログラムの実行

PGI Workstation/Server 7.2 for Linux は、MPICHライブラリ、ツールを製品の中にバンドルし、さらに、MPIプログラムをコンパイルし、実行、デバッグ、プロファイリングを行うためのライセンスを含む形となりました。PGI Workstationは、一つのシングルノード上にインストールされ、そのノードは、あたかもクラスタのように扱われます。MPIデバッガ&プロファイラは、PGI Workstation / Server ライセンスでは、一つのノード上のみのプロセス分析に制約されますが、PGI CDKライセンスでは、ローカル、リモートを問わず、一般的なクラスタ上での開発ツールとして使用することが可能です。PGI Tools Guide は、MPIを利用する際のツールの利用法について詳細に説明しております。

※ PGI MPI プログラム開発用コンパイル・オプション、ツールの使用方法のページを新設しました。

  • PGIPROF は、グラフィカル MPI/OpenMP/マルチスレッド対応の性能解析プロファイラ
  • PGDBG は、グラフィカル MPI/OpenMP/マルチスレッド対応のシンボリック・デバッガ
  • 32ビット/64ビット MPICH MPI ライブラリ、バージョン1.2.7 開発環境(Linuxのみ)

  • 一般的なMPIプログラムの実行モジュール生成は、以下のようなコンパイル・オプションで、MPICHのインクルードファイルの取り込みとMPICHライブラリがリンクできるようになります。MPIプログラムのデバッグを行う際は、mpirun コマンドの引数に-dbg=pgdbgを追加指定してください。PGDBGのGUI表示が現れます。
    % pgf77 -o mpihello mpihello.f -Mmpi(コンパイル)
    % 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 Workstation 7.2 for Apple Mac OS

PGI Workstation 7.2 for Mac OS X は、linux86 並びに linux86-64 に対する 32 ビット、64 ビットの機能・特徴のほとんどをサポートします。このリリースノートで注意として記されたもの以外は、MacOS 機能上の PGI コンパイラとツールは、Linux のものと同一です。


 Mac OSデバッギング

(注意) 技術的な問題により、現リリースでは、 MAC OS X 上の PGDBG デバッガは、サポートされません。 PGI 社は Apple社と共に、この問題の解決を図っております。できるだけ早く、今後のソフトウェアの中に組み込めるように計画しております。

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 のディレクティブとプラグマ
  • -tp スイッチは、コンマ(,)で区切られた複数のプロセッサ Target リストを指定する形態をサポートしました。二つ以上の 64-bit ターゲットに対しての PGI Unified Binary としての最適化(例: -tp k8-64e,p7-64,core2-64 と指定すると三つのターゲットに最適化されたコードを生成します)を指示することができます。-tp x64オプションの場合は、-tp k8-64,p7-64 と等価となります。
  • PGI Unified Binary 指示用のディレクティブ、プラグマが新設されました。これらは、コンパイラに対して、一つ以上のターゲット用の Unified Binary 最適化コードを関数、サブルーチン、ファイル全体に対して生成するように指示するものです。ディレクティブを指示した場合は、特別のコマンドライン・オプションは必要ありません。

Fortran ディレクティブの書式は、以下のとおりです。

 !pgi$[g|r| ] pgi tp [target]...

ここで、ディレクティブが有効となるスコーピングの範囲は、g(global)、r(routine)、あるいは空白で指示します。デフォルトは、r(routine) 単位となります。例えば、

 !pgi$g pgi tp k8_64 p7_64

は、全体のソースファイルに対して( g(global) でスコーピングを指示している)、k8_64 並びに p7_64 用の最適化を施した Unified Binary を生成すると言う意味となります。

C/C++のプラグマの書式は、以下のとおりです。

 #pragma [global|routine|] tp [target]...

ここで、ディレクティブが有効となるスコーピングの範囲は、g(global)、r(routine)、あるいは空白で指示します。デフォルトは、r(routine) 単位となります。

 #pragma routine tp k8_64 p7_64 core2_64

これは、次の function/routine に対して、k8_64、p7_64、core2_64用の Unified Binary を生成すると言う意味となります。

環境モジュール(Environment Modules)の使用
  • Linux 環境における Environment Modules パッケージ(例えば、the module load command) を使用しているユーザに対して、該当するモジュールファイルをセットアップするためのスクリプトを提供しました。 PGIコンパイラをインストールしたディレクトリ /opt/pgi、そしてMODULEPATH環境変数の値を /usr/local/Modules/modulefiles と仮定した場合、次のコマンドを実行してください。

    /opt/pgi/linux86/7.2-1/etc/modulefiles/pgi.module.install -all -install /usr/local/Modules/modulefiles

    このコマンドは、インストールされているPGIコンパイラの全てのバージョンに対するモジュールファイル(module files) を作成します。 modulefiles ディレクトリには、writeパーミッションを与える必要があります。これによって、moduleコマンドを有効化します。

     module load pgi32/7.2
     module load pgi64/7.2
     module load pgi/7.2

    ここで、pgi/7.2は、32ビットシステム上では32ビットのコンパイラを、64ビットシステム上では、64ビットコンパイラを使用すると言う意味となります。何のバージョンが有効かを見るためには、以下のコマンドを使用してください。
      Module avail pgi
  • Module loadコマンドは、次のような環境変数をセット、あるは修正することができます。
    PGI the base installation directory
    CC full path to pgcc
    FC full path to pgf90
    F90 full path to pgf90
    F77 full path to pgf77
    CPP full path to pgCC
    CXX path to pgCC
    C++ path to pgCC
    PATH prepends the PGI compiler and tools bin directory
    MANPATH prepends the PGI man page directory
    LD_LIBRARY_PATH prepends the PGI library directory

    Environment Modules パッケージ自身は、PGI 製品のサポートの範囲外ですので、詳細については、以下のURLをご覧ください。 (http://modules.sourceforge.net

REDIST ディレクトリ

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

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

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

  • $PGI/linux86/7.2/REDIST
  • $PGI/linux86-64/7.2/REDIST
  • $PGI/win64/7.2-1/REDIST
  • $PGI/win32/7.2-1/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に準拠し、このディレクトリ内のファイルを再配布することができます。

既知の制限事項

  • PGDBG 7.2-1リリースは、ランダムなアドレスを有効にするシェアードライブラリのローディングをサポートする新しいLinuxシステム上で、MPIプログラムのデバッギングをできるようにしました。
    ・ このモードが有効な時、PGDBGの現在の実装は、極めて多くのメモリを使用するため、その結果、性能が低下します。PGDBGを使用してMPIプログラムをデバッグする際は、PGIは現在、Linuxカーネル上でこのモードを抑止することを推奨しています。このカーネルモードを抑止するにはルート権限で次のコマンドを実行してください。

         sysctl -w kernel.randomize_va_space=0
  • Fedora Core 6 or RHEL5 上でシェアードライブラリのロード認識においてPGDBG内の問題により、MPICH-1のデバッギングにおいてrank0のプロセス以外のプロセスのブレーク・ポイントが無視されます。これは、ランダムなアドレスを有効にするシェアードライブラリのローディングを行っている時に生じます。
  • (PGI 7.2-3) MPICH-1のアプリケーションのデバッグ(mpirun -dbg=pgdbg ...) において、現在のディレクトリを含めて実行モジュール名を表記する、./ を指定しないでください。例えば、
      mpirun -dbg=pgdbg -np 4 ./a.out
    という形で実行モジュール名を指定すると、Linux カーネルモードの時に rank 0 以外のプロセスのブレークポイントが失われる場合があります。これを解決する方法は、以下の形式で実行モジュール名を指定してください。
      mpirun -dbg=pgdbg -np 4 a.out
  • -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" オプションをリンク時のコマンド列に追加してください。
  • "pgserv" 環境の下で起動した MPI ジョブのデバッギング時に、プログラムの最初の実行文の前にジョブの進行が停止させられます。この時点でソースレベルのデバッグ情報が存在しないため、ソースレベルの次のコマンドを出すことは非常にゆっくりと実行します。遅くなります。これが完了するか、例外により止まるか、ユーザによって入力された PGDBG 停止コマンドによって止まるまで、ジョブを実行しなければならないことを回避するため、ユーザは、最初のブレークポイントをセットすべきです。フォートラン・プログラムがデバッグされている場合は、"continue" コマンドを出す前に実行パス上で、メイン、またはMAIN_、あるいは別のポイントで最初のブレークポイントをセットしてください。
  • PGI 7.2 で生成されたオブジェクトあるいはモジュールは、PGI 5.x 並びにそれ以前のリリースのオブジェクト、モジュールとは互換性がありません。
  • PGI 6.1 並びにそれ以前のリリースにおいて -Mipa オプションを付加して作成されたオブジェクトファイルは、PGI 7.2 上で再コンパイルが必要です。
  • 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
  • -i8 オプションの使用において、プログラムを MPI ライブラリととともに使用する場合、互換性がありません。Integer*8 配列の引数の使用により、これらのライブラリと共に使用する場合、異常終了します。
  • -i8 オプションを使用するプログラムにおいて、PGI コンパイラにバンドルしている ACML ライブラリと共に使用する場合、互換性がありません。このオプションの互換ライブラリに関しては、developer.amd.com をご参照ください。
  • Apple Mac OS プラットフォーム上では、 PGI Workstation 7.1 コンパイラは、ユーザバイナリの静的リンク(Static linking) をサポートしません。今後の Apple 社のアップデートとの互換性のために、コンパイラは、ユーザバイナリのダイナミック・リンク方式(Dynamic linking) をサポートします。
  • -mcmodel=medium オプションを使用してコンパイルされたオブジェクトを組み込んだプログラムは、静的にリンクされることはできません。これは、linux 86-64 環境における制約事項であり、PGI コンパイラによる制約事項ではありません。
  • PGCC の-Mipa=libopt と -Mipa=vestigial オプションを同時に使用した場合、リンク時に未解決な参照が生じる場合があります。これは、-Mipa にサブオプション vestigial を付加することにより、エラーとなる関数が削除されるために起こります。この場合は、vestigial を付加せずに、-Mipa のみの指定で対処してください。
  • -Mprof=func ならびに -mcmodel=medium あるいは -mp を一緒に使用した場合、生成された実行モジュールはセグメンテーション・フォールトが生じます。これらのオプションを同時に使用することは避けてください。
  • gprof スタイルのプロファイリング機能(-pg)を使用してコンパイル・リンクしたプログラムは、2.6.4 Linux カーネルのシステム上でセグメンテーション・フォールトが生じます。
  • -mp を使用して生成された OpenMP プログラムが、SuSE9.0 システム上の複数プロセッサで並列実行した場合、極端に遅くなります。しかし、これと同じ実行モジュールが SuSE9. 以上で動作させると期待される性能と効果が得られます。
  • ACML4.1.0 ライブラリは、-cache_align を含んだ -fassse コンパイルオプションを使用して構築されております。32-bit ターゲットシステム上で、-lacml オプションを使用して ACML ライブラリをリンクする際に、必ず、全てのプログラムに -cache_align もしくは、このオプションを含む複合オプションである -fastsse を付加してコンパイル/リンクを行ってください。64-bitターゲットシステム上では、デフォルトでスタック16byte アラインメントであるため、この問題は生じません。なお、性能が多少劣りますがポータビリティの良い libblas.a と liblapack.a ライブラリは、SSE 命令を有していないプロセッサ上で使用することができます。
  • -Mpfi と -mp を同時に使用することはサポートされていません。-Mpfi オプションは、コンパイル時に -mp を抑止しますが、それは、プログラムの中の OpenMP ディレクティブ/プラグマの解釈に依存してプログラムの実行時にエラーを引き起こすことになります。OpenMP に依存しないプログラムは、正確にprofile feedback を使用することができます。-Mpfo オプションは、OpenM P処理を抑止します。
  • Windows 上で、デバッギングのためにビルドされたランタイム・ライブラリ(例 msvcrtdとlibcmtd)は、PGI Workstation には含まれていません。デバッグ用途のために、-g オプションを付けてコンパイルするとき、PGIランタイム・ライブラリと Microsoft のランタイム・ライブラリの両方の標準的な non-debug バージョンがいつも使用されます。この制約は、アプリケーションコードのデバッギング時にのみに影響します。
  • Dynamic Link Libraries(DLLs) は、PGI 7.2 によって Microsoft Windows プラットフォーム上で構築することができます。但し、次の制約があります。
    ・ DLLs は、PGI C++ コンパイラでは生成することはできません。
    ・ もし、DLLs が PGI コンパイラにより構築された場合、ランタイム DLLs が必要となります。コンパイラ・オプション -Mmakedll は、正確なランタイム・ライブラリが使用されることを保証するためのものです。
    ・ もし、実行モジュールが PGI コンパイラでコンパイルされた DLLs とリンクされているものならば、PGI ランタイム・ライブラリ DLLs を使用しなければなりません。この場合は、デフォルトで使用される静的ライブラリを使用することができないからです。これを実現するためには、実行モジュールを作成する時にPGI 7.1
  • から導入された -Bdynamic オプションを使用してください。
  • PGPROF− PGIラ ンタイム・ライブラリ DLL sと共に、-Mprofを使用しないで下さい。プロファイリングのための実行モジュールを構築するために、静的ライブラリを使用してください。-Mdll オプションを使用していない場合は、デフォルトで静的ライブラリをリンクします。
  • マルチスレッドのサンプルベースのプロファイル機能( gprofスタイルのプロファイリング:-pgあるいは、-Mprof=time オプション)でレポートされる時間は、マスタ・スレッドだけのものとなっています。一方、PGI 形式のプロファイリング -Mprof=lines|func) あるいはハードウェア・カウンタ・ベースプロファイリング(-Mprof=hwcts) は、個々のスレッドあるいはプロセスの時間データを個別に取得するために使用されます。
  • PGDBG−デバッグコマンドの watch 系のコマンドは、ローカル変数が対象の場合は信頼できません。Watchされるローカル変数のスコープ範囲内から関数、サブルーチンを呼ぶことが、イベントを見失うか、あるいは明確なイベントを誤る場合があります。もし、プログラムのスコーピングが watch される変数のスコープ部分から離れていない場合、ローカル変数は正しく watch できます。グローバル、静的変数に対するwatchコマンドは、常に正しいものを与えます。
  • 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 コマンドに対しても同様な振る舞いとなります。
  • PGDBG−.soや .dll 等の shared ライブラリは、そのライブラリの中に含まれるコードがブレークポイントとしてセットされる前にロードされていなければなりません。
  • PGDBG - Unified Binaries (-tp x64を付けて構築されたモジュール)のデバッギングは、フルにサポートされません。いくつかのサブプログラム名が unified binaries を生成する過程で変更されています。PGDBG は、アプリケーションのソースコード内で使用されているプログラム名とこれら変更された名前との間の変換を行いません。デバッグにおいては、Unified Binaries 生成オプションと付けずに、native なプロセッサターゲットで実行モジュールを生成してください。あるいは、Unified Binaries のデバッグを行う方法に関しては、http://www.pgroup.com/support/tools.htm に詳細な情報がありますので、ご参照下さい。
  • PGDBG Windows−Windows 上の PGDBG においては、一般にディレクトリ・パス名を区切るためにバックスラッシュ文字("\" )を使用します。PGDBG は、C 言語の数式表示として、バックスラッシュをエスケープ文字の意味として使用します。一方、Windows プラットフォームにおけ るPGDBG は、ディレクトリ・パス名を区切るためにフォワードスラッシュ文字("/")を使用してください。但し、この事項は DEBUG コマンド、あるいはコマンドライン上の実行モジュール名には適用されません。(但し、このコンベンション自体は、これらのコマンドにおいても動作します)
  • PGDBG SFU/SFA−オペレーティングシステムのサポートがないために、SFU/SUA システム上のPGDBGは、ハードウェア watchpoint(hwatchコマンド)をサポートしていません。
  • PGDBG SFU/SFA−オペレーティングシステムの制約により、32bit SUA 上のプログラムだけが PGDBG のマルチスレッドのデバッギングが可能です。但し、一つ制約があり、一度ストップすると、プロセスは全てのスレッド、あるいは、シングルスレッドの続行(スレッドの部分的なセットの続行ではなく)をしなければ、プロセスの続行ができません。スレッドの部分的なセットの続行は、結果として全てのプロセス(スレッド)を続行させることになります。

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

    (C) SofTek Systems, Inc. 2008

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

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

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

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

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

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

======== (License.dat の例 : Release 7.2 の場合) =================
SERVER photon0 0002b32c36ba 27000
DAEMON pgroupd
PACKAGE pgi72-server-complete pgroupd 7.2 ACF229192811 \
COMPONENTS="pgi-hpf-lin64:7.2 pgi-f95-lin64:7.2 \
pgi-f77-lin64:7.2 pgi-cc-lin64:7.2 pgi-cpp-lin64:7.2 \
pgi-hpf-lin32:7.2 pgi-f95-lin32:7.2 pgi-f77-lin32:7.2 \
(中略)
FEATURE pgi72-server-complete pgroupd 7.2 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 7.2 の場合) =================

  • 一方、例えば新規購入で、リリース 7.2-1 のライセンスを取得していれば、その後のバグ・フィックスのリリースである 7.2-2、7.2-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.