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

SLURM Embarrasingly parrallel submission taking too many resources

所以我有以下提交脚本:

#!/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,据我所知,上面的提交就是这样做的。然而,在检查 squeue 和 sacct 时,SLURM 似乎为每个任务分配了 512 CPU!

我做错了什么?

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

#SBATCH --ntasks=1

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

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

另一个细节是工作文件夹未定义。只要您从正确的文件夹提交脚本,它就会工作,但如果您尝试从其他地方提交它,它将失败。