PGIトップ › PGIサポートセンター › PGIリリースノート

ソフテックは、PGI 製品の公認正規代理店です

PGI 2010 コンパイラ製品 リリースノート

support

 米国 PGI の PGIコンパイラ製品のバージョン 2010 (PGI 2010) をリリースしましたのでお知らせいたします。本リリースにおける製品の主な新機能、特徴に関してPDFファイルに記述しておりますので、詳細は、以下のPDFファイルをご覧下さい。なお、ソフトウェアは こちらのページにてダウンロード可能です。 (2009年11月)
 現在の最新バージョンは、PGI 2010(旧バージョン形式で言うと PGI 10.x) となります。年間サブスクリプション契約をご購入あるいはご継続中のお客様は、新リリースのソフトウェアをダウンロードの上、インストールをお願いいたします。「バージョンアップの方法」や最新の「日本語インストールの手引き」は、お客様専用のページへご案内いたしますので、そのページをお分かりにならない場合は、弊社 support@softek.co.jp までご連絡下さい。

PGI 2010 Version

製品名 最終リビジョン
PGI (Accelerator) Workstation / Server for Linux
10.9
PGI (Accelerator) Workstation / Server for Windows 10.9
PGI (Accelerator) Workstation for OS X 10.9
PGI (Accelerator) Visual Fortran (Windows) 10.9
PGI CDK for Linux (ご契約ユーザ様専用ページにて) 10.9
PGI製品のお求めは、米国 PGI と 19 年以上に及ぶ強力なパートナーであるソフテックへ

▶ PGI 2010 (PGI 10.x ) リリースノート(PDF)

PGI コンパイラ製品の最新バージョン(Release 2010) の日本語版リリースノートについては、PDF ファイルをご覧下さい
英語版のリリースノートは、こちらをご覧下さい

PDF

PGI 10.9(2010年9月)の新機能追加

■ PGI CDK にバンドルされたMPICH-2のバージョン変更

PGI CDK パッケージに含まれる MPICH2 ライブラリのバージョンを 1.2.1p1 に更新しました。

■ PGI Visual Fortran (PVF 10.9 追加)

PVF 10.9 では、新しい「プロパティメニュー」を追加しました。この機能は、Intel(R) Math Kernel Library、AMD Core Math Libraryや IMSLライブラリ等の特定のライブラリを明示して、ビルド&リンクできるようにするためのものです。

■ ユーザ・リクエストによる機能強化並びにバグフィックス(23件)

PGI 10.8(2010年8月)の新機能追加

■ PGI 10.8で追加された Fortran 2003 新機能

  • Accociate 構文 - その構文の実行中に、「名前」を変数または式の値との間に関連付けを作成します。 Accociate 構文が実行されると、その associate-name に対応する値や式の値の関連付けが作成されます。関連付ける実体の変数、式の値によって、その宣言型と型パラメータ等が決まります。
  • Sourced Allocation - 多用な型に対するアロケーション。(但し、無制限に多用な型のオペレーションを許容する訳ではない)。明示的に型や型パラメータを指定してアロケーションする代わりに、Allocate 文の中の source= と言うクローズを使用して、型や型パラメータ、他の変数あるいは、式からその値を取り込むことができます。アロケートされた変数は、同じ動的な型、パラメータ、ソース変数と同じ値を持つことになります。
subroutine example(x)
 class(t), allocate :: a
 class(t)           :: x
 allocate(a, source=x)

■ PGI Accelerator x64+GPU native Fortran 95/03 and C11 コンパイラとPGI CUDA Fortran

CUDA 3.1 Toolkit をサポートしました。この CUDA 3.1 Toolkit は、CUDA 3.0 のアップデート版であるため、今後、CUDA 3.0 Toolkit は PGIコンパイラ製品にバンドルされません。しかし、以前のPGIインストールで実装されている CUDA 3.0 Toolkit のディレクトリは、そのまま残して置いても問題ありません。
CUDA 3.1 API への変更により、CUDA Fortran ホスト・プログラムは、再コンパイルする必要があります。PGI 10.8 ランタイム・ライブラリは、以前の CUDA Fortran のリリースとは互換性がありません。

■ PGI Visual Fortran (PVF 10.8 追加)

