SLURM令人尴尬的并行提交占用了太多资源

时间:2018-08-28 17:06:55

标签: slurm supercomputers embarrassingly-parallel

所以我有以下提交脚本:

#!/bin/bash
#
#SBATCH --job-name=P6
#SBATCH --output=P6.txt
#SBATCH --partition=workq
#SBATCH --ntasks=512
#SBATCH --time=18:00:00
#SBATCH --mem-per-cpu=2500
#SBATCH --cpus-per-task=1
#SBATCH --array=1-512

srun ./P6 $SLURM_ARRAY_TASK_ID

我想做的是运行程序P6的512个实例,参数的范围是1到512,据我所知,上面的提交就是这样做的。但是,在检查刮痕和刮痕时,SLURM似乎已为每个任务分配了512个CPU!

我做错了什么?

1 个答案:

答案 0 :(得分:2)

您要求每个工作512个任务。要求一个(或您认为适合您的代码的数字):

#SBATCH --ntasks=1

顺便说一句,您的提交脚本中存在一些小问题。作业数组中的所有作业都将以相同的方式命名(这并不是真正的问题),但是它们也将共享stdout文件,因此P6.txt中将包含所有任务的混合信息。我建议您用JobID或TaskId(%j /%A /%a)区分它们。

此外,您没有定义标准的错误目标,因此,如果发生任何故障或用stderr编写,则将丢失该信息。我的建议是也定义标准错误(#SBATCH --error=P6.txt.%j)。

另一个细节是未定义工作文件夹ir。只要您从适当的文件夹中提交脚本,它就可以工作,但是如果您尝试从另一个位置提交脚本,则它将失败。