Up: memo

Xgridを使う

Xgridについて

Appleによるxgridについての概要はここにあります.

Xgridを使うには,以下のAppleによるヘルプが役立ちます.Xgridの設定に関する項目は,システムがMacOSX Serverであることを前提にしていますが,それ以外の項目はサーバ管理ソフトウェア(Xgrid Admin)をインストールすればMacOSX Serverでなくても参考にすることができます.

以下では,システムがMacOSX Serverでない場合について述べます.

コントローラーの準備

Xgridを組む場合,使用するPCのうちの1台をコントローラーとして設定する必要があります.OSがMacOSX Serverである場合は上のヘルプに従って,OSがMacOSX Serverでない場合はここに従って,パスワードを設定します.システム環境設定から共有を開き,Xgrid共有の認証方法をパスワードにして,パスワードを入力します.Xgrid共有のチェックボックスがオンなら一度オフにし,再度オンにして設定の変更を反映させます.再起動する必要はありません.これで,/etc/xgrid/agent/controller-passwordが生成されます.この/etc/xgrid/agent/controller-password ファイルを次のようにコピーします.

sudo cp /etc/xgrid/agent/controller-password /etc/xgrid/controller/agent-password
sudo cp /etc/xgrid/agent/controller-password /etc/xgrid/controller/client-password

次に,Terminal で以下のコマンドを実行してコントローラを起動します.

sudo xgridctl controller start

また,OS起動時に立ち上がるように設定します.

sudo xgridctl controller on

Xgrid Admin.app を入れるために サーバ管理ソフトウェア(Server Admin Tools: OS10.4用OS10.5用)を入手してインストールします.Xgrid Admin.appは,/Applicaiton/サーバ/Xgrid Adminにインストールされます.

下の図は,Xgrid Admin.appの画面.


ジョブを実行しているところ.


エージェントの準備

共有設定

システム環境設定から共有を選択し,Xgrid共有にチェックします.認証方法は,パスワードにして,コントローラと同じパスワードを設定します.

次に,構成ボタンを押し,コントローラを選択します.すでにコントローラの設定ができていれば,「特定のコントローラを使用」にチェックし,プルダウンのボタンを押すと,設定したコントローラの名前が出てくるので,それを選択します.その名前がhostnameとなります.

Xgrid共有の設定を変更したら,Xgrid共有のチェックボックスをオフにし,再度オンにして,設定を反映させます.

プログラムの準備

xgridで外部プログラムを使用する場合は,あらかじめすべてのエージェントにプログラムをインストールしておく必要があります.たとえば,あるシェルスクリプトをxgridを使って実行する場合,そのスクリプトに記載されているすべてのプログラムが使用するエージェントで動作しなければなりません(参考).単独で動作するstandaloneのCやFortranのプログラムを用いる場合は,インストールする必要はありません.

動作の確認

xgridを組み込んだソフトの簡単な例は,

/Developer/Examples/Xgrid/GridMandelbrot/GridMandelbrot.xcodeproj

にあります.これをビルドして,できたアプリケーションを実行すると,xgridを介して計算します.

実際に動かすプログラムを作成する

プログラム自体が並列処理に対応している必要があります.また,PowerMacとIntelMacやOSのバージョンが混在している環境では,すべての環境で動くバイナリを作る必要があります.

Xgridでプログラムを動かしてみる

コマンドラインでジョブを投入する(Appleの解説

xgridを使ってプログラムを実行するには,以下のようにします.(hostname) はコントローラの名前,(password) はコントローラのパスワードです.

xgrid -h (hostname) -auth Password -p (password) -job submit a.out

この (hostname) と(password) は,環境変数 XGRID_CONTROLLER_HOSTNAME と XGRID_CONTROLLER_PASSWORD に設定しておけば,入力を省略することができます.

結果をカレントディレクトリに取り出すには,次のようにします.(jobid) は上のコマンドを実行したときのジョブのID(数字)です.

xgrid -h (hostname) -auth Password -p (password) -job results -id (jobid) -so job.out -se job.err -out ./

しかし,上の方法では,1つのプロセスしか動かすことができません.

複数のプロスを動かす

OSX 10.4と10.5が混在する環境で複数のプロセッサを使うには,Developer Tools 2.5のxgridmpibootが必要です.Developer Tools 3.0以降に含まれるxgridmpibootはOSX 10.5用にコンパイルされており,OSX 10.4では動きません.ソースもないので,自分で再コンパイルすることもできません.インストールしてあるDeverloper Toolsが3.0以降であれば,Developer Tools 2.5のDevExample.pkgから/Developer/Examples/Xgridディレクトリを取り出して,3.0の/Developer/Examples/Xgridと置き換えます.pkgファイルから必要なファイルを取り出すには,unpkgというソフトを使うと便利です.それぞれのXgridディレクトリをXgrid3.0とXgrid2.5という名前に変えておいて,使う方をXgridにリンクしておくと良いでしょう.

GUIでジョブを投入する

複数のプロセスを動かすGUIには,Xgrid MPI Sampleがあります.

/Developer/Examples/Xgrid/GridSample/GridSample.xcodeproj

上のファイルをXcodeでビルドすると,Xgrid MPI Sampleが形成されます.このソフトを使ってジョブをXgridに投入できます.

下の図は,Xgrid MPI Sampleの画面.


New Jobを登録しているところ


Show Resultsを見ているところ


コマンドラインでジョブを投入する

コマンドラインでジョブを投入するには,バッチファイルを作成する必要があります.現在,実行中のジョブからバッチファイルの例を見ることができます.

xgrid -h (hostname) -auth Password -p (password) -job specification -id (jobid) > batck.xml

man xgrid とするとバッチファイルの書き方を見ることができますが,自動で作成することもできます.このバッチファイルの作成には,gen-xgrid-mpi-batch.rbrxgridXgrid batch editorXgrid Stuffなどを使うと簡単です.gen-xgrid-mpi-batch.rbでは,オプションの-jにジョブの名前,-n に実行するプロセスの数,-e に投入するプログラムの名前を指定します.次の例では,8つのプロセスを同時に動かすことにしています.

gen-xgrid-mpi-batch.rb -j job1 -n 8 -e a.out > batch1.xml

batchファイルができたら,xgridに投入します.(hostname) はコントローラの名前,(password) はコントローラのパスワードです.xgridコマンドのオプションに -email (email-address) を付けると,終了時にメールが送られます.

xgrid -h (hostname) -auth Password -p (password) -job batch batch1.xml

終了したら,結果をカレントディレクトリに取り出します.(jobid) は job の ID 番号です.

xgrid -h (hostname) -auth Password -p (password) -job results -id (jobid) -so job.out -se job.err -out ./

Back