我正在集群上运行 OpenFOAM 模拟。我使用了 Scotch 分解方法,我的decomposeParDict
样子是这样的:
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object decomposeParDict;
}
numberOfSubdomains 6;
method scotch;
checkMesh
并decomposePar
没有问题地完成。我已通过以下方式为 slurm 分配了 6 个节点
srun -N6 -l sonicFoam
求解器运行平稳,没有任何错误。
问题是与我之前运行的非并行模拟相比,求解速度没有提高。我想监控 CPU 使用情况,看看我分配的所有 6 个节点是否都被类似地加载。该squeue --user=foobar
命令返回jobNumber
分配的节点列表 ( NODELIST(REASON)
),如下所示:
foo,bar[061-065]
from sinfo
command 这些节点都在 indebug
和main*
PARTITION
s 中(我完全不知道这意味着什么!)。
这篇文章说您可以使用sacct
orsstat
命令来监控 slurm 作业的 CPU 时间和内存使用情况。但是当我跑步时
sacct --format="CPUTime,MaxRSS"
它给了我:
CPUTime MaxRSS
---------- ----------
00:00:00
00:00:00
00:07:36
00:00:56
00:00:26
15:26:24
我无法理解。当我指定工作编号时
sacct --job=<jobNumber> --format="UserCPU"
退货是空的。所以我的问题是
- 我的模拟是在加载所有节点,还是在一个或两个节点上运行,其余的都是免费的?
- 我在运行正确的命令吗?如果是,这些数字是什么意思?它们如何代表每个节点的 CPU 使用率?
- 如果不是,那么和/或(或其他 slurm 命令)获取 CPU 使用率/负载的正确方法
--format="..."
是什么?sacct
sstat
PS1。我已经按照官方说明进行了 OpenFOAM 编译。我没有做任何事情,尽管OpenMPI
它是mpicc
编译器。
PS2对于那些可能会在这里结束的人。也许我运行了错误的命令显然可以首先通过以下方式分配一些资源:
srun -N 1 --ntasks-per-node=7 --pty bash
其中 7 是您想要的核心数,而 bash 只是一个名称。然后运行求解器:
mpirun -np 7 sonicFoam -parallel -fileHandler uncollated
我还不确定。