トップ 新規 編集 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

Ninf-Gでpi

[グリッド]

目標:Ninf-Gを使って非同期GridRPCを用いた並列分散計算を行う.

Ninf-Gとは

Ninf Project Home Pageを参照.Globus上で動作する,GridRPCの参照実装である.

サンプルプログラムの入手

Ninf Project Home Pageの"Download Package"から,自分のグリッド環境に適した最新のNinf-Gのパッケージ(例:ng4.2.1.tgz)を入手し,ホームディレクトリ等に解凍.

$ tar -xzf ng4.2.1.tgz

サンプルプログラムは

ng-4.2.1/test/samples/

以下に入っている.ここでは

ng-4.2.1/test/samples/pi/

を使う.このサンプルはモンテカルロ法によりπを求めるプログラムである.

Ninf-Gの利用準備

Ninf-Gを使う場合には必ず設定すること.bashの場合.bashrc,cshの場合.cshrcに書いておくと幸せになれるよ!

環境変数の設定

ここではbashの場合の設定方法を書きます.cshの人は適宜読み替えること(詳細はぐぐる先生に聞くこと).

クライアントマシン上のNinf-Gのインストール済みフォルダをNG_DIRで指定する.例えば/opt/ngに入っているのであれば,

$ NG_DIR=/opt/ng
$ export NG_DIR

PATHに${NG_DIR}/binを通しておくと,さらに便利.

$ PATH="${PATH}:${NG_DIR}/bin"
$ export PATH

全サーバにリモートライブラリ(Ninf-G Executable)を配置

サーバ上へサンプルプログラムのソース一式をコピー

scp とか使ってコピー.NFSがあれば使ってください.

ライブラリ本体ルーチンのコンパイル

$ gcc -c -o pi_trial.o pi_trial.c

IDLファイルをIDLコンパイラに通す

サーバ上でIDLファイルをIDLコンパイラにかけます.

$ ng_gen pi.idl

すると _stub_ほにゃらら というファイル(Ninf-G Executableのスタブ部分のソースファイルとmakefile)が自動作成されます.

リンク

$ make -f モジュール名.mak

モジュール名はIDLファイルの Module 文で宣言されたもの.

これでリモートライブラリの作成が完了です.さらに・・・↓

サーバ上のLOCAL LDIF(.ngdef)ファイルをクライアントへコピー

makeを実行すると

モジュール名.サーバホスト名.ngdef

というファイルが自動作成されるので,それをクライアントマシンのサンプルプログラムフォルダへコピー.こうしておくとMDSを使わずにGridRPCできるようになる(高速).

クライアントプログラムの作成

$ ng_cc -o pi_client pi_client.c

クライアントプログラムの実行

クライアント設定ファイルの作成

client.conf

を使うサーバに沿って書き換える.SERVERとLOCAL_LDIFが定義してあればとりあえず動く.

実行

./pi_client 回数 サーバホスト名1 サーバホスト名2 ...

回数を増やす毎にπの計算結果が3.141592...に近づくことを確認する.

最終更新時間:2008年07月30日 18時44分55秒