• 検索結果がありません。

PGI 6

N/A
N/A
Protected

Academic year: 2021

シェア "PGI 6"

Copied!
16
0
0

読み込み中.... (全文を見る)

全文

(1)

PGI

®

Server 2012

PGI

®

Workstation 2012

リリースノート

Release 2012

2012 年 2 月

2012 年 2 月作成(PGI 12.1)

株式会社 ソフテック

(2)

目次

1 サポートするプラットフォーム ... 1

1.1 PGI Workstation/Server Release 2012 のソフトウェア内容 ... 1

1.2 サポートするプロセッサ・システムについて ... 1 1.3 サポートする OS の追加 ... 3 2. PGI 2012 の新機能、変更点等 ... 5 2.1 新しい機能の概要 (更新履歴)... 5 2.2 PGI 2012 のコンパイラ・オプションに関する特記事項... 6 2.3 PGI 2012 ツールに関する特記事項 ... 6

2.4 PGI Accelerator and CUDA Fortran の機能強化 ... 6

2.3 C++コンパイル 互換性 ... 7

2.4 ランタイム・ライブラリ・ルーチンの新機能と変更点 ... 7

2.5 ライブラリ・インタフェース ... 8

2.6 Mac OS X Lion サポート ... 8

2.7 PGI CUDA C++ Compilers for x86 ... 8

3 PGI Workstation 2012 ... 10

3.1 PGI 2012 for Linux ... 10

3.2 PGI 2012 for Windows ... 10

3.3 PGI 2012 for Mac OS X ... 10

4. 配布と配置 ... 10 4.1 アプリケーションの配置と再配布 ... 10 5. 既知の制限事項 ... 11 5.1 一般的な制限事項 ... 11 5.2 プラットフォーム特有の制限事項 ... 12 5.2.1 Linux ... 12 5.2.2 Apple Mac OS X ... 12 5.2.3 Microsoft Windows ... 12 5.3 PGDBG に関する問題 ... 13 5.4 PGPROF に関する問題 ... 13

5.5 CUDA Fortran Toolkit に関する制限事項、問題 ... 14

5.6 修正事項 ... 14 本資料の全ての情報は、現状のまま提供されます。株式会社ソフテックは、本資料に記述あるいは表現 されている情報及びその中に非明示的に記載されていると解釈されうる情報に対して一切の保証をいたし ません。また、本資料に含まれる情報の誤りや、それによって生じるいかなるトラブルに対しても一切の 責任と補償義務を負いません。また、本資料に掲載されている内容は、予告なく変更されることがありま す。 本資料で使用されている社名、製品名などは、一般に各社の商標または登録商標です。 株式会社ソフテック 〒 154-0004 東京都世田谷区太子堂 1-12-39 http://www.softek.co.jp/

Copyright © 2012, SofTek Systems, Inc.

All rights reserved.

(3)

米国PGI 社の PGI Workstation/Server コンパイラのバージョン 2012 のリリースノートを以下に記します。 本リリースにおける製品の主な新機能、特徴に関して纏めたものです。

1 サポートするプラットフォーム

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 用ソフトウェアの全ての機能も包括し、64 ビット x64 互換のプロセッサ上で動作 する64 ビット Windows®オペレーティングシステム上で利用可能です。 32 ビット Apple Mac OS X

32 ビットあるいは 64 ビットの Intel®ベースのプロセッサを搭載したシステムで、32 ビット Apple Mac オペレーティングシステム上で利用可能です。

64 ビット Apple Mac OS X

64 ビットの Intel®ベースのプロセッサを搭載したシステムで、64 ビット Apple Mac オペレーティン グシステム上で利用可能です。

1.1 PGI Workstation/Server Release 2012 のソフトウェア内容

• PGFORTRAN ネイティブ OpenMP/自動並列 Fortran 2003 コンパイラ • PGF77 ネイティブ OpenMP/自動並列 FORTRAN 77 コンパイラ • PGHPF データ並列 High Performance Fortran コンパイラ

(Note: PGHPF は Linux のみサポートします)

• PGCC ネイティブ OpenMP/自動並列 ANSI C99 and K&R C コンパイラ • PGC++ ネイティブ OpenMP/自動並列 ANSI C++ コンパイラ

• PGPROF マルチスレッド/OpenMP/MPI 並列対応グラフィカル・プロファイラ • PGDBG マルチスレッド/OpenMP/MPI 並列対応グラフィカル・デバッガ

• (Linux 用製品のみ) MPICH MPI ライブラリ, version 1.2.7 (32-bit and 64-bit )をバンドル • PDF、HTML によるオンラインドキュメントと UNIX man ページ

• (Windows 用製品のみ) Win32 and Win64 環境上で、UNIX ライクの bash シェル・コマンド環 境(Cygwin)

(注意) ご購入ライセンス製品によって、使用できるコンパイラ言語の種類が決まります。 1.2 サポートするプロセッサ・システムについて

