这个策略是并行计算还是分布式计算?初级产业部

Is this strategy a Parallel computing or Distributed Computing? MPI

我有一个计算适应度值的函数,比如说func()。在我的实现中,我使用 MPI 进行并行化。

MPI集群中有3台机器通过局域网连接。这些机器安装有 NFS 协议。这些机器之间不共享内存。

主 while 循环运行 500 次。

在此 while 循环中,我使用 MPI 并行化 9 个 func() 调用。意思是,在主 while 循环中调用了 9 次 func(),我以一种方式并行化了 3 个节点中的每个节点调用 3 个 func() 调用并将结果 return 传递给主节点。

MPI Workflow diagram - please refer to this diagram

What Happens Inside each node please refer this diagram

这在 while 循环中持续了 500 次。 (意思是,在每个下一个循环中,9 func() 次调用是并行的)

这个策略叫并行计算还是分布式计算?

考虑到定义,并行计算是将多个任务并行化,而分布式计算是将单个任务分布在具有共同目标的多个节点上。我感觉是并行计算。

但是,我这里是在不同的机器上执行,所以我应该认为它是分布式计算吗?

请解开这个疑惑。

如果用分布式计算解决一个单题,那么也是并行计算.您正在使用多台计算机(或处理器)来解决满足并行计算的简单定义。

Parallel computing uses two or more processors (cores, computers) in combination to solve a single problem.

但是,并不是所有的并行计算都是分布式的。您可以使用共享内存(使用 OpenMP 等编程模型)执行并行任务来解决问题,而您只使用一台计算机。

个人意见:可以使用MPI通过共享内存解决问题,也可以在单台计算机上解决(不使用共享内存),但它仍然是并行计算(广义上的分布式计算,应该是多台计算机来解决)使其成为分布式计算,即使 MPI 有自己的内存 space 并使用消息传递)

A distributed computer system consists of multiple software components that are on multiple computers, but run as a single system.

在您的情况下,它既是分布式的又是并行的。正如 Gilles Gouaillardet 在评论中指出的那样:

Your program is MPI, so it is both parallel (several tasks collaborate to achieve a goal) and distributed (each task has its own memory space, and communicate with other tasks via message - e.g. no shared memory)