如何使用Platform LSF blaunch命令同时启动进程?

时间:2011-10-29 11:15:38

标签: bash lsf

我很难弄清楚为什么我不能使用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.

删除&符号(&)允许命令按顺序执行,但我是在并行执行之后。

3 个答案:

答案 0 :(得分:1)

在bsub的上下文中执行时,blaunch -u <hostfile> <cmd>的单个调用将花费<cmd>并在<hostfile>中指定的所有主机上并行运行它,只要这些主机在工作的分配。

您尝试做的是使用blaunch的3个单独调用来运行3个单独的命令。我无法在文档中找到它,但只是对最近版本的LSF进行的一些测试表明,在这样的作业中,每个单独执行的任务都在一个名为LSF_PM_TASKID的环境变量中为其存储了一个唯一的任务ID。您可以通过运行以下内容在您的LSF版本中验证这一点:

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

现在,这与你的问题有什么关系?您希望通过./cmd_$i.sh并行运行blaunch i = 1,2,3。为此,您可以编写一个我将调用cmd.sh的脚本,如下所示:

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

现在你可以用blaunch的单个调用替换你的for循环,如下所示:

blaunch -u JobHost cmd.sh

这将在文件&#39; JobHost&#39;中列出的每个主机上运行cmd.sh的一个实例。 并行,每个实例都将运行shell脚本cmd_X.sh,其中X是该特定任务的$LSF_PM_TASKID值。

如果&#39; JobHost&#39;中有3个主机名然后,您将获得3个cmd.sh个实例,这些实例将导致cmd_1.shcmd_2.shcmd_3.sh

中的每个实例

答案 1 :(得分:0)

你试过nohup吗?这可能有效:

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

答案 2 :(得分:0)

blaunch不能在bsub提供的作业执行环境之外使用。我不知道如何处理为每个进程运行不同的命令,但尝试类似:

bsub -n 3 blaunch ./cmd.sh