• 32 ビット x86 系のプロセッサ並びに 64 ビットの AMD64、Intel® 64 のプロセッサに対応します。PGI 2012 において、サポートする CPU は以下の表のとおりです。

(4)

Processors supported by PGI 2012

Brand CPU cores -tp <target>

Mem Addressing

Floating point HW

SSE1 SSE2 SSE3 SSSE3 SSE4 ABM SSE4a AMD Bulldozer 6 Bulldozer-64 64-bit Yes Yes Yes No Yes Yes AMD Bulldozer 6 Bulldozer-32 32-bit Yes Yes Yes No Yes Yes AMD Istanbul 6 istanbul-64 64-bit Yes Yes Yes No Yes Yes AMD Istanbul 6 Istanbul-32 32-bit Yes Yes Yes No Yes Yes AMD Opteron/Quad-Core 4 shanghai-64 64-bit Yes Yes Yes No No Yes AMD Opteron/Quad-Core 4 Shanghai-32 32-bit Yes Yes Yes No No Yes AMD Opteron/Quad-Core 4 Barcelona-64 64-bit Yes Yes Yes No No Yes AMD Opteron/Quad-Core 4 Barcelona-32 32-bit Yes Yes Yes No No Yes AMD Opteron/Athlon64 2 k8-64 64-bit Yes Yes Yes No No No AMD Opteron/Athlon64 2 k8-32 32-bit Yes Yes Yes No No No AMD Opteron Rev E/F

Turion/Athlon64 2 k8-64e 64-bit Yes Yes Yes No No No AMD Opteron Rev E/F 2 k8-32 32-bit Yes Yes Yes No No No AMD Turion64

Turion/Athlon64 1 k8-64e 64-bit Yes Yes Yes No No No AMD Turion64 1 k8-32 32-bit Yes Yes No No No No Intel Core i7/i5/i3

(Sandy Bridge) 4 sandybridge-64 64-bit Yes Yes Yes Yes Yes Yes Intel Core i7/i5/i3

(Sandy Bridge) 4 Sandybridge-32 32-bit Yes Yes Yes Yes Yes Yes Intel Core i7/Core i5/i3

(Nehalem) 4/6 nehalem-64 64-bit Yes Yes Yes Yes Yes Yes Intel Core i7/Core i5/i3

(Nehalem) 4/6 Nehalem-32 32-bit Yes Yes Yes Yes Yes Yes Intel Penryn 4 penryn 32-bit Yes Yes Yes Yes Yes No Intel Penryn 4 penryn-64 64-bit Yes Yes Yes Yes Yes No Intel Core 2 2 Core2 32-bit Yes Yes Yes Yes Yes No Intel Core 2 2 Core2-64 64-bit Yes Yes Yes Yes Yes No Intel P4/Xeon EM64T 2 p7-64 64-bit Yes Yes Yes Yes No No Intel P4/Xeon EM64T 2 p7 32-bit Yes Yes Yes Yes No No Intel Xeon/Pentium4 1 p7 32-bit Yes Yes No No No No AMD Athlon XP/MP 1 athlonxp 32-bit Yes No No No No No Intel Pentium III 1 piii 32-bit Yes No No No No No AMD Athlon 1 athlon 32-bit No No No No No No AMD K6 1 k6 32-bit No No No No No No Intel Pentium II 1 p6 32-bit No No No No No No Generic Generic x86 1 p5 or px-32 32-bit No No No No No No

(5)

1.3 サポートする OS の追加

• PGI 2012 において、サポートする OS は以下のとおりです。なお、CentOS や Scientific Linux は、 Red Hat のクローン OS ですので、Red Hat と同じように利用可能です。

Linux Operating Systems and Features Supported in PGI 2012

Distribution Type 64-bit HT pgC++ pgdbg NPTL NUMA glibc GCC RHEL 6.2 Linux Yes Yes Yes Yes Yes No 2.12 4.4.6

RHEL 6.1 Linux Yes Yes Yes Yes Yes No 2.12 4.4.5

RHEL 6.0 Linux Yes Yes Yes Yes Yes No 2.12 4.4.4

RHEL 5.6 Linux Yes Yes Yes Yes Yes No 2.12 4.4.4

RHEL 5.5 Linux Yes Yes Yes Yes Yes No 2.5 4.1.2

RHEL 5.4 Linux Yes Yes Yes Yes Yes No 2.5 4.1.2

RHEL 5.3 Linux Yes Yes Yes Yes Yes No 2.5 4.1.2

RHEL 5.0 Linux Yes Yes Yes Yes Yes No 2.5 4.1.2

RHEL 4.0 Linux Yes Yes Yes Yes Yes No 2.3.4 3.4.3

Fedora C-14 Linux Yes Yes Yes Yes Yes Yes 2.112 4.4.5

Fedora C-13 Linux Yes Yes Yes Yes Yes Yes 2.12 4.4.4

Fedora C-12 Linux Yes Yes Yes Yes Yes Yes 2.11 4.4.2

Fedora C-11 Linux Yes Yes Yes Yes Yes Yes 2.9 4.3.3

