2011-10-29 33 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

當BSUB的上下文中執行的blaunch -u <hostfile> <cmd>一個調用將採取<cmd>,並在所有主機上運行只要這些主機在作業分配範圍內,就可以並行指定<hostfile>

你想要做的是使用3個單獨的調用blaunch來運行3個單獨的命令。我在文檔中找不到它,但只是在最新版本的LSF上進行的一些測試顯示,在這樣的作業中,每個單獨執行的任務都有一個唯一的任務ID存儲在名爲LSF_PM_TASKID的環境變量中。您可以通過運行這樣驗證這一點在你的LSF的版本:

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

現在,這是什麼都與你的問題呢?你想運行./cmd_$i.sh爲i = 1,2,3並行通過blaunch。要做到這一點,你可以寫一個劇本,我會打電話給cmd.sh如下:

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

現在你可以取代你用的blaunch像這樣一個調用循環:

blaunch -u JobHost cmd.sh 

這將在並行文件'JobHost'中列出的每個主機上運行cmd.sh的一個實例,這些實例中的每一個將運行shell腳本cmd_X.sh,其中X是該特定任務的值$LSF_PM_TASKID

如果有在「JobHost」正好3個主機名,那麼你將得到的cmd.sh 3個實例這將反過來導致一個實例每個cmd_1.shcmd_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

blaunch是不是bsub提供作業執行環境以外的地方使用。我不知道如何處理每一個進程中運行不同的命令,但你可以試試:

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

到blaunch呼叫在BSUB環境下進行。也許我沒有在問題中明確說明 – Zaid

相關問題