强制 LSF 在不同主机上执行作业

Forcing LSF to execute jobs on different hosts

我有一个由 3 个工作人员和一个管理节点组成的设置,我用它来提交任务。我想在所有工作人员上同时执行设置脚本:

bsub -q queue -n 3 -m 'h0 h1 h2' -J "%J_%I" mpirun setup.sh

据我了解,我可以使用 'ptile' 资源约束来强制所有工作人员执行:

bsub -q queue -n 3 -m 'h0 h1 h2' -J "%J_%I" -R 'span[ptile=1]' mpirun setup.sh

但是,我偶尔会遇到一个问题,即我的脚本在同一个 worker 上执行了多次。

这是预期的行为吗?还是我的设置有问题?有没有更好的方法来强制执行多线程?

您对span[ptile=1]的理解是正确的。 LSF 只会为您的工作使用每台主机 1 个核心。如果没有足够的基于 -n 的主机,那么作业将挂起,直到有东西空闲。

However, occasionally I face an issue that my script got executed several times at the same worker.

我怀疑它与您的脚本有关。例如,默认情况下,LSF 附加 到标准输出文件。使用-oo覆盖。