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



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



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


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

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

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

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

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


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

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

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


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


Version 7.1 の新機能、特徴 (2007年10月)

 Release 7.1 PGI Compiler Features and Performance (主な新規機能、特長について)

  • (NEW) MPI 対応デバッガ/プロファイラの搭載 : Linux 版の PGDBG/PGPROF は、ローカル上(同一システム上)での 4 プロセスまでの MPICH-1 プロセス・デバッギング並びにプロファイリングが可能となりました。
  • (NEW) Windows(R) MPMPI 対応デバッガ/プロファイラ搭載 : Windows 版の PGDBG/PGPROF は、Microsoft Windows CCS クラスタ上で実行する MSMPI 並列プログラムのデバッギングとプロファイリング機能を有します。
  • (NEW) MPICH-1 ライブラ (version 1.2.7) が製品の中にバンドルされました (Linux 版のみ)。
  • (NEW) 製品ライン、対応プラットフォームの拡張
    • PGI Workstation for Mac OS 10.4.9 and 10.5 (Leopard)
    • PGI Server クロスプラットフォーム製品 (Linux, Mac OS, Windows/SUA) 追加
    • PGI Visual Fortran Server フローティングライセンス製品追加
  • (NEW) 新しい Linux Distributions のサポート
    • SuSE 10.3
    • Fedora Core 7
    • RedHat Enterprise Linux 5.0
  • (NEW) 全ての製品で、OpenMP実行スレッド数の制約の撤廃
  • クアッドコア AMD Opteron マイクロアーキテクチャ最適化
    • 128-bit FPUのアドバンテージをフルに生かしたコードセレクション最適化(マージ依存性削減)
    • TLBエントリ数に係る最適化のために、2MB Hugeページを積極的に使用
    • 2-way set associate L1 キャッシュの使用を向上させるためにヒープ割当の最適化
  • PGI 7.0 の性能に比較して 5% 以上の性能向上
  • Huge ページのサポートを含め、メモリの階層化とメモリ割付最適化(Intel /AMDプロセッサ)
  • メモリバンド幅に基づいた利得解析によるマルチコア間のベクトルループの自動並列化の強化
  • PGCC/PGC++ のインライン化の強化と最適化
    • ファイル間を跨る静的関数のインライン化
    • IPA 最適化を通した、PFO 駆動の間接呼び出しのインライン化
  • IPA コンパイル速度の向上
  • プロファイル・フィードバック最適化の強化
    • 複数実行した際の情報を集合しフィードバック
    • 関数のインライン化
    • レジスタ割付
  • Windows SFU 上でのダイナミック・リンケージのサポート
  • Windows 上での静的リンケージのサポート
  • ベクトル最適化の強化
    • 間接アドレッシングを有するループの拡張SSEベクトル化(ギャザー処理)
    • SSE3 拡張最適化の追加
    • レジスタ選択の最適化
    • マルチコア上でのキャッシュ整列のチューニング
  • gcc/g++ との互換性強化
  • PGDBG デバッガの強化
    • スタック・トレースの向上
    • Micorosoft(R) Visual C++ との互換性
    • 高速な逆アセンブラ
    • 性能の向上
    • gcc/g++ との互換性の向上
  • PGPROF MPI プロファイリング機能に集合通信のプロファイル機能追加
  • PGI CDK は、OpenFabric 上で動作する MVAPICH をサポート 
  • PGI User's GuidePGI Tools GuidePGI Visual Fortran Users Guide のアップデート