PVF 10.8 では、「プロパティメニュー」で CUDA 3.1 toolkit を指定することができます。「Enable CUDA Fortran」を yes とセットすると、Fortran | Language | CUDA Fortran Toolkit プロパティにおいて、CUDA 3.1 toolkit使用することを明示的に指定することができます。 また、アクセラレータ用の設定においては、 Fortran | Target Accelerators | NVIDIA : CUDA Toolkit プロパティで同じように設定できます。

■ ユーザ・リクエストによる機能強化並びにバグフィックス(31件)

PGI 10.6(2010年6月)の新機能追加

■ PGI Accelerator x64+GPU native Fortran 95/03 and C11 コンパイラとPGI CUDA Fortran

アクセラレータ領域内での自動アンロール機能を実装。

■ PGI Fortran

CUDA ビルトイン関数 syncthreads_count, syncthreads_and, syncthreads_all, threadfence, threadfence_block, threadfence_system and ballot の追加。さらに、CUDA Fortran デバイスコードは、popcnt(), poppar(),leadz() 関数をサポートしました。

■ PGI 10.6で追加された Fortran 2003 新機能

  • I/O ENCODING, I/O DECIMAL 指定子, ASYNCHRONOUS 属性と文, CHARACTER MIN/MAX/MINLOC/MAXLOX/MINVAL/MAXVAL, ALLOCATE/DEALLOCATE ERRMSG 指定子, non-polymorphic 型に対する ALLOCATE SOURCE指定子, and IEEE_features モジュールの追加. New object-oriented features include deferred type-bound procedures, TYPE PUBLIC and PRIVATE attributes, and TYPE ABSTRACT attributes.
  • TYPE PUBLIC and PRIVATE 属性, and TYPE ABSTRACT 属性や deferred type-bound手続きを含むオブジェクト指向機能の追加。

■ PGPROF Profiler

PGI Accelerator モデルやPGI CUDA Fortran を含むコードのプロファイリングをサポートした。

■ PGI Visual Fortran

Micorosoft Visual Studio 2010 をサポートした。

PGI 10.5(2010年5月)の新機能追加

■ PGI 10.5で追加された Fortran 2003 新機能

  • Type-bound procedure 機能の追加
  • PASS / NOPASS 属性追加:手続きに対して、どの引数が呼び出されるオブジェクトに渡されるかを指定する属性。例えば、NOPASS属性は、オブジェクトを引数として渡すことを阻止します。

■ PGI Accelerator x64+GPU native Fortran 95/03 and C11 コンパイラとPGI CUDA Fortran

acc_get_device_num と言うランタイムライブラリをサポートしました。この関数は、アクセラレータ領域を実行するために使用されているデバイスの数を返します。

■ Accelerator Profiling

PGI Accelerator モデルやPGI CUDA Fortran を使用したプログラムのプロファイリングを行う際に、pgcollect ユーティリティは自動的にアクセラレータ性能に関する情報を収集して、プロファイル出力として表示できるようにします。

(注意)プログラムプロファイル出力の中のアクセラレータ性能情報の取り込みは、Linux においては、時間ベースのサンプリング手法でも、イベントベースのサンプリング手法のどちらでも可能です。

あるLinuxシステム上では、パワーセーブ状態になっているアクセラレータハードウェアのCUDAドライバーの初期化は、非常に多くの時間を費やします。この遅延を避けるために、以下のいずれかの方法で対処することができます。

  • バックグランドで、pgcudainit プログラムを実行させる。GPUへの通電の状態を保ち、後続のプログラムの初期化の時間を削減できる。この詳細は、PGI User's Guide の 7章を参照下さい。
  • pgcollect のオプションに -accinit を付ける。これは、初期化オーバーヘッドの多くを削減し、より精度の高いプロファイリングを提供できます。また、ユーザが定義した型メンバーや配列要素に対する Fortran に特化した機能が向上しました。

    (例)pgcollect -time -accinit myaccelprog

■ PGI Visual Fortranは、Enhanced Variable RolloverやWatch and Quick Watch機能を強化しました。

PGI 10.4(2010年4月)の新機能追加

