所以我有以下提交脚本:
#!/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!
我做错了什么?
答案 0 :(得分:2)
您要求每个工作512个任务。要求一个(或您认为适合您的代码的数字):
#SBATCH --ntasks=1
顺便说一句,您的提交脚本中存在一些小问题。作业数组中的所有作业都将以相同的方式命名(这并不是真正的问题),但是它们也将共享stdout文件,因此P6.txt中将包含所有任务的混合信息。我建议您用JobID或TaskId(%j /%A /%a)区分它们。
此外,您没有定义标准的错误目标,因此,如果发生任何故障或用stderr编写,则将丢失该信息。我的建议是也定义标准错误(#SBATCH --error=P6.txt.%j
)。
另一个细节是未定义工作文件夹ir。只要您从适当的文件夹中提交脚本,它就可以工作,但是如果您尝试从另一个位置提交脚本,则它将失败。