PGI Release 7.1 の詳細
PGI® 7.1 のリリース・ノートの詳細版は、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.0 と同様に、32ビット x86 系のプロセッサ並びに 64ビットの AMD64、Intel(R) 64 のプロセッサに対応します。PGI 7.1 において、サポートする CPU は以下の表のとおりです。PGI 7.0-3 から導入された CPU ターゲットである、-tp barcelona-tp barcelona-64 もサポートしております。これらのターゲットは、それぞれ新しい AMD クアッドコアのプロセッサ(Barcelona) の 32 ビット用、64ビット用に最適化するためのものです。なお、PGI 6.2 から新規に導入された target は core2 並びに core2-64 ですが、これは、インテル社の Core 2 duo 等の Core アーキテクチャを有するプロセッサとなります。インテル社のクアッドコア・プロセッサに対しても core2、core2-64 のターゲットで最適化します。(インテル社のクアッドコアは、内部的にデュアルコアが二つ組み合わせたものであるため、下記の表の「コア数」の表示では core2 が 2 コアと言う表示になっております)

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


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


サポートするOS の追加


最新の Linux ディストリビューションである RedHat Enterprise Linux 5.0 、SUSE LINUX 10.3 並びに Federa Core 7 を新たにサポートしました。従来からサポートしている SUSE Linux RedHat Enterprise Linux 3, 4 並びに Fedora Core 3, 4, 5、6 もサポートされます。 PGI コンパイラがサポートする Linux Distributions に関しては、こちらをご覧ください。なお、PGI 7.0 以前でサポートしておりました、古い Linux DistributionであるRedHat 8.0/7.3、SuSE 8.1/8.0、SLES8 SP2 は、PGI 7.1 以降サポートしておりませんのでご注意ください。

PGI Workstation and Server 7.1 Windows 版では、Winodws(R) の UNIX 環境のサブシステム(Subsystem for Unix-base Applications、Windows Serviced for Unix) も対応しました。Windows(R) 上で使用可能なコマンドベースのコンパイラ(PGI Workstation & Server)が対応する Windows(R) バージョンは、こちらをご覧ください

PGI 7.1 では、2007 年12月 以降に、Intel プロセッサベースの Mac OS X に対応するコンパイラを正式にリリースします。



PGI 7.1 新しい有益な機能の追加

