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

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

support

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

Current Version

製品名 現バージョン
PGI (Accelerator) Workstation / Server for Linux
16.10
PGI (Accelerator) Workstation / Server for Windows 16.10
PGI (Accelerator) Workstation for OS X 16.10
PGI (Accelerator) Visual Fortran (Windows) 16.10
PGI CDK for Linux (ご契約ユーザ様専用ページにて) 16.10

▶ PGI 2016 (PGI 16.x) リリースノート(PDF)

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

PDF

【PGI 16.1 からの廃止項目】

  • 全てのプラットフォームにおいて、32ビット用の PGI Accelerator 機能(CUDA Fortran、OpenACC、CUDA-x86)の提供が廃止されました。なお、32ビットコンパイル上で、-ta=host and -ta=multicore のサブオプションは機能提供しています。
  • 全てのプラットフォーム上で、従来 pgcpp(pgCC) コマンドで提供してきた STLPort をサポートする PGI C++(レガシー版)は、廃止され終息しました。Linux と OS X 上では、GNU GCC g++ への ABI 互換性がある pgc++ コンパイラを利用してください。これに伴い Windows 版の製品には C++ コンパイラの提供はありませんのでご注意ください (Cコンパイラのみの提供となります)。
  • CUDA 6.5 toolkit はサポートしません。
  • AMD Core Math Library (ACML) の提供を廃止しました。BLAS/LAPACK は OpenBLAS ライブラリを使用してください。
  • RHEL 4 and SLES 10 はサポートしません。Linux の glibc 2.5 以前の Linux distributions はサポートしません。
  • 新しく導入された PGPROFプロファイラには MPI に関する分析機能はありません。

【2017年機能廃止予告】

  • 32ビット用のコンパイラソフトウェアの提供は 来年2017年以降は行なわず 64ビット専用コンパイラの提供のみとなる予定です。
  • Apple OS X 版の PGI Accelerator 機能(CUDA Fortran、OpenACC、CUDA-x86)は、来年2017年リリース版から提供しませんのでご注意ください。

PGI 16.10 (2016年11月)

OpenPOWER architecture CPUs 用の PGI Compilers and tools を正式リリース

PGI Community Edition の最初のリリース

■ PGI アクセラレータ機能の強化

  • CUDA 8.0のプロダクション・リリースのサポート
  • OpenACC cache directive の向上
  • アクセラレータ領域内の structs, unions, derived types サポートの強化
  • atomic operations により拡張型のサポート

■ macOS 上の Xcode 8.0 をサポート

11個のバグフィックス

PGI 16.9 (2016年9月)

■ PGI Accelerator OpenACC Compilers for NVIDIA GPUs

  • NVIDIA Pascal GPUs 用の -ta=tesla:managed コンパイラ・オプションが有効となりました。このオプションは、cc60 サブオプションと共に使用することにより有効となります。
  • NVIDIA Pascal GPUs (compute capability 6.0)用のネイティブな atomic 命令のサポートを追加しました。

17個のバグフィックス

PGI 16.7 (2016年7月)

