我想用不同的随机种子(我传递给我的程序)运行数千个相同的单线程模拟。其中一些已经失去记忆,但我不知道为什么。我将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
,结果相同。
答案 0 :(得分:0)
您的提交是正确的,但200M可能会很低,具体取决于您使用的库或您阅读的文件。请求至少2G,因为几乎所有群集每个核心至少有2GB内存。