【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.1 コンパイラの新機能、特長等

  • Multiple PGI Unified Binary Targets− 以前のバージョン PGI 7.0 より、-tpスイッチは、コンマ(,)で区切られた複数のプロセッサ Target リストを指定する形態をサポートしております。二つ以上の64-bit ターゲットに対しての PGI Unified Binary としての最適化(例: -tp k8-64e,p7-64,core2-64 と指定すると三つのターゲットに最適化されたコードを生成します)を指示することができます。-tp x64 オプションの場合は、-tp k8-64,p7-64 と等価となります。
    PGI Unified Binary 指示用のディレクティブ、プラグマは、新しいプロセッサであるbarcelonaやCore 2 Duo 等のターゲットをサポートします。
  • 性能の向上− いくつかの標準ベンチマークや研究コミュニティ・コード、ISVコードのベンチマークの測定において、5〜10% の性能向上を達成しました。詳細は、 http://www.pgroup.com/benchmark に記載いております。
  • OpenMP− 全ての PGI 製品構成で、OpenMP 実行スレッド(自動並列を含む)の制約が撤廃されました。以前のバージョンでは、使用並列スレッドの実行数に制約がありました。OpenMP ランタイムライブ、デバッガ、プロファイラの使用時のスレッド数は、ライセンス制約がなくなり、ソフトウェアのハードリミットである最大 64 までとなっております。
  • PGC++ 低オーバーヘッドの例外処理の実装− 新しい例外ハンドリングの実装は、例外が引き起こされるまで例外処理のためのコストを先延ばしします。多くの例外領域を有しながら、あまり例外が起こらないプログラムでは、このためのコンパイル・オプションによって、ランタイム性能の向上に繋がるかもしれません。この新しい実装は、Windows と libgcc_en を有した新しい Linux に対して有効です。
  • Windows上のメモリ・アロケーションの向上− Windows システムのメモリ割付ルーチンのためのラッパーライブラリが、-Msmartalloc オプションにより有効となります。ラッパーライブラリは、多くのメモリをアロケーションするプログラムに対して性能を向上させるために、小さなブロックのヒープサイズを構成するようにします。メモリアロケータも、キャッシュ競合を避けるためにメモリの大きなブロックを整列するようにします。
  • メモリ・アロケーションに対するhugeページの使用− -Msmartalloc が Linux 並びに Widows 上の large TLB をサポートするために強化されました。多くのメモリをアクセスするプログラムにとって、 huge page は TLBミスの数を削減する効果を持ち、性能が向上します。このオプションは、AMD のBarcelona やインテルの Core 2 システムに対して大きな効果をもたらします。古いアーキテクチャの場合は、TLB エントリの数が少ないため、その恩恵は小さくなります。
  • 新しいFortran組込み関数、サブルーチン、属性− GET_COMMAND_ARGUMENT、GET_ENVIRONMENT_VARIABLES、GET_COMMAND、LEADZ、POPCNT、POPPAR、SIZEOF、CTIME8 、TIME8を実装しました。Windows上では、GETDAT、GETTIM、TIME64、 CTIME64、 LOCALTIME64 を加えて、DECORATE 属性をサポートしました。
  • 追加Fortan I/O Feature− access=append パラメータを追加し、FLUSH 文をサポートしました。
  • OpenMP強化−ループに対する C99/C++ スタイルの並列型を実装しました。さらに、64ビットlong、すなわち、long long を対象に加え、ループ・インデックス変数として全ての unsigned 型の並列化に対応しました。
  • Windows環境−inter-procedural analysis (IPA)のための Windows ライブラリ・ルーチンの範囲を拡大しました。また、長いコマンドラインをサポートし、コマンドライン上のレスポンスファイル(@filename)を伴う多くの引数持ったプログラムをリンクすることができます。
  • gcc/g++ 互換性の強化− extension __builtin_expect をサポートし、aligned、 weak、alias 属性をサポートしました。さらに、特定なレジスタに対する変数サポートし、アセンブラコードで使用される名前を制御できるようにしました。
  • profile-feedbackとcode placement最適化の強化− profile-feedback 最適化と code layout 最適化が32ビット/64ビットプラットフォーム上のF95, F77, C, C++コンパイラで利用できます。新しいprofile feedback に基づいた最適化は、call-site inlining、 switch-statement、expansion, register allocation を含みます。静的コードレイアウト最適化は、全てのプラットフォーム上で有効となります。
  • SSEベクトル化の拡張− 間接アドレッシングの gather インデックス配列を有するループは、ベクトル化できるようになりました。FMAX, FMIN, DMAX, DMIN リダクション演算もベクトル化できるようになりました。
    ループ内の間接アドレッシングのベクトル化
    
          PROGRAM TEST
          IMPLICIT NONE
          integer N
          parameter(N=300)
    
          integer nx,ny,nz,nu
          parameter(nx=N)
          parameter(ny=N)
          parameter(nz=N)
          parameter(nu=N)
    
          real*4 a,b,c
          integer ind
          dimension a(nz,ny,nx)
          dimension b(nz,ny,nx)
          dimension c(nu)
          dimension ind(nz,ny,nx)
    
          integer i,j,k
          integer index
          double precision :: start, finish
    
    
          call cpu_time(start)
          do i=1,nx
             do j=1,ny
                do k=1,nz  ! ループ内の間接アドレッシングのベクトル化
    #if defined (VECT)
                   a(k,j,i) = a(k,j,i)+c(ind(k,j,i))*b(k,j,i)
    
                           ! 以下の形態の間接アドレッシングは、ベクトル化不可
    #else                  
                   index = ind(k,j,i)
                   a(k,j,i) = a(k,j,i)+c(index)*b(k,j,i)
    #endif
                enddo
             enddo
          enddo
          call cpu_time(finish)
          print *,"TIME for loop =", finish-start,"(second)"
    
          end
    
    photon26:~/PGI/indirect>pgf95 -fastsse -Minfo -DVECT indirect.F
    test:
        27, Generated vector sse code for inner loop (SSEベクトル化)
            Generated 2 prefetch instructions for this loop
    
    photon26:~/PGI/indirect> ./a.out
     TIME for loop =   0.2781519889831543      (second)
    
    photon26:~/PGI/indirect> pgf95 -fastsse -Minfo -DVECT -Mvect=nosse indirect.F
    test:
        27, Loop unrolled 4 times (SSEベクトル化を抑止)
    
    photon26:~/PGI/indirect> ./a.out
     TIME for loop =   0.2997751235961914      (second)
    
    photon26:~/PGI/indirect> pgf95 -fastsse -Minfo indirect.F
    test:
        27, Unrolled inner loop 8 times (index = ind(k,j,i)として分離した場合)
            Generated 3 prefetch instructions for this loop (ベクトル化しない)
            Loop unrolled 4 times (completely unrolled)
    
    photon26:~/PGI/indirect> ./a.out
     TIME for loop =   0.3222777843475342      (second)
    
    (自動並列化の適用も可能、外側ループで並列化)
    photon26:~/PGI/indirect> pgf95 -fastsse -Minfo -DVECT indirect.F -Mconcur
    test:
        25, Parallel code for non-innermost loop generated; block distribution
        27, Generated vector sse code for inner loop
            Generated 2 prefetch instructions for this loop
            Loop unrolled 4 times (completely unrolled)
    
    photon26:~/PGI/indirect> ./a.out
     TIME for loop =   0.1890208721160889      (second)
  • 一時変数の使用の削減− 一時配列やサブプログラム実引数をコピーする際の associated descriptor (接続記述子)を再利用することによってスタック・フレームのサイズを削減しました。配列の値を持った関数から値を返す際のコピーを削除しました。
  • FLEXlmライセンシングソフトウェアのアップグレード− 全てのプラットフォームで FLEXlm version を 11.4.1 にしました。
  • サポートOS − RedHat Enteprise Linux 5.0、Fedora Core 7 並びに SUSE 10.3 をサポートしました。Windows(r)上では、GNU ld を使用した SFU と SUA の配下でのネイティブなコンパイル・実行環境を提供します。
  • Quad-Core AMD Opteron processor support− AMD クアッドコアのプロセッサ Barcelona Rev.B のためのチューニングパラメータやメモリコピールーチンを更新しました。Windowsアセンブラの中で、Barcelona POPCNT 'OF B8' (Rev A) から 'F3 OF B8'(Rev. B)へのオペコードを更新しました。
  • Apple Core 2 and Core 2 Duo support− PGI Workstation for Mac OS X を正式にリリースします。

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


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


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

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

    しかしながら、新しいコンパイラ・オプションである -noswitcherror を指定すると、従来のように、未知のオプション(スイッチ)が指定された場合、エラーで停止するの代わりに「警告」を出すように変更できます。
  • -fast − 64ビットシステムのターゲット上での C/C++ 言語において、-fast 複合オプションの中に、 -Mautoinline オプションが加わりました。-fast オプションの指定で、自動インラインモードでコンパイルすることになります。
  • -noswitcherror −未知のオプション(スイッチ)が指定された場合、エラーで停止するの代わりに「警告」を出すように変更します。この同様な挙動は、コンパイラのサイト初期設定ファイル siterc ファイルの中で、NOSWITCHERROR=1 をセットすることによって、サイトのデフォルトを変更することができます。siterc ファイルは、一般に $PGI/linux86{-64}/7.1/bin の配下にセットします
  • -Minline=[no]reshape − 配列の形態(Array shape) が一致しない場合でも Fortran におけるインライン処理を許可(抑止)します。-Mconcur あるいは -mp の場合を除いたデフォルトは、-Minline=noreshape です。-Mconcu rあるいは-mp の場合のデフォルトは、-Minline=reshape です。-Mipa=[no]reshape − IPA 処理において、配列の形態(Array shape) が一致しない場合でも Fortran におけるインライン処理を許可(抑止)します。
  • -Mmpi=[mpich1|mpich2] − デフォルトのものあるいは、指定されたMPIライブラリを使用します。
     mpich1: デフォルトの MPICH-1 ライブラリを使用する
     mpich2: デフォルトの MPICH-2 ライブラリを使用する(PGI CDK のみ)

     MPICH ライブラリの使用方法については、こちらのページをご覧ください。
  • -Mmpi2 − このオプションは削除されました。その代わり、-Mmpi=mpich2 を使用します。
  • -Mprof[=[mpich1|mpich2]] − プロファイルするアプリケーションにリンクするための mpich1 とmpich2 ライブラリ名を、-Mprof オプションに指定するようになりました。
    mpich1 : プロファイル用 MPICH-1 ライブラリを使用する。 -Mmpi=mpich1 を包含します。
    mpich2 : プロファイル用 MPICH-2 ライブラリを使用する。 -Mmpi=mpich2 を包含します。(CDKのみ)
  • -M[no]smartalloc[=huge|huge:<n>|hugebss] − -Msmartalloc オプションは、Linux 並びにWindows上での large TLBs をサポートするために強化されました。このオプションは、最適な malloc ルーチンを有効にするために、メイン・プログラムをコンパイルする際に使用することが必要です。サブ・オプション huge は、シングルプログラムで使用される大きな 2MB ページを有効にするために指定します。これは、実行するために必要な TLB エントリ数を削減する効果があります。このオプションは、 AMD の Barcelona やインテル(r)の Core2 システムで特に有効です。古いプロセッサ・アーキテクチャでは、TLB エントリの数が少ないため、大きな効果は期待できない可能性もあります。サポートするサブ・オプションは、以下のとおりです。

     huge : huge page のランタイムライブラリをリンクします。
     huge:<n> : 使用されるページの数の限度を n に設定します。
     hugebss : huge page の中に BSS セクションを置きます。

    それ自身、huge サブ・オプションは、必要とされる huge page をアロケートしようとします。Huge page の数は、:nサブ・オプションで制限を設けることができ、あるいは、環境変数 PGI_HUGE_SIZE でも設定できます。Hugebss は、プログラムの初期化されていないデータセクションを huge page の中に置きます。
  • -O4 − -O4 レベルの最適化に、algebraic transformations と レジスタ・アロケーション最適化を追加しました。
  • -M[no]unroll[=c:<n>|n:<n>|m:<n>] − マルチ・ブロックを持ったループをアンロールする機能を追加しました。特に、条件文を伴ったこのようなループでは、アンロールできるようになりました。新しいオプション -Munroll="m" は、この機能を制御するために導入されました。
     n:<n> : シングル・ブロックをn回アンロール
     m:<n> : マルチ・ブロックをn回アンロール
    デフォルトでは、-Munroll=m は有効となっておりません。また、-Munroll=m の場合のデフォルトの n 値は 4 です。
  • -Mvect[=[no]gather] − gather(ギャザー)サブ・オプションが導入され、配列の間接参照を有するループのベクトル化ができるようになりました。コンパイラのデフォルトは、-Mvect=gather です。
     sum = 0.d0
     do k=d(j),d(j+1)-1
      sum = sum + a(k)*b(c(k))
     enddo
  • -M[no]propcond − equality conditionals から派生する assertions からの constant propagation 最適化を有効にします。これは、デフォルトで有効となります。
  • -M[no]traceback− 環境変数 $PGI_TERM を使用することにより、ランタイム traceback のためにデバッグ情報が追加されました。また、デフォルトでのトレースバック機能は、f77、f90/f95では有効となっておりますが、C/C++では無効となっています。コンパイラへの初期設定ファイル siterc あるいは、.mypg*rc ファイルに TRACEBACK=OFF をセットすることで、デフォルトのレースバック機能を無効にすることができます。反対に OFF の代わりに ON と指定することによって、有効にすることができます。
  • -M[no]fpapprox[=div|sqrt|rsqrt] − 特定の単精度浮動小数点演算を低精度近似を使用して実行します。
     div : 浮動小数点除算近似
     sqrt : 浮動小数点平方根近似
     rsqrt : 浮動小数点逆数平方根近似
    デフォルトでは、-Mfpapprox は使用されません。もし、サブ・オプションを指定しない -Mfpapprox のみの場合は、上記の全てのサブ・オプションが指定されたものとして扱います。
  • -M[no]fpmisalign − AMD barcelona プロセッサに対して、16-byte 境界に整列されていないアドレスを持つメモリ・オペランドのベクトル演算命令の使用を許可します。デフォルト設定は、Barcelona を含めて、全てのプロセッサにおいて -Mnofpmisalignです。本オプションは、-tp barcelona-64 あるいは、-tp barcelona の設定時、あるいは、barceona 上でコンパイルされたときにのみ効果があります。また、このオプションでコンパイルされたコードは、barcelonaプロセッサ上だけで実行できるものとなりますのでご注意下さい。
  • -M[no]loop32 − barcelona 上での 32-byte 境界上にある最内側ループを整列します。barcelona 上で 32-byte 境界で整列されている場合、小さなループは性能が向上する可能性があります。しかし、実際には、ほとんどのアセンブラが、まだ効果的なパッディング(padding)を実装していません。その結果、このオプションで遅くなる可能性もあります。Barcelona に対して最適化されたアセンブラを有するシステム上でこのオプションを使用してください。デフォルトは、-Mnoloop32 です。
  • -alias=[ansi|traditional] − C、C++プログラムにおける、「型」ベースのポインタ・エイリアス規則に基づき最適化方法を選択します。
     ansi : ANSI C型ベースのポインタの一義化(disambiguation)を使用した最適化を有効にする
     traditional : 型ベースのポインタ一義化を無効にする
    C言語コンパイラでは、デフォルトは -alias=ansi で、C++においては、-alias=traditional としています。
  • -Xs − C/C++ において、レガシーな標準モードを使用する。これは、-alias=traditional オプションを内包します。
  • -Xt − C/C++ において、レガシーな移行モードを使用する。これは、-alias=traditional オプションを内包します。
  • --zc_eh − ゼロ・オーバーヘッド例外領域を生成します。本オプションは、実際の例外処理が起こるまで、例外ハンドリングのコストを遅らせる措置を行います。多くの例外領域を有しながら、あまり例外が起こらないプログラムでは、このためのコンパイル・オプションによって、ランタイム性能の向上に繋がるかもしれません。デフォルトは、--zc_ehを使用しませんが、その代わり、setjmp と longjmp と共に例外ハンドリングを実装する -sjlj_eh を使用します。このオプションは、PGI C++の以前のバージョンでコンパイルされた C++ コードにも互換性があります。--zx_eh オプションは、libgcc_eh 内のシステムunwind ライブラリを提供している新しい Linux システムと Windows 上でのみ有効です。
  • -Xm − このオプションは削除されました。C++ コンパイラに、名前の中のドルサイン($)を許すことを指示するものでした。今は、ほとんどの場合、ドルサインは許可されております。
  • -Bstatic and -Bdynamic − Windows 上において、-Bstatic と -Bdynamic オプションが新規に使用できるようになりました。-Bstatic は、コンパイルされたプログラムに静的ライブラリをリンクするものです。-Bdynamic は、DLLをリンクするものです。(注意)実行形式モジュールにリンクされる全てのファイルは、同じオプションでコンパイル・リンクされなければなりません。デフォルトは、-Bstatic となります。
  • -Mmakedll − -Mmakedll オプションは、このバージョンから -Mdynamic オプションを内包します。
  • -Mdll − -Mdll オプションが削除されました。その代わり、-Mdynamic オプションを使用します。
  • -stack=nocheck − -stack オプションは、Windows上で自動ランタイムスタック拡張を行わないようにすることができるように変更されました。もし、researve と commit サブオプションが、十分なスタック量を確保できるようにセットされたなら、自動的な拡張チェックは必要ありませんし、スタックのチェックを避けることができます。デフォルトは、-stack=checkです。Win64 では、デフォルトの researve 値あるいは commit 値はありません。Win32 では、researve、commit それぞれのデフォルト値は、2,097,152byte です。
  • -Mchkstk − −Mchkstk オプションでコンパイルされたプログラムは、スタック high-water mark の情報を収集できるように指示できます(Windows版のみ)。もし、環境変数 PGI_STACK_USAGE が実行時にセットされた場合、スタックの high-water mark が実行終了時に印字されます。
  • -[no]compress_names − C++ マングル名を 1024 キャラクタにフィットするように圧縮します。高度にネストされたテンプレート・パラメータは、非常時長い関数名が作成されるようになります。これらの長い名前は、古いアセンブラでは問題を引き起こす原因になります。現在のデフォルトは、-no_compress_names です。全ての C++ユーザコードは、このスイッチを使用する際に、再度コンパイルされなければなりません。PGI によって提供されるライブラリは、-compress_names と共に動作します。
  • -V − -Vオプションは、プロセッサ名をプリントするようになりました。例えば、Core 2 Duo 上でコンパイルすると-Vオプションは、-tp core2-64 と表示します。
  • -Mstandard − -Mstandard は、-Mbackslash を内包しました。これは、-Mstandard が現れたときにバックスラッシュ・エスケープ・シーケンスを認識することを禁止します。例えば、バックスラッシュは標準的なキャラクタとして扱います

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

