如何防止多个可执行文件在群集上同时运行

时间:2018-03-13 15:54:42

标签: bash cluster-computing hpc lsf

我已将作业提交给具有LSF平台的多核群集。它看起来像最后的代码。两个可执行文件exec1和exec2同时启动。在我的意图中,它们由列逗号分隔,第二个应在第一个完成后开始。当然,这导致了无法正确终止的作业的几个问题。现在我已经发现了这种行为,我正在为每个可执行文件编写单独的作业提交文件。任何人都可以解释为什么这些可执行文件同时运行吗?

#!/bin/bash -l
#
# Batch script for bash users 
#
#BSUB -L /bin/bash
#BSUB -n 10
#BSUB -J jobname
#BSUB -oo output.log
#BSUB -eo error.log
#BSUB -q queue
#BSUB -P project
#BSUB -R "span[hosts=1]"
#BSUB -W 4:0

source /etc/profile.d/modules.sh
module purge
module load intel_comp/c4/2013.0.028
module load hdf5/1.8.9
module load platform_mpi/8.2.1

export OMP_NUM_THREADS=1
export MP_TASK_AFFINITY=core:$OMP_NUM_THREADS
OPT="-aff=automatic:latency"

mpirun $OPT exec1; mpirun $OPT exec2

1 个答案:

答案 0 :(得分:1)

我假设exec1和exec2都是MPI应用程序?

理论上它应该可以工作,但是LSF可能正在做一些奇怪的事情,mpirun exec1在exec1实际退出之前就会退出。你可以尝试:

mpirun $OPT exec1 && mpirun $OPT exec2 
  • 这样在启动exec2之前,mpirun $ OPT exec1必须以返回码0退出。

但是,从这样的相同脚本运行两个MPI作业可能不是一个好主意,因为例如MPI环境变量设置可能会引入冲突。你应该做的是使用作业链,以便exec2在exec1之后运行,如this