使用linux“fork”创建多进程程序与MPI库中可用的函数之间的性能或其他方面是否存在差异? 或者,由于可以使用的功能,它在MPI中更容易实现吗?
答案 0 :(得分:6)
他们没有解决同样的问题。请注意并行编程与分布式内存并行编程之间的区别。
使用您提到的fork / join模型通常是在同一台物理计算机上进行并行编程。您通常不会将您的工作分发给其他连接的计算机(评论中的某些模型除外)。
MPI用于分布式内存并行编程。您可以使用一组计算机(甚至数十万个处理器)来解决问题,而不是使用单个处理器。虽然这些有时被认为是一台大型逻辑机器,但它们通常由许多处理器组成。 MPI函数用于简化分布式计算机上这些进程之间的通信,以避免在所有进程之间手动打开TCP套接字等操作。
所以除非你只在一台机器上运行你的MPI程序,否则它并不是真正的比较它们的性能的方法,这实际上并不是它的设计目的。是的,您可以在一台计算机上运行MPI,人们会一直为小型测试代码或小型项目执行此操作,但这不是最大的用例。