2011-10-29 8 views
1

私はLSF blaunchコマンドを使用して並列にコマンドを起動することはできませんなぜ私が考え出す苦労しています:Platform LSF blaunchコマンドを使用してプロセスを同時に開始するにはどうすればよいですか?

for num in `seq 3`; do 
blaunch -u JobHost ./cmd_${num}.sh & 
done 

エラーメッセージ:アンパサンド(&)ことができますを削除

Oct 29 13:08:55 2011 18887 3 7.04 lsb_launch(): Failed while executing tasks. 
Oct 29 13:08:55 2011 18885 3 7.04 lsb_launch(): Failed while executing tasks. 
Oct 29 13:08:55 2011 18884 3 7.04 lsb_launch(): Failed while executing tasks. 

をシーケンシャルに実行するコマンドが、私は並列実行後です。

答えて

1

:私は、プロセスごとに異なるコマンドを実行している処理方法を知っているが、のような何かをしようとしません。それらのホストがジョブの割り当て内にある限り、並列に<hostfile>で指定されています。

あなたがしようとしているのは、別々の3つのコマンドを実行するために、blaunchの3つの別々の呼び出しを使用することです。 LSFの最新バージョンのテストでは、LSF_PM_TASKIDという環境変数に、そのようなジョブで個別に実行されたタスクに固有のタスクIDが格納されていることが示されています。

blaunch -I -n <num_tasks> blaunch env | grep TASKID 

これはあなたの質問と何が関係しているのですか? i = 1,2,3に対して./cmd_$i.shを並列に実行する場合は、blaunchを使用します。このあなたは次のように私はcmd.shと呼ぶことにします単一のスクリプトを書くことができます行うには:

#!/bin/sh 
./cmd_${LSF_PM_TASKID}.sh 

を今、あなたはそのようなblaunchの単一の呼び出しでループのためにあなたを置き換えることができます。

blaunch -u JobHost cmd.sh 

この意志をファイル 'JobHost' にあるのインスタンスをと並行して実行すると、これらの各インスタンスはシェルスクリプトcmd_X.shを実行します。ここで、Xの値は$LSF_PM_TASKIDです。

丁度3ホスト名が「JobHost」にありますなら、あなたはターン1つのインスタンスcmd_1.shのそれぞれにリード、cmd_2.sh、およびcmd_3.sh

+0

最後に私は私の質問に答えている!ありがとうございました! – Zaid

0

nohupを試しましたか?これはうまくいくかもしれない:

for num in `seq 3`; do 
nohup blaunch -u JobHost ./cmd_${num}.sh &>/dev/null & 
done 
0

blaunchbsubが提供するジョブ実行環境の外で使用されるものではありません。 bsubのコンテキスト内で実行すると、blaunch -u <hostfile> <cmd>の単一呼び出しが<cmd>を取り、すべてのホスト上で実行されます

bsub -n 3 blaunch ./cmd.sh 
+1

にblaunchへのコールがbsubの環境の下で行われますcmd.shの3つのインスタンスを取得します。おそらく私は質問で明確にしていない – Zaid

関連する問題