我在Bluehive中运行代码。代码有一些参数N.如果N很小,那么代码运行得很好。但是对于略大的N(例如N = 10),代码运行了几个小时,最后我收到以下错误消息:
slurmstepd: error: Exceeded step memory limit at some point.
我提交的批处理文件包含以下代码:
#!/bin/bash
#SBATCH -o log.%a.txt -t 3-01:01:00
#SBATCH --mem-per-cpu=1gb
#SBATCH -c 4
#SBATCH --gres=gpu:1
#SBATCH -J Ankani
#SBATCH -a 1-2
python run.py $SLURM_ARRAY_TASK_ID
我为代码分配了足够的内存。但仍然得到错误
"slurmstepd: error: Exceeded step memory limit at some point."
有人可以帮忙吗?
答案 0 :(得分:1)
但是,我会注意到此错误消息中“步骤内存限制”描述的内存限制不一定与您的进程的RSS相关。此限制由cgroup插件和内存cgroups
提供并强制执行不仅可以跟踪作业中的任务RSS,还可以跟踪文件缓存,mmap页面, 如果我不得不猜你是因为页面缓存而达到了内存限制。 在这种情况下,您可能只能忽略此错误 在这里达到极限可能只是触发了内存回收哪个 释放缓存页面(这不应该是致命错误)。
如果您想避免错误,那么您只需要写出数据 不希望它被缓存,那么你可以尝试使用posix_fadvise(2) 使用POSIX_FADV_DONTNEED提示您不是VM 打算再读你正在写的页面。