PGIコンパイラの使い方
佐野正樹
2001.11.25
原稿執筆時のバージョン
- pgcc 3.2-4
- glibc-2.1.3-9k
- mpich-1.2.2.3
環境変数の設定 (bash)
.profile などに書いておく
export PGI=/home/local/pgi
export PATH=$PATH:/home/local/pgi/linux86/bin
export MANPATH=$MANPATH:/home/local/pgi/man
コンパイルの仕方
-
C の場合
$ pgcc hello.c -o hello
-
C++の場合
$ pgCC hello.cpp -o hello
コンパイル時の注意点
ヘッダについて
PGIでは,C のヘッダ(stdio.h, stdlib.h など)から派生したC++ヘッダ(cstdio, cstdlib など)は用意されていない.
解決策としては,以下のものが挙げられる.
-
G++ がインストールされている場合には,G++ のヘッダが格納されているディレクトリを,-Iオプションなどを使用してインクルードパスに加える.このとき,iostream などのヘッダはPGIのものを用いるようにする必要がある.
-
該当するヘッダを,プログラムのあるディレクトリにコピーする.
-
該当するヘッダを使用しない.例えば,cstdio は,ネームスペースを無視すれば,stdio.hで代用できる.
ライセンスについて
現在のGregorでは,マスターノード以外(pc3など)でコンパイルしようとすると,以下のエラーが出る.(pgccの場合)
pgcc-linux86: LICENSE MANAGER PROBLEM: Invalid host (-9,57)
MPICH の使用法
他のコンパイラでコンパイルされた MPICH を使用する場合
例えば,GCCでコンパイルされたMPICHが /usr/local/mpich-gcc にインストールされているとする.PGIからこれを使用するには,
$ pgcc -c hello.c -I/usr/local/mpich-gcc/include # mpi.h などのため
$ pgcc -o hello hello.o -L/usr/local/mpich-gcc/lib -lmpich -lm # MPICH のライブラリをリンク
とする
MPICH を,PGIを用いてコンパイルする場合
-
ソースとパッチのダウンロード と展開
ソース : ftp://ftp.mcs.anl.gov/pub/mpi/mpich.tar.gz
パッチ : ftp://ftp.mcs.anl.gov/pub/mpi/patch/1.2.2/patch.all
適当なディレクトリに展開
$ tar xvfz mpich.tar.gz
$ mv patch.all mpich-1.2.2.3
$ cd mpich-1.2.2.3
パッチを当てる.
$ patch -p0 < patch.all
-
configure
./configure -cc=${PGI}/linux86/bin/pgcc -c++=${PGI}/linux86/bin/pgCC -fc=${PGI}/linux86/bin/pgf77 -cflags="-Msignextend -tp px -DUSE_U_INT_FOR_XDR -DHAVE_RPC_RPC_H=1" -opt=-fast -fflags="-tp px" -c++flags="-tp px" -f90flags="-tp px" -f90=${PGI}/linux86/bin/pgf90 -prefix=/home/msano/mpich-pgi --with-comm=shared 2>&1 | tee configure.log
※ 備考 Old style arguments to configure were found: というワーニングが出る.
-
make
$ make 2>&1 | tee make.log
$ pushd examples/test
$ make testing 2>&1 | tee make_testing.log
$ popd
※ 備考 make testing は,[Interrupted] と言われて途中で止まる.止まる場所は不定.原因不明.
$ make install 2>&1 | tee make_install.log
-
必要に応じて,${PREFIX}/share/machines.LINUX を編集
- 動作確認
ディレクトリ ${PREFIX}/examples/ において,以下のコマンドでサンプルプログラムを実行する.
$ make clean
$ make
$ ../bin/mpirun -np 4 cpi
参考