Fedora C-10 Linux Yes Yes Yes Yes Yes Yes 2.9 4.3.2

Fedora C-9 Linux Yes Yes Yes Yes Yes Yes 2.8 4.3.0

Fedora C-8 Linux Yes Yes Yes Yes Yes Yes 2.7 4.1.2

Fedora C-7 Linux Yes Yes Yes Yes Yes Yes 2.6 4.1.2

Fedora C-6 Linux Yes Yes Yes Yes Yes Yes 2.5 4.1.1

Fedora C-5 Linux Yes Yes Yes Yes Yes Yes 2.4 4.1.0

Fedora C-4 Linux Yes Yes Yes Yes Yes No 2.3.5 4.0.0

SUSE 11.3 Linux Yes Yes Yes Yes Yes Yes 2.11.2 4.5

SUSE 11.2 Linux Yes Yes Yes Yes Yes Yes 2.10.1 4.4.1

SUSE 11.1 Linux Yes Yes Yes Yes Yes Yes 2.9 4.3.3

SUSE 11.0 Linux Yes Yes Yes Yes Yes Yes 2.8 4.3.0

SuSE 10.3 Linux Yes Yes Yes Yes Yes Yes 2.6.1 4.2.1

SuSE 10.2 Linux Yes Yes Yes Yes Yes Yes 2.5 4.1.0

SuSE 10.1 Linux Yes Yes Yes Yes Yes Yes 2.4 4.1.0

SuSE 10.0 Linux Yes Yes Yes Yes Yes Yes 2.3.5 4.0.2

SuSE 9.3 Linux Yes Yes Yes Yes Yes Yes 2.3.4 3.3.5

SLES 11 Linux Yes Yes Yes Yes Yes Yes 2.9 4.3.3

SLES 10 Linux Yes Yes Yes Yes Yes Yes 2.4 4.1.0

SLES 9 Linux Yes Yes Yes Yes No Yes 2.3.3 3.3.3

Red Hat 9.0 Linux No No Yes Yes Yes No 2.3.2 3.2.2

Ubuntu

11.10 Linux Yes Yes Yes Yes Yes Yes 2.13.20 4.6.1 Ubuntu

(6)

Ubuntu

10.10 Linux Yes Yes Yes Yes Yes Yes 2.12.1 4.4.5 Ubuntu

10.04 Linux Yes Yes Yes Yes Yes Yes 2.11.1 4.4.3 Ubuntu 9.10 Linux Yes Yes Yes Yes Yes Yes 2.10.1 4.4.1

Ubuntu 9.04 Linux Yes Yes Yes Yes Yes Yes 2.9 4.3.3

Ubuntu 8.10 Linux Yes Yes Yes Yes Yes Yes 2.8 4.3.2

Ubuntu 8.04 Linux Yes Yes Yes Yes Yes Yes 2.7 4.2.1

HT = hyper-threading, NPTL = Native POSIX Threads Library, NUMA = Non-Uniform Memory Access.

• Windows 上で使用可能なコマンドベースのコンパイラ(PGI Workstation & Server)、PGI Visual Fortran が対応するOS は、以下のとおりです。PGI 2012 は、Windows 2000 はサポートしません。

Windows® Operating Systems and Features Supported in PGI 2012

OS Type 64-bit HT pgC++ pgdbg NPTL NUMA glibc GCC

Microsoft® Windows® (32ビット)

7 No Yes Yes Yes NA Yes NA NA Vista No Yes Yes Yes NA Yes NA NA XP No Yes Yes Yes NA Yes NA NA 2003 No No Yes Yes NA Yes NA NA 2008 No Yes Yes Yes NA Yes NA NA

Microsoft® Windows® (64ビット)

7 Yes Yes Yes Yes NA Yes NA NA Vista Yes Yes Yes Yes NA Yes NA NA XP 64 Yes Yes Yes Yes NA Yes NA NA

2003

x64 Yes Yes Yes Yes NA Yes NA NA HPC

Server 2008

Yes Yes Yes Yes NA Yes NA NA 2008

x64 Yes Yes Yes Yes NA Yes NA NA

• Intel プロセッサベースの Mac OS X は、以下のとおりです。PGI 2012 では、Mac OS X 10.5 Leopard をサポートしませんのでご注意下さい。

Apple Operating Systems and Features Supported in PGI 2012

OS Type 64-bit HT pgC++ pgdbg NPTL NUMA glibc GCC

Apple Mac OS X

Lion Yes No Yes Yes NA NA NA 4.2.1 Snow

(7)

2. PGI 2012 の新機能、変更点等

2.1 新しい機能の概要 (更新履歴)

PGI 12.1 リリースのサマリー(2012 年 1 月)

■ Release 1.0 of CUDA-x86

マルチコア x86 プラットフォーム向け CUDA C/C++コンパイラのリリース 1.0 を実装しました。 CUDA-x86 は、GPU だけではなく広範囲なシステムに対するプログラミング・モデルにまで CUDA の適 用範囲を拡げるものです。CUDA-x86 のリリースは、x86+GPU アーキテクチャの統合並列プラットフ ォーム化に向けた重要なステップとなります。

