Netlogo HPC CPU 使用百分比增加

Netlogo HPC CPU Percentage Use Increase

我通过以下 代码 使用无头 NetLogo 将作业提交到 HPC 服务器:

#!/bin/bash
#$ -N r20p
#$ -q all.q
#$ -pe mpi 24
/home/abhishekb/netlogo/netlogo-5.1.0/netlogo-headless.sh \
    --model /home/abhishekb/models/corrected-rk4-20presults.nlogo \
    --experiment test \
    --table /home/abhishekb/csvresults/corrected-rk4-20presults.csv

下面是集群队列的快照,使用:

qstat -g c

我想知道我能否为我的模拟增加 CQLOAD 以及它也意味着什么。我在网上找不到详细的解释。

CPU 使用检查:

qhost -u abhishekb

当我 运行 我的 PC 上的行为 space 通过 gui 为任务分配高优先级时,它使用了将近 99% 的 CPU 这使得它 运行 快点。它使用了更大比例的 CPU 处理器。我希望在这里完成同样的事情。

编辑:

编辑 2;

所以您想通过赋予程序比所有其他进程更高的优先级来使程序 运行 在 linux 上更快?

在那种情况下,您必须修改称为程序 niceness 的东西。这通常是通过在您第一次启动程序时调用命令 nice 或在程序已经 运行ning 时调用命令 renice 来完成的。一个进程的 niceness 可以从 -20 到 19(含),其中值越低,进程的优先级越高。出于安全原因,如果您是超级用户 (root),您只能降低进程的友好度。

因此,如果您想使进程 运行 具有更高的优先级,那么从 bash 中执行

[abhishekb@hpc ~]$ start_process &
[abhishekb@hpc ~]$ jobs -x sudo renice -n -20 -p %+

或者只使用最后一个命令并将 %+ 替换为您要为其增加优先级的进程的 进程 ID

一个典型的 HPC 环境,设计为每个 CPU 核心 运行 只有一个 MPI 进程(或 OpenMP 线程),因此可以访问 100% 的 CPU 时间,这不能进一步增加。相反,在经典的 desktop/server 机器上,许多进程竞争 CPU 时间,并且确实可以通过使用 nice 设置适当的优先级来提高其中一个进程的性能。

CQLOAD 似乎是该计算队列的平均负载。如果您没有使用其中的所有 CPU 个核心,则它不是一个有用的指标。此外,即使是 运行 的每个核心平均负载也只是转化了此 HPC 集群上代码的效率。例如,每个核心 0.7 的值意味着代码花费 70% 的时间进行计算,而剩余的 30% 可能用于等待与其他计算节点通信(这也是必要的)。

最重要的是,提高 HPC 集群 CPU 使用百分比的唯一方法是优化代码。不过,通常情况下,人们更关心并行扩展(即求解时间如何随着 CPU 内核的数量而减少)而不是 CPU 使用百分比。

1。 CPU 负载百分比

我同意 关于尝试使用 linux 工作优先级/renice 来增加 CPU 百分比 - 它是

  • 几乎可以肯定不会工作

并且,(如您所见)

  • 你不太可能做到这一点,因为你在节点上没有超级用户权限(你甚至不太可能登录到工作节点 - 可能只有头节点)

模型的 CPU 使用 运行s 主要是代码结构的函数 - 如果它 运行s 在 100% CPU 本地它在 运行ning.

期间可能 运行 喜欢节点 上的那个

以下是对您问题中更具体部分的一些回答:

2。 CQLOAD

你问

CQLOAD (what does it mean too?)

这方面的文档很难找到,但是您 link to the spec of your cluster, which tells us that the scheduling engine for it is Sun's *Grid Engine". Man pages are here(您也可以在本地访问它们 - 特别是键入 man qstat

如果您搜索 qstat -g c,您将看到所描述的输出。特别是,第二列 (CQLOAD) 描述为:

OUTPUT FORMATS

...

an average of the normalized load average of all queue hosts. In order to reflect each hosts different signifi- cance the number of configured slots is used as a weight- ing factor when determining cluster queue load. Please note that only hosts with a np_load_value are considered for this value. When queue selection is applied only data about selected queues is considered in this formula. If the load value is not available at any of the hosts '- NA-' is printed instead of the value from the complex attribute definition.

这意味着 CQLOAD 指示队列中处理器的利用率。上面的输出屏幕截图显示 0.84,因此 all.q 中(使用中的)处理器的平均负载指标为 84%。这似乎并不太低。

3。预留节点数

,您说同事们抱怨您的流程使用不足 CPU。我不确定那是基于什么,但我想知道这里真正的问题是你为他们可以看到可以用更少的工作保留很多节点(即使只是很短的时间)。

您可能想尝试使用更少的节点(除非您的结果非常慢)- 这可以通过更改行 #$ -pe mpi 24 来实现 - 也许可以减少数字 24。您可以通过计算 1 个模型 运行 在您的计算机上花费的时间然后使用

来计算出您需要(大致)多少个节点
N = ((time to run 1 job) * number of runs in experiment) / (time you want the run to take)