我已经向使用 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
我假设 exec1 和 exec2 都是 MPI 应用程序?
理论上它应该可以工作,但 LSF 可能做了一些奇怪的事情并且mpirun
forexec1
在 exec1 实际退出之前退出。你可以尝试:
mpirun $OPT exec1 && mpirun $OPT exec2
但是,像这样从同一个脚本运行两个 MPI 作业可能不是一个好主意,因为例如 MPI 环境变量设置可能会引入冲突。你真正应该做的是使用作业链,这样 exec2 在 exec1 之后运行,就像这样。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句