1

所以我有以下提交脚本:

#!/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

我想要做的是使用从 1 到 512 的参数运行程序 P6 的 512 个实例,据我所知,上面的提交就是这样做的。然而,在检查 squeue 和 sacct 时,SLURM 似乎为每个任务分配了 512 个 CPU!

我做错了什么?

4

1 回答 1

2

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

#SBATCH --ntasks=1

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

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

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

于 2018-08-28T19:09:34.817 回答