■ PGI Accelerator x64+GPU native Fortran 95/03 and C11 コンパイラとPGI CUDA Fortranは、CUDA 3.0 Toolkit and compute capability 2.0をサポートしました。

  • CUDA compute capability 2.0を指定するためには、次のオプションの一つを使用する。

    PGI Acceleratoには、-ta=nvidia:cc20.

    PGI CUDA Fortran には、-Mcuda=cc20.

  • コンパイラがターゲットとするCUDA toolkit のバージョンを指定するためには、次のオプションの一つを使用する。

    PGI Accelerator には、

    CUDA toolkit 3.0: -ta=nvidia:cuda3.0 or -ta=nvidia:3.0

    CUDA toolkit 2.3: -ta=nvidia:cuda2.3 or -ta=nvidia:2.3

    PGI CUDA Fortran には、

    CUDA toolkit 3.0: -Mcuda=cuda3.0 or -Mcuda=3.0

    CUDA toolkit 2.3: -Mcuda=cuda2.3 or -Mcuda=2.3

  • CUDA Kernelのための wait オプションの新設:–ta=nvidia:[no]waitオプションが、NVIDIAアクセラレータをターゲットとしたときに有効となります。ホストプログラム上で、kernel の実行が終了するまで待つか、あるいは、待たずに実行するかを指定することができます。デフォルトは wait です。
  • CUDA Fortranにおいて、fused multiply-add 命令をサポートしました。ユーザは、PGIアクセラレータ機能ならびに CUDA Fortran の両方において、fused multiply-add 命令を使用したコード生成を行うかどうかの制御が可能となりました。アクセラレータ機能においては、既に–ta=nvidia:nofma オプションでサポートされておりますが、PGI 10.4 以降では、CUDA Fortran においても、–Mcuda=nofma オプションにより、この制御機能をサポートしました。
  • CUDA Fortranにおいて、fast math libraryが使用できるようになりました。ユーザは、PGIアクセラレータ機能ならびに CUDA Fortran の両方においてfast math libraryを使用できます。アクセラレータ機能においては、既に –ta=nvidia:fastmath オプションでサポートされておりますが、PGI 10.4 以降では、CUDA Fortran においても、–Mcuda=fastmath オプションにより、この制御機能をサポートしました。
  • CUDA Fortran 上で、グローバル・サブルーチンを含む Fortran Module 内の allocatable device arrays を使用することができるようになりました。これによって、module を使用するホスト側コードから、また、module 内に含まれるデバイスコードの両方からこの種の配列へのアクセスが可能となりました。(ご参考)PGI 2010のCUDA FortranでのModule文使用時の注意

(注意)CUDA 3.0 toolkitを使用してコンパイルした場合(-ta=nvidia:cuda3.0)、あるいは、コンパイラの初期化ファイル sitercファイルの中にset CUDAVERSION=3.0 を設定した場合は、2.3 CUDA ドライバ上では動作しませんのでご注意下さい。CUDAドライバも CUDA 3.0用に変更する必要があります。現在、システムに実装されている CUDA ドライバーを確認する方法は、pgaccelinfo を実行して下さい。

$ pgaccelinfo
CUDA Driver Version            2030
(以下省略)
ここで、
2.3 driverの場合: CUDA Driver Version 2030
3.0 driverの場合: CUDA Driver Version 3000 と表示されます

(PGI 10.4以降)PGIコンパイラは、デフォルトでは CUDA 2.3 toolkitを使用して、CUDA Fortran あるいは、PGI Acceleratorアプリケーションをビルドします。すなわち、3.0用の CUDA ドライバを実装していたとしても、デフォルトのビルドは 2.3 toolkit を使用します。これは、まだ Fermi ボードが搭載されていない、あるいは、まだ CUDA 2.3ドライバ実装のシステムにおいては好ましいコンフィグですが、もし、最新の3.0ドライバをインストールしている場合、このデフォルト変更できます。コンパイラソフトウェアを実装している $PGI/{target}/{version番号}/bin 配下に siterc ファイルがありますので、その中に、以下を挿入します。

set DEFCUDAVERSION=3.0;

上記の設定を行わず、コンパイラコマンド上のオプションで明示的に 3.0 Toolkitを使用するように指示するには、以下のように指定します。

pgfortran -ta=nvidia:3.0,.... 
pgcc -ta=nvidia:3.0,....

PGI 10.3(2010年3月)の新機能追加

■ CUDA Compute capability 1.0~1.3 ハンドリングの強化

デフォルトの Compute capability を 1.0 と 1.3の両方にするようにした。PGI 10.3 以降、ユーザはターゲットとされる Compute capability を複数のリビジョンの指定が可能となった。例えば、4つの compute capabilitu 1.0, 1.1, 1.2, 1.3 の全てをターゲットとするには、コマンドオプションで次にように指定する。