PGI Workstation/Server 7.1は、PGDBG 並列デバッガの中で、いくつかの新しい機能の追加と機能強化を行いました。

  • PGDBG 7.1 は、PGDBG が動作する同じシステム上で動く MPICH-1 の 4 つのプロセスまでのアプリケーション・デバッグができるようになりました。以前までのバージョンでは、MPI プロセスのデバッギング機能は含まれておりませんでした。(OpenMPスレッド並列のデバッギングも従来どおり可能です)
  • PGDBG 7.1 (Windows版)は、Microsoft(R) Windows CCS クラスタ上で動作する MSMPI アプリケーションのデバッギングをサポートしました。これは、CCS対応の MSMPI デバッギングをサポートする、業界で初めての製品です。
  • PGDBG 7.1 は次の機能の強化を行いました。

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

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

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

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


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

PGI Workstation/Server 7.1 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.1 for Apple Mac OS

PGI Workstation 7.1 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.1-1/etc/modulefiles/pgi.module.install -all -install /usr/local/Modules/modulefiles

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

     module load pgi32/7.1
     module load pgi64/7.1
     module load pgi/7.1

    ここで、pgi/7.1は、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.1 リリースでは、ランタイム・ライブラリを含むディレクトリは以下のとおりです。

  • $PGI/linux86/7.1/REDIST
  • $PGI/linux86-64/7.1/REDIST
  • $PGI/win64/7.1-1/REDIST
  • $PGI/win32/7.1-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.1ライセンシーは、PGI End-user License Agreementに準拠し、このディレクトリ内のファイルを再配布することができます。

