TypechoJoeTheme
2023-10-24
问题有一个串行作业通过Slurm提交到计算节点计算,程序需要的内存量虽然没有超过计算节点的物理内存,但因为Slurm对作业分配的单个CPU核的内存进行了限制,导致程序进程因out-of-memory(OOM)被Slurm强制杀掉。我们通过以下程序来复现问题。该程序申请了一个1024*1024*1024*8字节大小(8GB)的双精度buffer数组,加上其它一些量的内存需求,该程序实际上需要>8GB的内存空间。program main
implicit none
integer,parameter :: NX = 1024
real*8,allocatable,dimension(:,:,:) :: buffer
integer :: i,j,k
allocate(buffer(NX,NX,NX))
buffer = 1.0d0
buffer = buffer + sqrt(buffer+3.0)
print*, buffer(1,1,1)
deallocate(buffer)
end运行对应的Slurm作业脚本如下#!/usr/bin/...