CUDA-x86 向け PGI コンパイラは、CUDA C/C++言語を AMD 社/ Intel 社製の汎用マルチコア x86 マ イクロプロセッサ用ネイティブ並列プログラミング言語として処理します。CUDA-x86 は、NVIDIA 社 の GPU 用 CUDA C/C++ 言語を完全にサポートしているため、CUDA アプリケーションのソース・コー ドを再コンパイルしてx86 ホスト上で実行することが可能です。CUDA-x86 を使用することで、NVIDIA GPU アクセラレータの有無に関わらず、x86 ベースのワークステーション、サーバおよびクラスタ上で 実行できるように CUDA アプリケーションをコンパイルしたり、最適化を図ったりすることができま す。x86 を対象としてコンパイルされた CUDA C/C++ アプリケーションは、Intel®社/ AMD 社製 CPU の複数コアとストリーミング SIMD(Single Instruction Multiple Data)機能を使用して並列実行を実現 します。なお、この 12.1 のリビジョンでは、以下の全ての特徴機能を網羅していません。今後順次、 提供される予定です。

(参考) First Look: PGI CUDA C/C++ for x86

 x86 ホストに対するネイティブ CUDA C/C++の最適化および並列化  x86 ホスト上での CUDA C/C++の低オーバヘッド・ネイティブ並列実行

 1 コアを使用して各 CUDA スレッド・ブロックを実行し、同期化を自動的にできる限り排除  新しい AVX 命令のサポートを含め、AMD 社製および Intel 社製最新プロセッサに対応

 デバイス・カーネル関数を自動的にインライン化し、シェブロン構文を並列/ ベクトル・ループに変 換

 GPU テクスチャ・メモリをサポート

 NVIDIA CUBLAS ライブラリをサポート(今後のリビジョンでサポート)  NVIDIA 社の GPU 用 CUDA C/C++言語を x86 ホスト上で完全サポート  Intel 社/ AMD 社製 CPU に対する全ての PGI ホスト最適化をサポート

■ PGDBG デバッガは、ローカルとリモートのデバッギングをサポート

PGDBG は、ローカル並びにリモート・システム上で動作するプログラムのデバッギングをサポート しました。 詳細は、2.3 項に説明しています。

Eclipse 上でのサポート(Linux)

最新の EDG 4.1 フロントエンドを搭載し、GNU とマイクロソフトとの互換性を強化しました。外部 インライン(extern inline) のサポート、向上した BOOST サポート、スレッド・セーフの例外ハンドリ ング等の機能が含まれます。

■ PGI Accelerator x64+GPU native Fortran 2003 and C99 compilers and CUDA Fortran これらのコンパイラにおいて使用するNVIDIA のライブラリは、CUDA Toolkit 4.0 をデフォルトとして

(8)

使うように変更しました。 ■ 66 個のバグフィックス適用 2.2 PGI 2012 のコンパイラ・オプションに関する特記事項 未知のコンパイラ・オプションを指定した場合、今までは「警告」レベルの扱いでしたが、PGI 7.1 よ り、「エラー」として扱われます。この変更によって、コンパイラが認識できないオプション(スイッ チ)が指定された場合、コンパイルエラーとなり停止することになります。(以前のバージョン PGI 7.1 から適用されたデフォルトですのでご注意下さい)

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

しかし、-noswitcherror を指定すると、従来のように、未知のオプション(スイッチ)が指定された 場合、エラーで停止する代わりに「警告」を出すように変更できます。 2.3 PGI 2012 ツールに関する特記事項 PGDBG は、ローカル並びにリモート・システム上で動作するプログラムのデバッギングをサポート しました。  ローカルデバッギング -- PGDBG utility を起動したシステム上で動作するプログラムをデバッグし たい場合、これはローカルデバッグであり、そのローカルなシステム上にPGI のライセンスキーを 必要とします。(従来法)  リモートデバッギング -- PGDBG utility を起動したシステムとは別のシステム上で動作するプログ ラムをデバッグしたい場合、これはリモートデバッグであり、そのリモート・システム上にPGI の ライセンスキーを必要とします。このリモート・システム上では、ライセンス製品として PGI Workstation、PGI Server、PGI CDK のいずれかがインストールされている必要があります。 2.4 PGI Accelerator and CUDA Fortran の機能強化

1. PGI Accelerator x64+GPU native Fortran95/03 and C99 コンパイラと CUDA Fortran

PGI CUDA Toolkit 4.0 をデフォルトのツールキットとして使用します。また、PGI コンパイラとツール は、以前のインストレーションでシステム上に実装されている、以前のCUDA Toolkit のバージョンもサ ポートを続けます。

PGI 2012 のリビジョン 12.1 のデフォルトは CUDA 4.0 です。このため、CUDA Fortran のホスト側の プログラムは、再度コンパイルし直す必要があります。これは、PGI 12.1 CUDA Fortran runtime library が以前のCUDA Fortran でリリースされたものと互換性がないものがあるからです。

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