-Mcuda=cc10, -Mcuda=cc11, -Mcuda=cc12, -Mcuda=cc13

あるいは、

-Mcuda=cc10,cc11,cc12,cc13

■ さらに、次のFortran 2003フィーチャを追加した。

  • Abstractインタフェース
  • IS_IOSTAT_END, IS_IOSTAT_EOR, and NEW_LINEの組込関数追加
  • オブジェクト指向の機能の追加:classes, type extensions (non-polymorphic), polymorphic entities,typed allocation, inheritance association, EXTENDS_TYPE_OF や SAME_TYPE_AS 組込関数
  • 新構文と修正構文: WAIT 文; READ 文のためのblank, pad, and pos 指定子 ; WRITE文のための delim and pos 指定子;INQUIRE文のための pending と pos 指定子

PGI 10.0~10.2のPGI 2010の新機能、変更点の概要

■ PGI アクセラレータx64+GPU Fortran95/03 and C11 コンパイラサポート

NVIDIAのGPGPU搭載のシステム上で、コンパイラ・ディレクティブ(指示行)ベースでプログラミング並びに最適化可能なPGI Accelerator Programming Model V1.0スタンダードに完全準拠しました。また、V1.1 のいくつかの機能を含みます。

  • Linux、Windows、OS Xプラットフォームをサポート
  • UPDATE ディレクティブを使用したGPUデバイス(メモリ)に常駐するデータのサポート
  • COMPLEX, DOUBLE COMPLEX データ, Fortran 派生タイプ、 C structs のサポート
  • 自動GPUサイドのループ・アンローリングとUNROLLディレクティブ節のサポート

■ PGI CUDA Fortran extensions機能

PGI 2010のFortran 95/03コンパイラにて、明示的なCUDA GPUプログラミングをサポートしました。

  • 定数、あるいは共有メモリのCUDA GPU device内における変数の宣言
  • ページロックされるpinnedホストメモリや、CUDAデバイスメモリ、定数メモリ、共有メモリの動的なアロケーション
  • Fortran 割り当て文による、ホスト側とGPU側のデータ転送
  • GPU計算カーネルを投入するための明示的な CUDAのグリッド/スレッド・ブロックの宣言
  • CUDAランタイムAPI関数と機能をサポート
  • 簡単にCUDA Fortranをデバッグするために、ホスト・サイドでのエミュレーション

■ Fortran 2003 追加機能

以下のルーチンが追加されました。

IMPORT, pointer reshaping, procedure pointers and statement, abstract interface, iso_c_binding intrinsic module, c_associated, c_f_pointer, c_associated, enum, move_alloc(), iso_fortran_env module, optional kind to intrinsics, allocatable scalars, volatile Getting Started 6 attribute and statement, pass and nopass attributes, bind ( c ), value, command_argument_count, get_command, get_command_argument, get_environment_variable, ieee_exceptions module, ieee_arithmetic module。

■ PGC++/PGCC (2010 C++)

新しい機能とその強化がなされました。

  • 最新の EDG リリース4.1を採用し、さらに、GNU並びにMicrosoftとの互換性を高めました
  • デフォルトで、externインラインをサポート、実行モジュール内にインライン関数の複数のコピーは、この度削除されました
  • BOOSTのサポートを強化し、さらに大きなコードをより良くサポートするために、内部のテーブルを拡張しました
  • C++ -mpオプションで、スレッド・セーフ例外のハンドリング

■ OSのサポート強化

RHEL 5, Fedora 11, SLES 11, SuSE 11.1, Ubuntu 9, Windows 7とOS X Snow Leopardのサポート

■ コンパイラの最適化と機能強化

  • OpenMPは、最大256スレッドまで拡張しましました。(以前は、64)
  • AVX(Advanced Vector Extensions)コードの生成
  • 部分的な冗長部削除機能
  • 実行モジュールサイズの最適化、向上

■ PGI Visual Fortran 強化点

  • Visual Studio内からWindows クラスタ上のMSMPIプログラムのデバッギングとジョブ投入のサポート
  • PGI Accelerator Programming model のフル・サポート
  • CUDA Fortranのサポート
  • CCFFのサポートを備えたPGPROF性能プロファイラーをスタンドアロンで提供

■ ドキュメンテーションの更新

he PGI Users Guide、PGI Tools、Guide、 PGI Fortran Referenceのドキュメントを更新しました

▶ 過去のバージョンのリリースノート