既知の制限事項

  • (7.1-6 リリース注意)
    PGDBG 7.1-6 release introduces better support for debugging MPI programs on newer Linux systems where the loading of shared libraries to randomized addresses is enabled.
    o When this mode is enabled, the current implementation of PGDBG uses significantly more memory, which may degrade performance. PGI currently recommends disabling this mode in the Linux kernel when debugging MPI programs via PGDBG. To disable this Linux kernel mode, run the following command as root:

         sysctl -w kernel.randomize_va_space=0

    o Due to problems in PGDBG in shared library load recognition on Fedora Core 6 or RHEL5, breakpoints in processes other than the process with rank 0 may be ignored when debugging MPICH-1 applications when the loading of shared libraries to randomized addresses is enabled.

    o Do not use “./” to specify an executable in the current directory when debugging an MPICH-1 application with ‘mpirun ?dbg=pgdbg’. For example, if you do use
       mpirun -dbg=pgdbg -np 2 ./a.out
    when the Linux kernel mode is enabled, breakpoints may be lost in processes other than the process with rank 0. To work around this problem invoke the job to be debugged using this command:
       mpirun -dbg=pgdbg -np 2 a.out
  • (PGI 7.1-5 リリース注意) -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" オプションをリンク時のコマンド列に追加してください。
  • (7.1-4 リリース注意) "pgserv" 環境の下で起動した MPI ジョブのデバッギング時に、プログラムの最初の実行文の前にジョブの進行が停止させられます。この時点でソースレベルのデバッグ情報が存在しないため、ソースレベルの次のコマンドを出すことは非常にゆっくりと実行します。遅くなります。これが完了するか、例外により止まるか、ユーザによって入力された PGDBG 停止コマンドによって止まるまで、ジョブを実行しなければならないことを回避するため、ユーザは、最初のブレークポイントをセットすべきです。フォートラン・プログラムがデバッグされている場合は、"continue" コマンドを出す前に実行パス上で、メイン、またはMAIN_、あるいは別のポイントで最初のブレークポイントをセットしてください。
  • PGI 7.1 で生成されたオブジェクトあるいはモジュールは、PGI 5.x 並びにそれ以前のリリースのオブジェクト、モジュールとは互換性がありません。
  • PGI 6.1 並びにそれ以前のリリースにおいて -Mipa オプションを付加して作成されたオブジェクトファイルは、PGI 7.1 上で再コンパイルが必要です。
  • 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 をご参照ください。
  • (7.1-5 リリース注意) 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. 以上で動作させると期待される性能と効果が得られます。
  • ACML3.6 ライブラリは、-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.1 によって 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 のマルチスレッドのデバッギングが可能です。但し、一つ制約があり、一度ストップすると、プロセスは全てのスレッド、あるいは、シングルスレッドの続行(スレッドの部分的なセットの続行ではなく)をしなければ、プロセスの続行ができません。スレッドの部分的なセットの続行は、結果として全てのプロセス(スレッド)を続行させることになります。

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

    Copyright SofTek Systems, Inc. 2007

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

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

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

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