PGI Accelerator の場合

--- For CUDA toolkit 4.0 -ta=nvidia:cuda4.0 あるいは -ta=nvidia:4.0

PGI CUDA Fortran の場合

--- For CUDA toolkit 4.0 -Mcuda=cuda4.0 あるいは -Mcuda=4.0

(9)

CUDA Toolkit のデフォルトのバージョンを指定する方法として、PGI コンパイラ・ソフトウェアの実 装場所の bin ディレクトリ(Linux の場合は、$PGI/linux86-64/12.1/bin/)配下に、 siterc ファイ ルを作成して置く方法とユーザのホームディレクトリ配下に.mypgirc ファイルを置く方法がありま す。いずれの場合でも、ファイル内に以下の内容を定義します。

set DEFCUDAVERSION=4.0;

PGI Accelerator Runtime Routines

PGI Compiler Reference Manual の 4 章“PGI Accelerator Compilers Reference” にランタイムルーチン の詳細が説明されています。

CUDA でのメモリ管理- メモリ管理ルーチン cudaMemGetInfo は、デバイス上にアロケートされて

いるフリーメモリ量と総メモリ量(バイト)を返すルーチンです。cudaMemGetInfo を使用する際の構 文は以下の通りです。

integer function cudaMemGetInfo( free, total ) integer(kind=cuda_count_kind) :: free, total

CUDA デバイスのビルトイン・ルーチンを使用する際の宣言-CUDA Device のビルトイン・ルーチ ンへのInterface 宣言を Fortran Module の中で行うことが可能となりました。

この Module へアクセスするためには、プログラムの中で以下の宣言を行います。 Fortran プログラムは、 use cudadevice 構文を宣言する

C プログラムでは、ヘッダーファイル #include <cudadevice.h> を宣言する

これにより、CUDA Fortran の global あるいは device サブプログラムにおいて、あるいは、CUF kernel の中で、あるいは PGI Accelerator 計算領域の中で、Fortran プログラム、C プログラム 共に、これらのルーチンを使用できます。PGI コンパイラは、ホストコード用にこれらのルーチン の実装を行いますが、ホスト用に特別の最適化を施すものではありません。CUDA ビルトイン・ル ーチンに関するリストは、PGI Cuda Fortran Programming and Reference の中の「Fortran Module 項」をご参照下さい。 2.3 C++コンパイル 互換性 PGI 2012 リリースにおいて、C++の以前のバージョンとのオブジェクトの互換性がありません。以前おリ リース上で作成された全てのC++ソースファイルとライブラリは、PGI 2012 以降のオブジェクト・ファイ ルとリンクする際、再コンパイルが必要です。 --- PGI 2012 C++オブジェクトは、以前のバージョンのものと互換性がありません。 --- 2.4 ランタイム・ライブラリ・ルーチンの新機能と変更点

PGI Accelerator コンパイラ用のランタイム・ライブラリに新しいルーチンを追加しました。詳細は、PGI Compiler User’s Guide の” Using an Accelerator”章をご参照下さい。

(10)

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

PGI Fortran は、Fortran Module を使用して、C プログラムのインタフェースを export するライブラリへ のアクセスが可能です。これらのライブラリと関数の詳細は、PGI Compiler User’s Guide の 8 章をご参照下 さい。

2.6 Mac OS X Lion サポート

Mac OS X Lion へのアップグレードを行った場合、PGI コンパイラ・ソフトウェアをインストールする前に、 Xcode 開発環境を 4.0 以上に更新した方がよいでしょう。その手続は、以下の通りです。

1. Go to Apple App store. Apple menu | App Store... 2. "Xcode"を検索

3. "Install" ボタンをクリック

4. 上記 3 が終了次第、アプリケーションフォルダー内の"Install Xcode" icon をダブルクリック

2.7 PGI CUDA C++ Compilers for x86

CUDA C/C++ プログラムを PGI C++ コンパイラでコンパイルして、この実行バイナリを x86 プロセ ッサ上で実行できる PGI CUDA C for Multi-core x86 を正式リリースしました。

コンパイルオプション • -Mcudax86

PGI C++ コンパイラのコマンドライン・オプションとして追加されました。プログラムファイル が .cu の suffix を有している場合は、このオプションを指定する必要はありません。ただし、CUDA 構文の認識を行うだけでなく、このオプションは、リンク時に必要とされるライブラリをリンクする ために必要となります。 • --no_using_std C++ の標準 namespace を暗黙に使用しないようにするためのオプションです。このオプションは、 pgC++と g++コンパイラ間での同一性を確保するために重要なオプションとなります。 サンプルコード

以下に、Linux 上で CUDA SDK MonteCarlo example をコンパイルして実行した場合の例を示しま す。

なお、SDK 用のサンプルプログラムは、Linux 版の場合は、$PGI/linux86(-64)/2012/cuda/cudaX86SDK 配下に提供しています。

