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