======== (License.dat の例 : Release 7.1 の場合) =================
SERVER moj1 0090275c30e8 27000
#
# In the DAEMON line, the location of the pgroupd daemon
# may need to be modified.
DAEMON pgroupd pgroupd
FEATURE pgf77-linux86 pgroupd 7.100 31-dec-0 1 3BD8F0B1414C40403DEC \
VENDOR_STRING=109839:4 HOSTID=0090275c30e8 ck=190
FEATURE pgprof pgroupd 7.100 31-dec-0 1 BB986021EC3F71B560B6 \
VENDOR_STRING=109839:4 HOSTID=0090275c30e8 ck=29
FEATURE pgdbg pgroupd 7.100 31-dec-0 1 EBC8706172F613B398F2 \
VENDOR_STRING=109839:4 HOSTID=0090275c30e8 ck=249
======== (License.dat の例 : Release 7.1 の場合) =================

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

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

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

現在の自分が所有しているライセンス情報は、ライセンス発行サイトにてオンラインで入手が可能です。サイトのユーザ認証のために、製品納品時に同封したユーザ登録書に記されたアクセス・コード (ユーザー名とパスワード) を入力し、"Information" --> "Information and current licenses" のボタンをクリックすると、サブスクリプション期間終了日と新しいマイナー・リリースに対する新ライセンス・キーが表示されます。この新ライセンス・キーをコピーして 現在の license.dat を更新してください。

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

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

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

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



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

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