1

在超级计算机上,您有一组节点,并且对于每个节点,您都有一定数量的 CPU。比如说,一个节点使用 20 个 CPU,而不是 2 个节点每个节点有 10 个 CPU,通常会更好吗?在这两种情况下,总共有 20 个 CPU。

一个节点上的 CPU 之间的通信时间是否比跨 2 个不同节点的 CPU 快很多?

4

1 回答 1

1

作为一般经验法则,最好在 1 个节点中使用 20 个 CPU,因为节点内通信比节点间通信快。

这通常取决于问题定义。如果您想使用共享内存编程模型(创建线程/任务等),那么具有 20 cpu 的 1 个节点会更好。您可以利用共享内存、缓存和更少的通信开销。但是,如果您的应用程序需要共享内存和分布式内存(进程分布在节点之间),那么使用多个节点可能是有益的。

但是,如果您的问题(共享/分布式)只需要单个节点的资源来解决它,那么作为一般规则,不要使用额外的节点,因为您不会从中获得任何好处。即使您的应用程序使用分布式内存范例,也请使用单节点,因为节点内通信非常快速且经过优化。

正如@Poshi的评论,更具体的答案是针对特定问题的。它需要了解问题并分析应用程序以提出特定的解决方案。

于 2020-06-26T12:05:26.657 回答