Windows 版の場合は、C:¥Program files¥PGI¥win64(win32)¥2012¥cuda¥cudaX86SDK 配下に、また MacOS X 版では、$PGI/osx86(-64)/2012/cuda/cudaX86SDK 配下に提供しています。

% pgcpp --no_using_std -Mcudax86 -DUNIX -O2 ¥ -I. -I../../common/inc -I../../shared/inc ¥

MonteCarlo.cpp MonteCarlo_gold.cpp MonteCarlo_SM10.cu MonteCarlo_SM13.cu ¥ -L../../lib -L../../common/lib/linux -L../../../shared/lib ¥

-lcutil_x86_64 -lshrutil_x86_64 % ./a.out

[Monte Carlo]

Generating input data... Allocating memory...

Generating normally distributed samples... Running GPU Monte Carlo...

(11)

Options : 256

Simulation paths: 262144 Time (ms.) : 524.278015

GPU options per sec.: 488.290549 Simulation paths: 262144

Time (ms.) : 524.278015

GPU options per sec.: 488.290549

GPU Monte Carlo vs. Black-Scholes statistics L1 norm : 2.971674E-06

Average reserve: 387.263539

CPU Monte Carlo vs. Black-Scholes statistics... L1 norm: 2.970427E-06

Average reserve: 386.847322 CPU vs. GPU Monte Carlo statistics... L1 norm: 3.964267E-08

[Monte Carlo] - Test summary PASSED

Debugging CUDA-x86 Applications with PGDBG

PGDBG を用いて、CUDA デバイスコードをデバッグすることができます。デバイスコードにブレーク ポイント設け、OMP_NUM_THREADS スレッド数を使い、CUDA スレッドをエミュレートするため に、各々を一つのtask としてブレークポイントに到達するまで、並列に実行します。

(参考) http://www.pgroup.com/lit/articles/insider/v3n2a1.htm

CUDA C++ for GPUs

本リリースでは、CUDA C++ for GPU のいくつかの機能がサポートされていません。 • Warp-synchronous programming

「Warp-synchronous programming」は、現在のところサポートする計画はありません。多くの CUDA SDK の実例は、Warp-synchronous programming を使用しています。その例として、リダク ションがありますが、これは、CUDA x86 のために書き換える必要があります。例えば、MonteCarlo code のリダクションの場合は、以下のように書き換えることが必要です。

template<class T, unsigned int blockSize>

__device__ void sumReduceSharedMem(volatile T *sum, volatile T *sum2, int tid) {

// do reduction in portable, non-warp-synchronous manner for(unsigned int s=256; s>0; s>>=1)

{

if (blockSize >= (s+s)) { if (tid < s) {

sum[tid] += sum[tid+s]; sum2[tid] += sum2[tid+s]; }

__syncthreads(); }

} }

(12)

• OpenGL との相互運用性に関しても、将来のリリースでサポートするかもしれません。

3 PGI Workstation 2012

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

3.1 PGI 2012 for Linux

Java Runtime Environment (JRE)

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

libXau libXdmcp libxcb libX11 libXext

3.2 PGI 2012 for Windows

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

3.3 PGI 2012 for Mac OS X

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

4. 配布と配置

4.1 アプリケーションの配置と再配布 PGI コンパイラで構築されたプログラムは、ランタイム・ライブラリ・ファイルを必要とする場合があ ります。PGI コンパイラがインストールされていないシステム上でこのようなプログラムを実行するよう な場合は、プログラムと共にランタイム・ライブラリ・ファイルも配布する必要があります。このために、 全てのOS プラットフォーム用の再配布用ファイルを提供しています。Windows 版では、PGI は、Microsoft® の再配布ファイルも提供しています。 PGI 再配布用ランタイム・ライブラリ PGI 2012 リリースでは、ランタイム・ライブラリを含むディレクトリは以下のとおりです。12.x は、 インストールしたリビジョン番号を示します。 • $PGI/linux86/12.x/REDIST • $PGI/linux86-64/12.x/REDIST • $PGI/win32/12.x/REDIST • $PGI/win64/12.x/REDIST • $PGI/osx86/12.x/REDIST

(13)

これらのディレクトリには、PGI End-user License Agreement(EULA) の条項に基づいた PGI 2012 ライ センス契約によって再配布可能なPGI Linux ランタイム・ライブラリの共有オブジェクト・ファイル、あ るいは、Windows ダイナミック・リンク・ライブラリ(DLL)が含まれます。PGI End-user License Agreement(EULA)の正式なコピーは、2012 ディレクトリ、あるいはフォルダの中に含まれております。

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

Linux REDIST ディレクトリに中には、サポートする全ての(CPU)ターゲット用の PGI ランタイム・ラブ ラリの共有オブジェクト・ファイルが含まれています。これによって、PGI がサポートしている、ほとん どのLinux システム上で実行することが可能な実行モジュールと PGI ランタイム・ライブラリのパッケー ジを作成することが可能となります。但し、このために必要な事項は、以下のとおりです。

