强制 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
覆盖。
我有一个由 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
覆盖。