我有一个函数来计算适应度值,比如func()。在我的实现中,我使用MPI进行并行化。
MPI集群中有3台机器通过局域网连接。这些机器安装有NFS协议。内存不在这些机器之间共享。
主while循环运行500次。
在这个while循环中,我使用MPI并行化9个func()调用。这意味着,在main循环中调用9次func(),我并行化了三个节点中每个节点调用3个func()调用并将结果返回给主节点的方式。


这在while循环中继续了500次。(这意味着,在每个下一个循环中,同样有9个func()调用被并行化)
这种策略称为并行计算还是分布式计算?
考虑到定义,并行计算是并行中的多个任务并行化,而分布式计算则是在具有共同目标的多个节点上分配单个任务。我觉得这是并行计算。
但是,在这里,我在不同的机器上执行,所以我应该把它看作是分布式计算吗?
请澄清这个疑问。
发布于 2022-03-07 08:00:27
如果您使用分布式计算来解决单个问题,那么它也是并行计算。您正在使用多台计算机(或处理器)来解决这些问题,这满足了并行计算的简单定义。
并行计算结合使用两个或多个处理器(核心、计算机)来解决单个问题。
但是,并不是所有的并行计算都是分布式的。您可以使用共享内存(使用像OpenMP这样的编程模型)执行并行任务来解决问题,其中您只使用一台计算机。
个人观点:您可以通过使用共享内存或在一台计算机中(不使用共享内存)使用MPI来解决问题,但它仍然是并行计算(根据分布式计算的广义定义,应该有多台计算机使其成为分布式计算,即使MPI拥有自己的内存空间并使用消息传递)
分布式计算机系统由多台计算机上的多个软件组件组成,但作为一个系统运行。
在您的例子中,它既是分布式的,也是并行的。正如 Gouaillardet在评论中指出的那样:
您的程序是MPI,因此它是并行的(多个任务协作以实现一个目标)和分布式(每个任务都有自己的内存空间,并通过消息与其他任务进行通信,例如没有共享内存)。
https://stackoverflow.com/questions/71376925
复制相似问题