PGIアクセラレータコンパイラの設定(PGI 9.0 プレビュー版)

対象 PGI 9.0コンパイラ インストール GPU用アクセラレータ

 PGIアクセラレータ™ コンパイラのインストールとその初期設定に関して説明します。なお、アクセラレータ機能を使用するためには、NVIDIA CUDA 環境が実装されている必要があります。
2009年9月10日 Copyright © 株式会社ソフテック 加藤

PGIアクセラレータ™ コンパイラのインストール

 2009年11月に発売を予定している PGIアクセラレータ™ コンパイラは、従来の x64 プロセッサ・マルチコア最適化用 PGI コンパイラ機能と GPU 用コンパイラとしてのアクセラレータ機能、CUDA Fortran 機能が全て含まれております。また、2009年11月以降、GPUアクセラレータ機能がない従来の PGI コンパイラ製品も併売されます。但し、これらは、「x64プロセッサ用の PGI コンパイラ」と「PGIアクセラレータ™ コンパイラ」と区別されたものではなく、一つの共用の PGI ソフトウェアのファイルを使用してインストールしていただきます。「従来の x64 プロセッサのみのコンパイラ製品(ここでは、「レガシー製品」と言う。)」と「新 PGIアクセラレータ™ コンパイラ」は、購入いただいたライセンス製品の取得するライセンスキーで、その使用範囲が区別されます。従って、PGIコンパイラのインストール方法は、各OSプラットフォームで、従来と同じ方法で行っていただきます。
 弊社から、製品をご購入頂いたお客様には、「インストール・マニュアル、ライセンス発行手引書」等の日本語ドキュメントを送付しますので、これを参照の上、PGIソフトウェアをインストールして下さい。また、弊社の「弊社お客様専用のサポートページ」にても、各種ドキュメントをご覧いただけます。

※ PGIアクセラレータ™ コンパイラ製品の2009年11月の発売前においては、この機能のテクノロジ・プレビューとして PGI 9.0 (Linux版 64bit) を使用することができます。

PGIコンパイラソフトウェアの入手

 PGIコンパイラソフトウェアは、以下のページより pgilinux-90x.tar.gz ダウンロードして下さい。
  http://www.softek.co.jp/SPG/ftp.html

PGIコンパイラソフトウェアのインストール

 PGIコンパイラソフトウェアは、弊社発行のインストールドキュメント等を参照いただき、インストールしていただきます。なお、インストール後、PGIライセンスキーの取得と設置並びにlmgrd ライセンスマネージャーのセットアップとその起動を行ってください。「評価版ライセンス」を使用する場合は、「試用版ライセンス取得の方法」のページをご参照の上、評価ライセンスキーの取得とそのセットアップをお願い致します。なおインストールするPGIソフトウェアは、正規版のソフトウェアと同じものです。

PGIコンパイラの初期設定ファイルの追加

 PGIソフトウェアを実装したトップのディレクトリ($PGI環境変数)は、Linux /OS X の場合デフォルトで、/opt/pgi となります。また、Windows の場合は、C:\Program Files\PGI です。ここでは、Linux の場合を例に設定方法を説明します。Linux 64ビットの場合、この /opt/pgi 配下の linux86-64/{バージョン番号}/bin のディレクトリの下に、CUDA ソフトウェア環境の場所を定義するファイルを作成します。ここで言う{バージョン番号}は、PGIのインストールしたバージョンであり、例えば、代表バージョン番号 9.0 あるいは、9.0-n (n はビルド番号)を使用します。このファイル名は、「sitenvrc」ファイルという名称のファイルを新規に作成し、以下のようなPGI用の環境変数をセットします。ここでは、CUDAソフトウェア開発環境の実装場所を /usr/local/cuda とした場合を例にとります。以下のような 4 行からなるファイルを作成し、セットします。ファイルのパーミッションは、このディレクトリ配下にある ***rc ファイルと同じように設定(655)して下さい。ここでの例では、具体的に /opt/pgi/linux86-64/9.0/bin/sitenvrc ファイルとして以下の内容のファイルを作成します。文末にセミコロン;を忘れずに記述して下さい。なお、CUDA 2.3 以降、以下の CUDALIB 変数は、64bit Linux の場合、$NVDIR/lib64 としてください。32bit Linux の場合は、 $NVDIR/lib となります。

set NVDIR=/usr/local/cuda;
set NVOPEN64DIR=$NVDIR/open64/lib;
set CUDADIR=$NVDIR/bin;
set CUDALIB=$NVDIR/lib64;

LD_LIBRARY_PATH環境変数の設定の確認

 CUDAのライブラリ・ディレクトリが LD_LIBRARY_PATH に設定されていることを確認して下さいなお、CUDA 2.3 以降、以下の LD_LIBRARY_PATH 変数は、64bit Linux の場合は、$NVDIR/lib64 としてください。32bit の場合は、 $NVDIR/lib となります。

csh:   setenv LD_LIBRARY_PATH /usr/local/cuda/lib64:"$LD_LIBRARY_PATH" 
bash:  export LD_LIBRARY_PATH=/usr/local/cuda/lib64:"$LD_LIBRARY_PATH" 

pgaccelinfo コマンドの実行

 PGIが提供するGPUボードの情報を表示するコマンド pgaccelinfo を実行してみます。以下のような GPU ハードウェア情報が表示されます。以下の例は、システム上に、GeForce GTX 280の0番デバイスが見つかり、deviceのリビジョンが 1.3 であること、デバイスメモリが 1GB 有し、30個のマルチプロセッサを搭載していることを示しています。また、この情報ボードには、その他のメモリ容量、レジスタ容量、スレッド数に関する制限値等の情報も含まれています。

[kato@photon28 dev]$ pgaccelinfo
Device Number:                 0
Device Name:                   GeForce GTX 280
Device Revision Number:        1.3
Global Memory Size:            1073020928
Number of Multiprocessors:     30
Number of Cores:               240
Concurrent Copy and Execution: Yes
Total Constant Memory:         65536
Total Shared Memory per Block: 16384
Registers per Block:           16384
Warp Size:                     32
Maximum Threads per Block:     512
Maximum Block Dimensions:      512 x 512 x 64
Maximum Grid Dimensions:       65535 x 65535 x 1
Maximum Memory Pitch:          262144B
Texture Alignment              256B
Clock Rate:                    1296 MHz
Initialization time:           16481 microseconds
Upload time:                   2229 microseconds (4 megabytes)
Download time:                 3381 microseconds (4 megabytes)
Upload bandwidth:              1881 MB/sec (4 megabytes)
Download bandwidth:            1240 MB/sec (4 megabytes)

 一方、上記コマンドを実行しても、以下のようなメッセージの場合は、適切なハードウェアあるいはボードがインストールされていないか、あるいは、/dev/nvidiactlt 等のデバイスファイルがオープンされていないことが考えられます。

[kato@photon28 dev]$ pgaccelinfo
No accelerators found.
Try pgaccelinfo -v for more information

 上記の GPU ボードの情報の中で、deviceのリビジョンが 1.1 あるいは、1.0 の場合は、コンパイラの初期設定ファイルが置かれている、/opt/pgi/linux86-64/9.0/bin/siterc ファイルの中に、以下の行を追加設定します。

set COMPUTECAP=11;
あるいは、
set COMPUTECAP=10;

 以上で、PGIコンパイラの設定が終了します。

PGI GPU 用コンパイラ情報サイト