为什么请求比工作线程更多的节点将使MPI更快

时间:2013-01-26 22:00:21

标签: mpi

我正在使用一个MPI程序,该程序将大量样本空间平均分配到工作线程中并且并行完成工作。我使用以下脚本提交我的工作。

#!/bin/bash
#PBS -l nodes=NNODES
mpirun -np NPROC ./run >log

我在群集网页上发现每个节点有10个核心。我天真地假设我需要100个工作线程(NPROC),我只需要请求10个节点(NNODES)。但是,我发现当我增加NNODES时,程序运行的挂载时间不断减少。

我猜这是因为在为每个节点分配1而不是多个工作线程时,资源竞争较少。如果这是真的,我认为当NNODES == 100(NPROC)时,墙时间将被平衡,因为现在我们每个节点将有1个工作线程,如果我们有更多节点,它将不会进一步减少挂壁时间比请求的工作线程。

然而,我错了,因为进一步增加NNODES超过100(NPROC)几乎线性地进一步减少了时间。这真让我困惑,因为源代码实际上是从上面的脚本中读取NPROC并将样本分成它们,我无法理解为什么请求比工作线程更多的节点会使事情变得更快。

1 个答案:

答案 0 :(得分:0)

如果您的程序使用大量I / O,您可能会观察到一种副作用,即通过保留大量节点,您可以阻止其他作业运行,因此网络,文件系统等压力较小你的工作有更多的资源。但是如果你的工作是CPU限制的,那么这不适用。