通信和互连会对多节点上的计算绑定应用程序产生任何影响吗?

Would communication and inter-connection have any impact on a computation bound application on multinode?

我有一个受计算限制的应用程序。我已经在多节点(4nodes、8nodes)上执行了它 我想知道节点之间的通信是否会对 运行 时间产生任何影响?如果是这样,那怎么可能?因为据我所知,受计算限制的应用程序仅取决于系统的计算能力。

此外,我可以将 CPU 系统的数量视为计算能力吗?

如有任何帮助,我们将不胜感激。

已更新:

为了查看应用程序是受内存限制还是受计算限制,我 运行 应用程序在 1 个节点上使用不同数量的内核。对于该应用程序 (NPB-LU),运行 时间随着内核数量的增加而线性减少。所以我发现这个应用程序可能是受计算限制的(我没有其他选择来解决这个问题)。

然后,我用一个模型预测了应用程序的 运行 时间,该模型考虑了不同连接级别(如套接字间、节点间)的延迟(在我的例子中是消息时间)。尽管应用程序似乎受计算限制,但通过不同延迟连接级别实现的预测时间存在一些差异。

n:网格大小,p:number 个内核,m(总计 Mops/s),f(Mop/s/core)

假设您有一匹正在喝水的马,比如说每分钟 1 升。

为了给马喝水,你有一个水井,你可以从那里取水。想象一下,您每分钟最多可以抽 1.5 升。

遇到这种情况,您的用水量是有限的。

结果是两匹马喝的水量相同:每匹每分钟 1 升。那么你的用水量就不再是有界而是有界了。

您的应用程序行为可能会因环境而异。为了确定您的应用程序发生了什么,我建议您分析您的应用程序。您有很多选择,例如 gprof、perf、PAPI 和许多其他选择,可以更好地观察您的应用程序行为。

然后您可以通过实验确定非常有趣的指标,例如每个时钟周期的指令数,这可以让您更好地了解应用的行为。