ソフテック・トップページへ
ホーム 製品 セキュリティ・サービス HPCサービス ダウンロード 企業情報

PGI compiler TIPS
PGHPF の実行環境設定と使用法
技術情報・TIPS > PGHPHの実行環境設定と使用法
 

High Performance Fortran (PGHPF) の使用

High Performance Fortran (HPF) は、PCクラスタ等の共有あるいは分散メモリ型の並列システムでのデータ・パラレル型のプログラミング・モデルで並列化を行う際の標準化規約です。HPF のディレクティブを使用して、配列の配置、分散を定義し、さらに並列処理(分割・分散)方法を定義して並列化を行うものです。その技術的な関連リンクを以下に示します。このページでは、PGHPF が使用できる通信ライブラリの一つである MPICH を使用して、PGHPF を利用するための環境準備とコンパイルの方法、実行の方法について述べます。

● PGI コンパイラを利用してMPICHの最新バージョンのライブラリを作成

MPICH の最新バージョンを以下のサイトから入手し、mpich ライブラリを作成します。 このライブラリの作成方法の詳細については、こちらをご覧ください

  http://www-unix.mcs.anl.gov/mpi/mpich/

mpich ソースをコンパイルするために、コンフィグレーションファイルに、コンパイラを pgf77(90)、pgcc を指定して、 mpich ライブラリを 生成 してください。現在の最新バージョンは、1.2.6 です。
mpich ライブラリをインストールする場所は、どこでも構いませんが、例えば、/usr/mpich 配下にインストールするものとして、以下は記述します。

インストールが終了すると、今後必要となる(参照する) directory は主に、以下のものです。

    /usr/mpich/lib (mpich のライブラリが存在)
        /usr/mpich/bin (mpi を実行するためのmpirun コマンドが存在)

この二つの directory 配下のライブラリ、コマンドが、コンパイル時並びに実行時に必要となります。

● MPIの実行で必須な環境

MPI は、各ホスト(ノード)間で remote shell 環境が動作する状況になければなりません。すなわち、 rsh 等が各ノード間で実行できる状況にしてください。簡単に言えば、ユーザホーム上にに .rhost を記述して、リモート環境を作ってください。もう一点は、実行を行うための directory (一般には、/home/xxxx) が NFS 環境で共有している状態を確保してください。すなわち、実行ファイルは全てのノードで共有できる環境を確保してください。

● PGHPFでのコンパイル・リンク

MPICH を使用する際の一般的なコマンドオプションは、以下のとおりです。 -L オプションを使用して、 mpich ライブラリの所在を適切に指示してください。mpich のライブラリの存在場所を指定しない場合、うまく、実行モジュールが作成できません。また、PGHPF コンパイラに対して、MPI ライブラリを通信関数として使用することとを -lmpi オプションで指示します。一般的なコンパイル・オプションの使用例も以下に示しました。 性能を最適化するために -fast -Mvect コマンド・オプションを使用します。-Mstats は HPF の実行後、通信の統計データを取得するためのものです。ここでのソースプログラムは、HPF 言語仕様で作成されているものとし、ファイル名を test.hpf とします。

 pghpf {-compiler options} -o a.out -L/usr/mpich/lib -Mmpi test.hpf 

(コンパイルオプション例)

  pghpf -fast -Mvect -Minfo -Minform,warn -Mstats -Mdclchk -o a.out \
   -L/usr/mpich/lib -Mmpi test.hpf

● HPF 実行モジュールの実行

実行時に使用する並列ノードのホスト名の指定には、一般的以下の環境変数を使用します。

 $ setenv PGHPF_HOST node1,node2,node3,....

この指定でも構いませんが、通信ライブラリに MPICH を使用する場合は、一般的な MPI 実行時のホスト名の指定方法を行った方が無難です。
実行モジュール (a.out) の存在する directory 下に host と言うファイルを作成します。

   FILE : host の中身(1行ごとに、使用するマシン名(ホスト名)を記載します)
   以下は4台のマシンを指定した場合の例
     host1
          host2
          host3
          host4

次に実行のための コマンドは以下のように指定します。基本的に、PGHPF上で通信ライブラリを MPICH とした場合は、一般的な MPI の実行方法に習います。実行モジュール a.out には、 -pghpf と言う引数をつけることが必要です。さらに pghpf のオプションが必要であれば、その後に記述します。並列計算に使用するホストは、 -machinefile オプションで指定します。以下は、 2CPU で並列処理を行う場合のコマンド例です。

$  /usr/mpich/bin/mpirun -np 2 -machinefile host a.out -pghpf -stat all
      -np : 並列実行で使用する cpu 数の指定    -machinefile : 使用するマシン名を記載したファイル名
   <pghpf>のオプション(任意)
   -stat all : 通信関係の統計データを出力する
   ここで -np の数を変更することで並列CPU数が変わります。 【実行後の並列処理統計データ】  cpu real user sys ratio node  total 26.88 52.03 0.31 1.95x  memory local global res size pag flts pag flts voluntary involunt   heap heap (pages) minor major switches switches  total 281KB 1KB 0 6429 1107 0 0  messages send send send recv recv recv copy copy copy   cnt total avg cnt total avg cnt total avg  total 4008 9MB 3KB 4008 9MB 3KB 500000 5MB 8 B





メモリ共有 SMP システムでの HPF 利用の場合
並列実行を行うシステムが SMP システムの場合は、内部の共有メモリ間でのデータ送受で通信を行います。この場合のコンパイルの仕方はいたって簡単で、-lsmp をつけるだけでHPF コンパイルが可能です。また、HPF で自動並列化を行いたい場合は、 -Mautopar オプションを付けてコンパイルします。実行において、基本的にはPGHPF_HOSTの指定の必要はありませんが、指定しても構いません。 SMP 環境での実行の場合は、以下のような -heapz サイズ・オプションを必ず、入れてください。PGHPHのデフォルトでは、UNIX Socket 通信を利用しますが、SMP の場合(-Msmp) に は、 Shared global heap を通信のために使用します。-heapz オプションは、Shared global heap のサイズを指定するものです。このサイズ指定のサフィックスとして、'k", "m" があり、それぞれキロバイト、メガバイトを意味します。現在のプログラムのglobal heap のサイズは、実行後の統計データ(-stat mems オプションで heap サイズが表示されますのでその値を目安にして設定してください。
【コンパイル】
 $ pghpf {-compiler options} -Msmp -o a.out test.hpf 
 (HPF自動並列化の場合のコンパイル)
 $ pghpf {-compiler options} -Mautopar -Msmp -o a.out test.hpf 

【実行】
 $ setenv PGHPF_HOST node1
 $ a.out -pghpf -np 2 -stat all -heapz 4k

<< 戻る


 ソフテックは、PGI 製品の公認正規代理店です

サイトマップ お問合せ
Copyright 2004 SofTek Systems Inc. All Rights Reserved.