我需要使用 SLURM 来执行集群计算,我希望达到以下结果:在包含
M
任务的批处理文件中,任何时候只有 N
正在执行/保留。
我有一个包含
M
任务的批处理文件,每个任务都包含以下内容:
cd $my_specific_directory
srun [OPTIONS] $(cat my_sim_command)&
cd ..
问题是批处理文件可能有数百个条目,但我不希望它们同时请求所有条目的资源,因为这些资源是共享的。
我希望能够在当时声明
N
作业(但是可能需要许多节点),确保当其中一个 N
结束时,批处理文件中的下一个作业就会启动。
这就是
--ntasks
选项的目的吗?会喜欢吗
#SBATCH --ntasks=5
cd $dir1
srun [OPTIONS] --ntasks=1 $(cat my_sim_command)&
cd $dir2
srun [OPTIONS] --ntasks=1 $(cat my_sim_command)&
...
cd $dir20
srun [OPTIONS] --ntasks=1 $(cat my_sim_command)&
cd ..
工作?我所说的“工作”是指,确保批处理中始终有 5 个作业正在运行,直到完成批处理文件中的列表。
我在 linux.stackexchange 上打开了另一个问题,我试图“自己”做到这一点,但是没有取得太多成功,所以我决定 SLURM 本身应该已经具有此功能,尽管我不知道。