Create  Edit  Diff  Mac OS X Serverで作る 小さな計算機室  Index  Search  Changes  RSS  Login

小さな計算機室 - jobsubmissionviacui Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

!!!Xgridのコマンドラインインターフェース

Mac OS X Tigerには、xgridというコマンドが最初からインストールされていて、それを
使ってxgridのコントローラを操ることができる。
man xgridすると、xgridコマンドの使い方だけでなく、バッチの構成法などの情報も
書いてあるので、それをまず勉強する。

MPIを使う場合には、実行ファイルの他に、xgridmpibootという一種のwrapperプログラムが
必要で、このxgridmpibootを経由して、プログラムを起動することになる。
xgridmpibootはサンプルプログラムの中に、すでにコンパイルされた状態で置かれている
(ソースが欲しいが見あたらない):
/Developer/Examples/Xgrid/GridSample/MPI/xgridmpiboot

少しリバースエンジニアリングをすると、このxgridmpibootには、以下のようなオプションを
与える必要があることがわかる:
xgridmpiboot -IsMaster (YES|NO) -MasterName 名前 -MPIType MacMPI
    -NumberOfProcesses 数字 -ExecutablePath 実行ファイル名
    -ExecutableArguments 実行ファイルのパラメータ
つまり、やるべきことは、上記のようなジョブを必要なプロセッサの数だけ生成するような
バッチファイルを記述することである。

!!!バッチファイル(XML)を作成する

バッチファイルの書き方の資料はman xgridくらいしか見あたらないので、それを参考にXMLを
書くことにする。
が、バッチファイルの中身には、先のxgridmpibootや実行ファイルの内容、つまりバイナリー
データ、をBase64エンコードして引き渡さないといけないので、
エディタでせっせと書くよりは
バッチを生成するようなスクリプトを組むことになる組むのが現実的だ

ついでながらOS 10.4.2までのman xgridのXMLの例には間違いがあって、inputFilesのところのファイルのデータは
<string>Base64のデータ</string>ではなくて、<data>Base64のデータ</data>で渡さなければならない
最近アップデートされた10.4.3のmanでここは直ってました)。

試しにRubyで書いてみたスクリプトがこちら:{{attach_anchor(gen-xgrid-mpi-batch.rb)}}
{{attach_view(gen-xgrid-mpi-batch.rb}}

xgridmpibootと実行ファイル(a.out)が置いてあるディレクトリ内で
gen-xgrid-mpi-batch.rb -j job1 -n 10 -e a.out > batch1.xml
のようにして使う。

作ったバッチファイルを少しだけ手直ししたいときは、
/Developer/Applications/Utilities/Property List Editor.app
でいじると便利かもしれない。


!!!Xgridにバッチを投入する

バッチファイルができてしまえば、バッチの投入は簡単で(パスワードで認証している場合は)
xgrid -h ホスト名 -auth Password -p コントローラのパスワード -job batch バッチファイル
でOK。

ジョブの状態を確認したり、結果を引き出すのも、もちろんxgridコマンドで可能。

{{attach_form}}