• 実行モジュールを実行するエンドユーザは、ランタイム・ライブラリの場所(パス)の設定等、その ための適切な環境を構築しておくこと

• Linux においては、PGI 共有オブジェクトの検索場所を指定するために LD_LIBRARY_PATH 環境変数 をセットすること。

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

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

Microsoft は、これらのランタイム用ファイルを含む vcredist_x86.exe と vcredist_x64.exe と言うインス トレーション・パッケージを提供しています。また、redist ディレクトリ内にも同じものが用意されてい ます。

5. 既知の制限事項

この章は、既知の制約事項や、ドキュメンテーションのエラー、PGI Workstation/Server への修正事項等 を含みます。 5.1 一般的な制限事項 ここで述べる問題の多くは、コンパイラ・オプション、サブオプションの特定な使用法に関連するもので す。 • PGI の以前のバージョンで作成されたオブジェクト・ファイルは、PGI 2012 のオブジェクトと互換 性がありませんので、再コンパイルが必要です。

• -i8 オプションを使用するプログラムにおいて、PGI コンパイラにバンドルしている ACML ライブラ リととともに使用する場合、互換性がありません。このオプションの互換ライブラリに関しては、 developer.amd.com をご参照ください。 • -i8オプションの使用するプログラムにおいて、MPIライブラリとACMLライブラリを使用する場合、 互換性がありません。これらのライブラリとInteger*8 配列 size を引数に使用した場合、プログラム は異常終了します。 • PGCC の-Mipa=libopt と-Mipa=vestigial オプションを同時に使用した場合、リンク時に未解決な参照 が生じる場合があります。これは、-Mipa にサブオプション vestigial を付加することにより、エラー となる関数が削除されるために起こります。この場合は、vestigial を付加せずに、-Mipa のみの指定 で対処してください。

(14)

• -mp を使用して生成された OpenMP プログラムが、SuSE9.0 システム上の複数プロセッサで並列実 行した場合、極端に遅くなります。しかし、これと同じ実行モジュールが SuSE9.1 上で動作させる と期待される性能と効果が得られます。 5.2 プラットフォーム特有の制限事項 ここでは、各プラットフォーム別のコンパイラ制限事項について説明します。 5.2.1 Linux • -mcmodel=medium オプションを使用してコンパイルされたオブジェクトを組み込んだプログラム は、静的に(Static に)リンクされることはできません。これは、linux 86-64 環境における制約事項 であり、PGI コンパイラによる制約事項ではありません。 5.2.2 Apple Mac OS X

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

• PGPROF において、Mprof=func あるいは、-Mprof=lines の使用は、サポートしておりません。Pgcollect utility を使用して下さい。

5.2.3 Microsoft Windows

• Cygwin の emacs エディターを適切に機能させるために、CYGWIN 環境変数に対して「tty」と言う値 をセットする必要があります。これは、emacs を起動するシェルを呼び出す前に、セットしておく 必要があります。しかしながら、この設定は、PGDBG をコマンドラインのインタフェースである –text オプションで起動したときに互換性がないため、アボートします。従って、この設定の場合は、 pgdbg –text のコマンドを使用できません。Cygwin term は、この問題を解決します。

• Windows において、cygwin に含まれる vi のバージョンは、SHELL 変数に予期しないものが指定さ れている場合、問題が起きる可能性があります。このケースの場合、vi が起動される時、次のような メッセージを出力します。この問題を修復するには、SHELL 環境変数に対して cygwin の bin ディレ クトリの中のシェルを指定してください。(例、/bin/bash)

E79: Cannot expand wildcards Hit ENTER or type command to continue

• Win64 上の C++プログラムの PGI Unified Binary を作成するために、-tp x64 オプションを指定する とコンパイルができません。これは、C++用の-tp x64 が、Windows プラットフォーム上では、まだ、 サポートされていないためです。 • Windows 上で、デバッギングのためにビルドされたランタイム・ライブラリ(例 msvcrtd と libcmtd) は、PGI Workstation には含まれていません。デバッグ用途のために、-g オプションを付けてコンパ イルするとき、PGI ランタイム・ライブラリと Microsoft ランタイム・ライブラリの両方の標準的な non-debug バージョンが、いつも使用されます。この制約は、アプリケーションコードのデバッギ ングに影響しません。 以下は、Windows と PGDBG に係る問題・制限事項となります。 • PGDBG Windows - Windows では、一般にディレクトリ・パス名を区切るためにバックスラッシュ 文字(“¥” )を使用します。PGDBG は、C 言語の数式表示として、バックスラッシュをエスケープ文字

(15)

の意味として使用します。しかし、Windows 上の PGDBG においては、ディレクトリ・パス名を区切 るためにフォワードスラッシュ文字(”/”)を使用してください。 (注意)上記事項はDEBUG コマンド、あるいはコマンドライン上の実行モジュール名には適用され ません。(但し、この慣習自体は、これらのコマンドにおいても動作します) • Windows プラットフォーム上の PGDBG において、一つのプロックである「システムコール」を超え てシングル・ステップ実行したとき、Windows は stepi/nexti の動作をタイムアウトします。これを 改善する方法に関しては、オンライン www.pgroup.com/support/tools.htmをご参照ください。 以下は、Windows と PGPROF に係る問題・制限事項となります。

