【发布时间】:2023-07-04 18:20:02
【问题描述】:
我正在集群上运行 OpenFOAM 模拟。我用过the Scotch decomposition method,我的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]
来自sinfo 命令,这些节点都在debug 和main* PARTITIONs 中(我完全不知道这意味着什么!)。
This post 表示您可以使用sacct 或sstat 命令来监控 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 使用率?
- 如果不是,那么对于
sacct和/或sstat(或者可能是其他 slurm 命令)获取 CPU 使用率/负载的正确--format="..."s 是什么?
P.S.1. 我在the official instructions 之后关注了 OpenFOAM 编译。我没有对OpenMPI 做任何事情,但它是mpicc 编译器。
P.S.2 对于那些可能会在这里结束的人。也许我运行了错误的命令,显然可以通过以下方式分配一些资源:
srun -N 1 --ntasks-per-node=7 --pty bash
其中 7 是您想要的核心数,而 bash 只是一个名称。然后运行求解器:
mpirun -np 7 sonicFoam -parallel -fileHandler uncollated
不过我还不确定。
【问题讨论】:
-
如果您可以在模拟运行时通过 SSH 连接到计算节点,您只需登录并使用
top命令即可确定进程是否存在并正在运行。你也可以pstack <pid>查看它在哪里。 -
您能详细说明一下吗?如何获取节点的IP地址?
-
squeue列出作业运行时分配给作业的节点,然后您可以简单地通过主机名 SSH 到它们。 -
但是如何找到这些特定节点的主机名?
-
一个作业有 6 个节点,您可以尝试一个较小的作业或对所有 6 个节点重复操作。