我有一个slurm作业,我使用批处理脚本启动它,例如:
#! /bin/bash -l
#SBATCH --job-name=job1
#SBATCH -o stdout.log
#SBATCH -e stderr.log
#SBATCH --ntasks=160
cd $WORK/job1
mpirun ./mympitask # 1.)
./collect_results # 2.) long-running sequential task.第一步(1.)但是,第二步(2)使用MPI并行运行。我需要做的只是一个任务,其余的任务应该被释放,这样我就不会占用它们或者浪费无用的CPU时间。
例如,是否可以:
( a)释放除一个任务之外的所有,并在一个CPU上运行最后一步?
( b)指定在完成批处理工作后应该运行的命令?
我在考虑在最后一步使用一个salloc呼叫。
发布于 2017-09-10 13:29:56
SLURM提供了这两个选项。
1)在运行顺序后处理任务之前,可以
scontrol update job=$SLURM_JOBID NodeList=`hostname`为了将作业大小缩小为,一个节点。
我不知道是否和如何将这项工作缩小到一个核心。
2)另一种选择是提交两个作业,后处理作业依赖于MPI作业:
sbatch mpijob.slurm
sbatch -d afterok:<mpijob SLURM jobid> postprocessing.slurm重要的部分(这不是火箭科学)部分是自动检索第一个作业的作业is。
https://stackoverflow.com/questions/46138737
复制相似问题