• PGI Workstation ランタイム・ライブラリ DLLs と共に、-Mprof を使用しないでください。プロファ イリングのための実行モジュールを構築するためには、スタティック・ライブラリを使用してくださ い。なお、Windows 上では基本的に、–Bdynamic を使用しない限り、スタティック・ライブラリが デフォルトとなります。 5.3 PGDBG に関する問題 • PGDBG-.so や.dll 等の shared ライブラリは、そのライブラリの中に含まれるコードがブレークポイ ントとしてセットされる前にロードされていなければなりません。 • シェアード・ライブラリをロードする際に PGDBG 内の問題により、MPICH-1 のデバッギングにおい てrank0 のプロセス以外のプロセスのブレークポイントが無視されます。これは、ランダムなアドレ スを有効にするシェアード・ライブラリのローディングを行っている時に生じます。

• PGDBG – 64bit の Unified Binaries(一つ以上の-tp ターゲットを指定して構築されたモジュール)の デバッギングは、フルにサポートされません。いくつかのサブプログラムの名前が unified binaries を生成する過程で変更されています。PGDBG は、アプリケーションのソースコード内で使用されて いるプログラム名とこれら変更された名前との間の変換を行いません。デバッグにおいては、Unified Binaries 生成オプションを付けずに、native なプロセッサターゲットで実行モジュールを生成してく だ さ い 。 あ る い は 、 Unified Binaries の デ バ ッ グ を 行 う 方 法 に 関 し て は 、 http://www.pgroup.com/support/tools.htm に詳細な情報がありますので、ご参照下さい。

• Mac OS X Snow Leopard 上の PGDBG による OpenMPI のデバッグ・セッションを開始するために、 次の手続を行って下さい。 1. 実行モジュールをフルパスで指定して、デバッグを開始してください。例えば、コマンド列の例 として以下のように行います。 pgdbg -mpi:mpirun -np 4 /home/user1/a.out 2. メインプログラム上にブレークポイントを設定する 3. ブレークポイントまで実行 4. ここからデバッグ・セッションを開始します。 5.4 PGPROF に関する問題 • gprof スタイルのプロファイリング機能(-pg)を使用してコンパイル・リンクしたプログラムは、2.6.4 Linux カーネルのシステム上でセグメンテーション・フォールトが生じます。 • マルチスレッドのサンプリングベースのプロファイル機能(gprof スタイルのプロファイリング:-pg あるいは、-Mprof=time オプション)でレポートされる時間は、マスタ・スレッドだけのものとなっ ています。一方、PGI 形式のプロファイリング(-Mprof=lines|func)あるいは、pgcollect は、個々のス レッドあるいはプロセスの時間データを個別に取得するために使用できます。

(16)

5.5 CUDA Fortran Toolkit に関する制限事項、問題

CUDA 4.0 Toolkit は、PGI 2012(PGI12.1 以降)におけるデフォルトとしてセットされます。CUDA 4.0 Toolkit を使用する場合、最初に CUDA 4.0 のドライバーを実装してください。コマンドラインで -ta=nvidia:cuda4.0 オ プ シ ョ ン を 使 用 す る か 、 も し く は 、 siterc フ ァ イ ル の 中 に 、 set CUDAVERSION=4.0を定義することで、CUDA 4.0 toolkit を使用してコンパイルすることができます。 • Pgaccelinfo コマンドは、その出力の 1 行目に、現在実装されている CUDA ドライバーのバージョン

名を出力します。

For a 4.0 driver: CUDA Driver Version 4000 5.6 修正事項

多くの問題が、PGI 2012 で修正されました。TPR(Technical Problem Report) やその詳細については、

www.pgroup.com/support/release_tprs.htmをご覧下さい。解決した各問題のサマリーを記しております。

以 上

参照

関連したドキュメント

会社法 22

variants など検査会社の検査精度を調査した。 10 社中 9 社は胎 児分画について報告し、 10 社中 8 社が 13, 18, 21 トリソミーだ

この見方とは異なり,飯田隆は,「絵とその絵

「派遣会社と顧客(ユーザー会社)との取引では,売買対象は派遣会社が購入したままの

社, 社, 社, 社が,見積りで競合している (図4) 。ただし地場企業のな かにも技術力の格差は存在し,大手企業の 社, 社,

注5 各証明書は,日本語又は英語で書かれているものを有効書類とします。それ以外の言語で書

では,この言語産出の過程でリズムはどこに保持されているのか。もし語彙と一緒に保

Birdwhistell)は、カメラフィル ムを使用した研究を行い、キネシクス(Kinesics 動作学)と非言語コミュニケーションにつ いて研究を行いました。 1952 年に「Introduction