我想用不同的随机种子运行数千个相同的单线程模拟(我将其传递给我的程序)。其中一些已经耗尽内存,但我不知道为什么。我以sbatch --array=0-999%100 --mem=200M run_batch_job的身份调用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,结果相同。
发布于 2018-02-14 03:56:32
您的提交是正确的,但200M可能较低,这取决于您使用的库或您阅读的文件。请求至少2G,因为几乎所有集群的每个核心至少有2 2GB的内存。
https://stackoverflow.com/questions/48763851
复制相似问题