■ PGI Accelerator OpenACC Compilers for NVIDIA GPUs

  • CUDA Toolkit 8 RC をベータ・サポートしました。現時点で正式な CUDA toolkit 8.0のプロダクション・バージョンがリリースされていないため、PGI 16.7 においては、ベータ機能としてのサポートの位置づけとなります。PGI 16.7 では、デフォルで CUDA 7.0 toolkit が使用されます。CUDA 7.5 あるいは 8.0 toolkit は、-ta=tesla あるいは、-Mcuda のサブオプションに cuda7.5 or cuda8.0 をコンパイル&リンク時に付加することで、これらの toolkit が使用されます。
  • NVIDIA Pascal GPUs (compute capability 6.0)のサポートを追加しました。Pascal GPUをターゲットとする場合は、必ず NVIDIA cuda 8.0 RC を実装し、使用しなければなりません。また、Pascal上で実行するためには、コンパイル時に -ta=tesla あるいは、-Mcuda のサブオプションとして、cuda8.0 あるいは、cc60 を指定してコンパイル&リンクを行う必要があります。なお、-ta=tesla:managed オプションは、現在のところ Pascal GPU 上ではサポートしていません。このオプションは cc60サブオプションを指定すると抑止されます。Compute capability 6.0 は cc60 サブオプションを明示的に指定するとセットされます。あるいは、cuda8.0 サブオプションを使用することによって、暗黙に Compute capability 6.0 はデフォルトの compute capability に追加されます。
  • PGI OpenACC C, C++ and Fortran compilers は、OpenACC 2.5 の機能である kernels 構文上の num_gangs、num_workers、vector_length clauses をサポートしました。この clause は、kernels 領域の起動や任意のサブルーチンコールが行われる際に、 gangs、workers あるいは vector lanes の数を決定するために使用されます。
  • 自動変数(automatic variables) と acc routine directive 内部の private loop clause 内に含まれる配列の挙動が、OpenACC 仕様に準拠するように変更されました。このリリース前においては、自動変数や private 配列は、GPU スレッド当たり一つのみアロケートされていました。OpenACC の仕様では、acc routine gang あるいは acc routine worker内の自動変数、あるいは loop gang 上の private 配列は、gang に対して一度アロケートすることとしています。そして、gang 内の全ての workers と vector lanes間で共用されるものとしています。 acc routine vector あるいは a private array on a loop worker 内の自動配列は、各 worker に対して一度アロケートし、そして、全ての worker の vector lanes 間で共有されることとなります。 A private array on a loop vector は、各 vactor lane に対して一度アロケートされることとなります。16.7 リリースでは、自動配列とloop vector 上の固定サイズの private 配列に対してこの挙動をサポートします。以前のリリースでエラーとなるような挙動を示したプログラムは動作しない場合がありますのでご注意下さい。

■ PGI Debugger

  • 変数の rollover 機能をデバッガの GUI に追加しました。

23個のバグフィックス

PGI 16.5 (2016年5月)

■ PGI Accelerator OpenACC Compilers for NVIDIA GPUs

  • shared memory 内にサイズが変化する配列を置くために cache directive を使用することができます。ただし、これは -ta=tesla のサブオプション safecache が指定された時のみ、許されます。この変更は、コンパイラのデフォルトの挙動に影響を及ぼし、性能に密接に係わります。safecache サブオプションは、、ユーザが shared memory 内に置かれたデータ量が有効サイズを超えないと言う確信を持つ時だけ使用するべきです。ランタイム時に、shared memory のサイズを超えた場合、kernel launch failure が生じます。

■ PGI Profiler

  • Profilerは、CUDA 7.5 ドライバとの互換性を保持しながら CUDA 8.0 ドライバへの互換性も提供するようにしました。

■ Open MPI

  • PGI Workstation/Server/CDK にバンドルする Open MPI のバージョンを 1.10.1 から 1.10.2 に変更しました。
  • Open MPI のインストール時に Open MPI CUDA-aware features を抑止するように指示できます。

バグフィックス

PGI 16.4 (2016年4月)

■ Licensing

  • PGIライセンスサーバとして使用している FlexNet license daemons を version 11.13.1.3 に更新しました。これは既知のセキュリティ脆弱性に対処するための措置です。(FAQ ページ) (詳細記事)
  • PGI 16.4以降において、再度、ライセンスキーの書式の変更を行いました。サブスクリプションが有効で、PGI 16.4 以降を使用する場合は、必ず、新しい license.dat を入手して、ライセンスマネージャの再設定(再起動)する必要があります。

バグフィックス

PGI 16.3 (2016年3月)

■ PGI ccelerator OpenACC Compilers for NVIDIA GPUs

  • 'routine gang' 、あるいは 'worker'、あるいは 'vector' として宣言されたプロシジャー(手続き)へのコールを含む OpenACC parallel 構文をコンパイルする際、あるいは、このプロシジャー(手続き)自身をコンパイルする際、コンパイラは、vector_length を一つの CUDA warp のサイズである 32 に制限するように変更しました。また、こうしたプロシジャー(手続き)へのコールを含む OpenACC kernels 構文をコンパイルする際も同様に、コンパイラは vector clause の長さを 32 に制限します。この変更は、'loop vector' の後のベクトルレーンの同期を行う際のパフォーマンスの問題を解決するための措置です。

