单个批次中的多个 srun 作业意外终止
multiple srun jobs within a single sbatch killed unexpectedly
我试图在集群上的单个 sbatch 脚本中 运行 多个 s运行 作业。 sbatch脚本如下:
#!/bin/bash
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -c 64
#SBATCH --time=200:00:00
#SBATCH -p amd_256
for i in {0..6} ;
do
cd ${i}
( srun -c 8 ./MD 150 20 300 20 20 0 0 > log.out 2>&1 & )
sleep 20
cd ..
done
cd 7/
srun -c 8 ./MD 100 20 300 20 20 0 0 > log.out 2>&1
cd ..
wait
在这个脚本中,我提交了多个 s运行 作业。此脚本的一个问题是第 0-6 个作业将在第 7 个作业完成后被终止。这是我在第 0-6 个作业中收到的错误消息:
srun: Job step aborted: Waiting up to 62 seconds for job step to finish.
slurmstepd: error: *** STEP 3801214.0 ON j2308 CANCELLED AT 2021-12-22T11:02:22 ***
srun: error: j2308: task 0: Terminated
知道如何解决这个问题吗?
行
( srun -c 8 ./MD 150 20 300 20 20 0 0 > log.out 2>&1 & )
创建子 shell 并将它们放入后台 inside 子 shell。所以最后一行中的 wait
调用不知道这些后台进程,因为它们是不同 shell/process 的一部分。由于批处理脚本现已完成,作业将终止。
试试这个:
( srun -c 8 ./MD 150 20 300 20 20 0 0 > log.out 2>&1 ) &
举个例子:试试
( sleep 60 & )
wait
和
( sleep 60 ) &
wait
看看区别。
我试图在集群上的单个 sbatch 脚本中 运行 多个 s运行 作业。 sbatch脚本如下:
#!/bin/bash
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -c 64
#SBATCH --time=200:00:00
#SBATCH -p amd_256
for i in {0..6} ;
do
cd ${i}
( srun -c 8 ./MD 150 20 300 20 20 0 0 > log.out 2>&1 & )
sleep 20
cd ..
done
cd 7/
srun -c 8 ./MD 100 20 300 20 20 0 0 > log.out 2>&1
cd ..
wait
在这个脚本中,我提交了多个 s运行 作业。此脚本的一个问题是第 0-6 个作业将在第 7 个作业完成后被终止。这是我在第 0-6 个作业中收到的错误消息:
srun: Job step aborted: Waiting up to 62 seconds for job step to finish.
slurmstepd: error: *** STEP 3801214.0 ON j2308 CANCELLED AT 2021-12-22T11:02:22 ***
srun: error: j2308: task 0: Terminated
知道如何解决这个问题吗?
行
( srun -c 8 ./MD 150 20 300 20 20 0 0 > log.out 2>&1 & )
创建子 shell 并将它们放入后台 inside 子 shell。所以最后一行中的 wait
调用不知道这些后台进程,因为它们是不同 shell/process 的一部分。由于批处理脚本现已完成,作业将终止。
试试这个:
( srun -c 8 ./MD 150 20 300 20 20 0 0 > log.out 2>&1 ) &
举个例子:试试
( sleep 60 & )
wait
和
( sleep 60 ) &
wait
看看区别。