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

小さな計算機室 - mpionxgrid Diff

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

!!! XgridでMPIのジョブを走らせる

Mac OSがTigerになって、Xgridがうまく動くようになったのでが標準でインストールされるようになっている。
Xgridについては色々なWebサイトに紹介されているが
今度はMPIのジョブを投入しようと思ったその使い方や
技術的な内容について、有益な情報提供をしているサイトは案外少ない

Mandelbrot集合の描画デモが動作することを確認してこれにもちょっと手こずったそれだけでおしまい、
というのもなんだかカナシイ


それはともかく、Xgridがうまく動くようになったので、
今度はMPIのジョブを投入しようと思った。
わざわざXgrid上でMPIを行うメリットはないのかもしれないが、

http://developer.apple.com/hardware/hpc/mpionmacosx.html
などを見ると、最近のXgridはMacMPI (LnxMPI) をサポートしているそうだサポートしているそうなので、
ものは試しというわけだ


そこで、そこでまず http://exodus.physics.ucla.edu/appleseed/dev/developer.html
にアクセスして、必要なフィアルmpi.hとMacMPI_S.c, LnxMPI_S.cをダウンロードする。
Window Serverに接続しなくても良いときには(普通の計算には)LnxMPI_S.cを使う。

gccの場合のコンパイルは
gcc program.c LnxMPI_S.c /System/Library/Frameworks/Carbon.framework/Carbon
-I /Developer/Headers/FlatCarbon

こうして出来上がった実行ファイルをXgridにsubmitしたいわけだが、すぐに
やり方がわからない。

/Developer/Examples/Xgrid/GridSampleの中にXgrid MPI Sampleというのがあったので、
それで試してみると、ジョブの投入しようとしても、いきなりエラーが出る。
変だなぁ、と思って、また調べると、どうもバグがあるらしい。
#Xcodeでプロジェクトを開き、「ターゲット」の中からXgrid MPI Sampleを開く。
#その中の「バンドルリソースをコピー」の中のxgridmpibootを削除し
#代わりに、「ファイルをコピー」の中に、GridSample/MPI/Resources/の中のxgridmpibootをドラッグして入れる
こうしてからビルトすると、ちゃんとジョブが投入できるようになりました。

「グラフィック有り」版のMacMPI_S.cを使って実行ファイルを作成すると、
INIT_Processeses(), could not establish the default connection to the WindowServer.
というエラーで止まってしまうみたいだ。
ウィンドウサーバーは外部から勝手にいじられては困るので、そういうことになっているの
だろう。

!!!コマンドラインから投入

コマンドラインでジョブを投入したい時は、Appleのメーリングリストに
Re: [Xgrid] Can't submit a MPI job to Xgrid
From: Ernest Prabhakar <email@hidden>
Date: Fri, 1 Jul 2005 08:34:53 -0700
...
To run it from the command-line, you'd need to use -job batch
with a plist file; the easiest way to get a starting point is to first
create an MPI job using the dev example, then extract its specification
using the command-line, e.g.:

$ xgrid -job specification -id 115 > batch.plist

という記事があった。確かに
xgrid -h hostname -auth Password -p xxxxx -job submit 実行ファイル
だけだと、複数のプロセスが起動されなかった。
ちゃんとplistファイルを書いてバッチとして入れないといけないらしい。
当面はGUIだけ使うことにしようか・・

その後については[[JobSubmissionViaCUI]]を参照のこと。