バグフィックス

PGI 16.1 (2016年1月)

■ PGI C++ Compiler

  • C++14 を包括的にサポートしました。但し、サポートした C++14 機能を使用するためには GNU GCC 5.0 以上の実装環境が必要となります。なお、GCC 5.1 との互換性を有します。pgc++コンパイラにて、C++14 機能を使用するためには、--c++14 オプション を追加してコンパイルする必要があります。以下の機能を除いた C++14 機能をサポートします。
    • generalized constexpr and constexpr member functions and implicit const
    • variable templates
    • clarifying memory allocation (merged allocation)
  • 内部的にパフォーマンスベンチマークで使用しているC++コードの性能は、PGI 15.1 に比べて 10% 以上の性能向上がありました。
  • GCC 5.1 と互換性を提供する EDG リリース 4.10.1 との統合を行いました。GCC 5.1 によって提供された新しい C++11 機能を使用する場合は pgc++ コンパイラのオプションとして --c++11 を追加してコンパイルしてください。
  • GNU は、バージョン 5.0 において GCC STL ヘッダーファイルを変更しました。この変更は、以前の GCC バージョンでコンパイルされたコードとの互換性の問題が発生します。GCC 5.0 よりも前に作成したオブジェクトとライブラリとの互換性をサポートするための対処策として、-D_GLIBCXX_USE_CXX11_ABI=0 を付してコンパイルすることを進めています。これに関する詳細な情報は、https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.htmlをご覧ください。
PGI 2016において、C++コンパイラは従来の pgcpp(pgCC) コマンドによる STLport をサポートしてきた C++ コンパイラ(レガシー版)は廃止(終息)され、pgc++ コマンドによる C++コンパイラのみとなります。、Linux ならびに OS X においては、明示的に、g++ 互換 pgc++ コマンドをお使いください。pgc++ コンパイラは基本的に、ほとんどの言語機能とオブジェクト(ABI互換)に関して GNU C++(g++) と互換性を有します。但し、pgc++ と g++ のコマンドの「オプション名」に関しては互換性がありません。なお、従来の pgcpp コマンド・コンパイラは、Linux、OS X、Windows 版を含め、 PGI 16.1 以降、廃止されました。
  これに伴い、Windows 版の C++ 言語処理系自体が、PGI 2016 以降、製品として廃止され、Windows版は 「C 言語コンパイラと Fortran コンパイラ」をバンドルした
PGI Fortran/C Compiler 製品と Fortran コンパイラのみの PGI Fortran Compiler 製品の二つの提供となりました。Windows版 PGI C/C++ 単独製品の提供はございません。
 なお、Linux ならびに OS X 版の C++ コンパイラに関しては従来通り、GNU ABI 互換の C++ コンパイラとして、PGI 2016 以降も継続してご提供してまいります。

■ PGI Fortran Compiler

  • AVX SIMD ベクトル化を向上させ、他の Fortran コンパイラ最適化の向上により、例えばいくつかの WRF アプリケーションのワークロードの性能は 15~20% 程度の向上が見られました。
  • Haswellプロセッサ向けのスカラ型/ベクトル型の単精度 pow, exp, log atan の組み込み関数のさらなる最適化がなされました。
  • F2003 associate clause と派生タイプに対して性能向上対応を行いました。

