0

我正在集群上运行 OpenFOAM 模拟。我使用了 Scotch 分解方法,我的decomposeParDict样子是这样的:

FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    object      decomposeParDict;
}
numberOfSubdomains 6;
method          scotch;

checkMeshdecomposePar没有问题地完成。我已通过以下方式为 slurm 分配了 6 个节点

srun -N6 -l sonicFoam

求解器运行平稳,没有任何错误。

问题是与我之前运行的非并行模拟相比,求解速度没有提高。我想监控 CPU 使用情况,看看我分配的所有 6 个节点是否都被类似地加载。该squeue --user=foobar命令返回jobNumber分配的节点列表 ( NODELIST(REASON)),如下所示:

foo,bar[061-065]

from sinfocommand 这些节点都在 indebugmain* PARTITIONs 中(我完全不知道这意味着什么!)。

这篇文章说您可以使用sacctorsstat命令来监控 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="..."是什么?sacctsstat

PS1。我已经按照官方说明进行了 OpenFOAM 编译。我没有做任何事情,尽管OpenMPI它是mpicc编译器。

PS2对于那些可能会在这里结束的人。也许我运行了错误的命令显然可以首先通过以下方式分配一些资源:

srun -N 1 --ntasks-per-node=7 --pty bash

其中 7 是您想要的核心数,而 bash 只是一个名称。然后运行求解器:

mpirun -np 7 sonicFoam -parallel -fileHandler uncollated

我还不确定。

4

2 回答 2

2

您可以使用

sacct --format='jobid,AveCPU,MinCPU,MinCPUTask,MinCPUNode'

检查是否所有 CPU 都处于活动状态。将AveCPU(作业中所有任务的平均 CPU 时间)与MinCPU(作业中所有任务的最小 CPU 时间)进行比较。如果它们相等,则所有 6 个任务(您请求 6 个节点,每个节点隐含 1 个任务)工作相同。如果它们不相等,甚至MinCPU为零,那么有些任务一直没有做任何事情。

但是在你的情况下,我相信你会观察到所有的任务都在努力工作,但他们都在做同样的事情。

除了-parallel@timdykes 关于标志的评论外,您还必须注意,启动 MPI 作业sun需要使用 Slurm 支持编译 OpenMPI。在您安装 OpenFOAM 期间,它安装了自己的 OpenMPI 版本,如果文件/usr/include/slurm/slurm.h/usr/include/slurm.h存在,则可能已编译 Slurm 支持。但最安全的可能是使用mpirun.

但要做到这一点,您必须首先使用sbatch或向 Slurm 请求分配salloc

于 2018-02-02T09:40:01.367 回答
1

您是否尝试过使用“-parallel”参数运行?所有在线 OpenFOAM 示例在运行并行作业时都使用此参数,其中一个示例是并行运行的官方指南

srun -N $NTASKS -l sonicFOAM -parallel

顺便说一句 - 我看到你自己构建了 openfoam,你检查过集群管理员是否为它提供了一个模块吗?您通常可以运行module avail以查看可用模块的列表,然后查看module load moduleName是否存在现有的 OpenFOAM 模块。这很有用,因为您可能相信它是用所有正确的选项构建的,并且会自动设置您的 $PATH 等。

于 2018-02-02T08:58:40.640 回答