1

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

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

4

3 回答 3

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像这样的调用来替换你的 for 循环:

blaunch -u JobHost cmd.sh

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

如果 'JobHost' 中恰好有 3 个主机名,那么您将获得 3 个实例,cmd.sh这些实例将依次导致 、 和 各cmd_1.sh一个cmd_2.sh实例cmd_3.sh

于 2013-09-11T19:42:45.937 回答
0

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

for num in `seq 3`; do
nohup blaunch -u JobHost ./cmd_${num}.sh &>/dev/null &
done
于 2011-11-28T15:50:18.377 回答
0

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

bsub -n 3 blaunch ./cmd.sh
于 2012-06-12T23:03:48.137 回答