■ PGI Accelerator OpenACC Compilers

  • 次の OpenACC 2.5 機能をサポートしました。
    • OpenACC 2.5 で定義された profile/trace tools インタフェースが以前サポートしてきたインタフェースと置き換えられました。
    • default(present) clause が C, C++, Fortran の Compute 構文でサポートされました。
    • Reference Counting がデバイスデータのやり取りやライフタイムの管理に使用されます。
    • copy, copyin, copyout and create data clauses は、present_or_copy の振る舞い方に変更(OpenACC 2.5 での変更)となります。
    • cc_copyin, acc_create, acc_copyout and acc_delete API routines は、cc_present_or_copyin等 のような振る舞い方に変更(OpenACC 2.5 での変更)となります。
    • Fortran allocatable 属性に対する declare create directive は、新しい振る舞い方に変更(OpenACC 2.5 での変更)となります。
    • APIルーチン acc_memcpy_device を追加しました。Data APIルーチンの非同期バージョンを追加しました。
    • gang clause を有する Orphaned loop内のリダクション操作(reduction clauseの使用)は、OpenACC 2.5 から明確に禁止されましため、その実装となりました。なお、routine gang clause を有した形でコンパイルされた手続き内で gang 並列性を生成するような orphaned loop も同様です。
    • 配列、構造体メンバ、C++クラスメンバに関するリダクションは明確に禁止されました。
    • gang/worker/vector/seq なしの acc routine の使用は、コンパイル・エラーとなります。
  • -ta=maulticore における最内側ループのベクトル化を強化しました。
  • OpenACC kernels 領域内の F90 ポインタの使用をサポートしました。
  • コンパイラオプションである -ta=tesla:pin を -ta=tesla:pinned に置き代えました。pin サブオプションは、GPUへのデータ移動において、ユーザデータを使用する前に、動的にユーザデータを "pinned"します。新しい pinned サブオプションは、代わりにプログラムのアロケート時に pinned メモリを割り付けるように変更しました。OpenACCランタイムは、まず、データメモリが pinned されているかをテストします。もうし、そうであれば、pinned 空間から直接、転送するようにします。pinned サブオプションは、従来の pin サブオプションの時よりもより安定して機能します。
  • -ta=tesla:managed を使用した時の全てのカーネルは、デフォルトで同期モードにて動作します。すなわち、 PGI_ACC_SYNCHRONOUS=1 がデフォルトとしてセットされます。この挙動は安全であるものの性能に影響を及ぼすかもしれません。カーネルを明示的に非同期に動作させるには、PGI_ACC_SYNCHRONOUS=0 をセットしてください。
  • ACC_BIND 環境変数は、-ta=multicore の際、デフォルトでセットされます。ACC_BINDは、OpenMP における MP_BIND と同じようなものです。

■ PGI Debugger and Profiler

  • 新しい PGPROF プロファイラを提供します。これは、CPUコードのプロファイリングもしくは、CPUとGPU の両方のプロファイリングが可能です。 PGPROF はグラフィカル、あるいはコマンドラインベースのインタフェースを持ちます。新PGPROF は、以前のバージョンの PGPROF と互換性がありません。なお、MPIに関する分析機能は廃止されました。
  • OpenACC 並びに CUDA Fortran における Fortran Automatic Array のサポート
  • PGDBG デバッガにAVX3命令のディスアセンブリ機能をサポートしました。
  • Fortran 文字型と名前付きコモンのデバッグ表示を強化しました。
  • OS X上の shared objects のデバッキンを強化しました
  • 全てのプラットフォーム上で大型アプリケーションをデバッグ起動する際のロードタイムを削減しました。

■ Libraries

■ その他の機能、変更ポイント

  • PGI 2016 において、ライセンスキーの書式が変更されました。現在利用している全てのユーザは、PGI 16.1 以降のバージョンを使用する際に新しい license.dat を取得して、セットする必要があります。
  • PGI フローティングライセンスのキーフォーマットが変更され、複数のフローティングライセンス(プラットフォームタイプやユーザ数が異なるlicense keys) を一つの license ファイルに統合できるように変更されました。これによって、ライセンスのユーザ数を任意に増加させることができます。

■ 検証済み使用可能プラットフォームの追加、その他

Ubuntu 15.10, Fedora 23, CentOS 7, RHEL 7.2, SLES 12 and OS X El Capitan 等

PGI 2016 サポート OS の詳細へ

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