如何在slurm中指定数组作业中每个进程的内存?

时间:2018-02-13 09:52:12

标签: memory out-of-memory job-scheduling slurm

我想用不同的随机种子(我传递给我的程序)运行数千个相同的单线程模拟。其中一些已经失去记忆,但我不知道为什么。我将run_batch_job称为sbatch --array=0-999%100 --mem=200M run_batch_job,其中run_batch_job包含:

#!/bin/env bash
#SBATCH --ntasks=1  # Number of cores
#SBATCH --nodes=1  # All cores on one machine

srun my_program.out $SLURM_ARRAY_TASK_ID

对于单个线程,200M应该是足够的内存,但对于某些模拟,我得到错误:

slurmstepd: error: Exceeded step memory limit at some point.
slurmstepd: error: Exceeded job memory limit at some point.
srun: error: cluster-cn002: task 0: Out Of Memory
slurmstepd: error: Exceeded job memory limit at some point.

我是否为每千个线程分配了200M,或者我做错了什么?

编辑:我已尝试指定--cpus-per-task=1--mem-per-cpu=200M而不是--ntasks=1--nodes=1--mem=200M,结果相同。

1 个答案:

答案 0 :(得分:0)

您的提交是正确的,但200M可能会很低,具体取决于您使用的库或您阅读的文件。请求至少2G,因为几乎所有群集每个核心至少有2GB内存。